openapi: 3.0.0 info: version: 1.0.0 title: Medusa Admin API license: name: MIT url: https://github.com/medusajs/medusa/blob/master/LICENSE servers: - url: http://localhost:9000 - url: https://api.medusa-commerce.com tags: - name: Apps Oauth description: | Some plugins may require to authenticate with third-party services and store authentication details, such as the authentication token. To do that, they can create an Oauth provider within the plugin that handles the authentication. The Apps Oauth API Routes allows admins to manage and generate token for an app using its oauth provider. - name: Auth description: | Authentication API Routes allow admin users to manage their session, such as login or log out. When an admin user is logged in, the cookie header is set indicating the admin's login session. externalDocs: description: How to implement user profiles url: https://docs.medusajs.com/modules/users/admin/manage-profile - name: Batch Jobs description: | A batch job is a task that is performed by the Medusa backend asynchronusly. For example, the Import Product feature is implemented using batch jobs. Batch Job API Routes allow admins to manage the batch jobs and their state. externalDocs: description: How to import products url: https://docs.medusajs.com/modules/products/admin/import-products - name: Currencies description: | A store can use unlimited currencies, and each region must be associated with at least one currency. Currencies are defined within the Medusa backend. Currency API Routes allow admins to list and update currencies. externalDocs: description: How to manage currencies url: https://docs.medusajs.com/modules/regions-and-currencies/admin/manage-currencies - name: Customer Groups description: | Customer Groups can be used to organize customers that share similar data or attributes into dedicated groups. This can be useful for different purposes such as setting a different price for a specific customer group. externalDocs: description: How to manage customer groups url: https://docs.medusajs.com/modules/customers/admin/manage-customer-groups - name: Customers description: | Customers can either be created when they register through the Store APIs, or created by the admin using the Admin APIs. externalDocs: description: How to manage customers url: https://docs.medusajs.com/modules/customers/admin/manage-customers - name: Discounts description: | Admins can create discounts with conditions and rules, providing them with advanced settings for variety of cases. The Discount API Routes can be used to manage discounts, their conditions, resources, and more. externalDocs: description: How to manage discounts url: https://docs.medusajs.com/modules/discounts/admin/manage-discounts - name: Draft Orders description: | A draft order is an order created manually by the admin. It allows admins to create orders without direct involvement from the customer. externalDocs: description: How to manage draft orders url: https://docs.medusajs.com/modules/orders/admin/manage-draft-orders - name: Gift Cards description: | Admins can create gift cards and send them directly to customers, specifying options like their balance, region, and more. These gift cards are different than the saleable gift cards in a store, which are created and managed through Product API Routes. externalDocs: description: How to manage gift cards url: https://docs.medusajs.com/modules/gift-cards/admin/manage-gift-cards#manage-custom-gift-cards - name: Inventory Items description: | Inventory items, provided by the [Inventory Module](https://docs.medusajs.com/modules/multiwarehouse/inventory-module), can be used to manage the inventory of saleable items in your store. externalDocs: description: How to manage inventory items url: https://docs.medusajs.com/modules/multiwarehouse/admin/manage-inventory-items - name: Invites description: | An admin can invite new users to manage their team. This would allow new users to authenticate as admins and perform admin functionalities. externalDocs: description: How to manage invites url: https://docs.medusajs.com/modules/users/admin/manage-invites - name: Notes description: | Notes are created by admins and can be associated with any resource. For example, an admin can add a note to an order for additional details or remarks. - name: Notifications description: | Notifications are sent to customers to inform them of new updates. For example, a notification can be sent to the customer when their order is place or its state is updated. The notification's type, such as an email or SMS, is determined by the notification provider installed on the Medusa backend. - name: Order Edits description: | An admin can edit an order to remove, add, or update an item's quantity. When an admin edits an order, they're stored as an `OrderEdit`. externalDocs: description: How to edit an order url: https://docs.medusajs.com/modules/orders/admin/edit-order - name: Orders description: | Orders are purchases made by customers, typically through a storefront using the Store API. Draft orders created by the admin are also transformed to an Order once the payment is captured. Managing orders include managing fulfillment, payment, claims, reservations, and more. externalDocs: description: How to manage orders url: https://docs.medusajs.com/modules/orders/admin/manage-orders - name: Payment Collections description: | A payment collection is useful for managing additional payments, such as for Order Edits, or installment payments. - name: Payments description: | A payment can be related to an order, swap, return, or more. It can be captured or refunded. - name: Price Lists description: | A price list are special prices applied to products based on a set of conditions, such as customer group. externalDocs: description: How to manage price lists url: https://docs.medusajs.com/modules/price-lists/admin/manage-price-lists - name: Product Categories description: | Products can be categoriezed into categories. A product can be added into more than one category. externalDocs: description: How to manage product categories url: https://docs.medusajs.com/modules/products/admin/manage-categories - name: Product Collections description: | A product collection is used to organize products for different purposes such as marketing or discount purposes. For example, you can create a Summer Collection. - name: Product Tags description: | Product tags are string values created when you create or update a product with a new tag. Products can have more than one tag, and products can share tags. This allows admins to associate products to similar tags that can be used to filter products. - name: Product Types description: | Product types are string values created when you create or update a product with a new type. Products can have one type, and products can share types. This allows admins to associate products with a type that can be used to filter products. - name: Product Variants description: | Product variants are the actual salable item in your store. Each variant is a combination of the different option values available on the product. Product variants can be managed through the Products API Routes. externalDocs: description: How to manage product variants url: https://docs.medusajs.com/modules/products/admin/manage-products#manage-product-variants - name: Products description: | Products are saleable items in a store. This also includes [saleable gift cards](https://docs.medusajs.com/modules/gift-cards/admin/manage-gift-cards#manage-gift-card-product) in a store. externalDocs: description: How to manage products url: https://docs.medusajs.com/modules/products/admin/manage-products - name: Publishable API Keys description: | Publishable API Keys can be used to scope Store API calls with an API key, determining what resources are retrieved when querying the API. For example, a publishable API key can be associated with one or more sales channels. When it is passed in the header of a request to the List Product store API Route, the sales channels are inferred from the key and only products associated with those sales channels are retrieved. Admins can manage publishable API keys and their associated resources. Currently, only Sales Channels are supported as a resource. externalDocs: description: How to manage publishable API keys url: https://docs.medusajs.com/development/publishable-api-keys/admin/manage-publishable-api-keys - name: Regions description: | Regions are different countries or geographical regions that the commerce store serves customers in. Admins can manage these regions, their providers, and more. externalDocs: description: How to manage regions url: https://docs.medusajs.com/modules/regions-and-currencies/admin/manage-regions - name: Reservations description: | Reservations, provided by the [Inventory Module](https://docs.medusajs.com/modules/multiwarehouse/inventory-module), are quantities of an item that are reserved, typically when an order is placed but not yet fulfilled. Reservations can be associated with any resources, but commonly with line items of an order. externalDocs: description: How to manage item allocations in orders url: https://docs.medusajs.com/modules/multiwarehouse/admin/manage-item-allocations-in-orders - name: Return Reasons description: | Return reasons are key-value pairs that are used to specify why an order return is being created. Admins can manage available return reasons, and they can be used by both admins and customers when creating a return. externalDocs: description: How to manage return reasons url: https://docs.medusajs.com/modules/orders/admin/manage-returns#manage-return-reasons - name: Returns description: | A return can be created by a customer or an admin to return items in an order. Admins can manage these returns and change their state. externalDocs: description: How to manage returns url: https://docs.medusajs.com/modules/orders/admin/manage-returns - name: Sales Channels description: | A sales channel indicates a channel where products can be sold in. For example, a webshop or a mobile app. Admins can manage sales channels and the products available in them. externalDocs: description: How to manage sales channels url: https://docs.medusajs.com/modules/sales-channels/admin/manage - name: Shipping Options description: | A shipping option is used to define the available shipping methods during checkout or when creating a return. Admins can create an unlimited number of shipping options, each associated with a shipping profile and fulfillment provider, among other resources. externalDocs: description: Shipping Option architecture url: https://docs.medusajs.com/modules/carts-and-checkout/shipping#shipping-option - name: Shipping Profiles description: | A shipping profile is used to group products that can be shipped in the same manner. They are created by the admin and they're not associated with a fulfillment provider. externalDocs: description: Shipping Profile architecture url: https://docs.medusajs.com/modules/carts-and-checkout/shipping#shipping-profile - name: Stock Locations description: | A stock location, provided by the [Stock Location module](https://docs.medusajs.com/modules/multiwarehouse/stock-location-module), indicates a physical address that stock-kept items, such as physical products, can be stored in. An admin can create and manage available stock locations. externalDocs: description: How to manage stock locations. url: https://docs.medusajs.com/modules/multiwarehouse/admin/manage-stock-locations - name: Store description: | A store indicates the general configurations and details about the commerce store. By default, there's only one store in the Medusa backend. Admins can manage the store and its details or configurations. - name: Swaps description: | A swap is created by a customer or an admin to exchange an item with a new one. Creating a swap implicitely includes creating a return for the item being exchanged. externalDocs: description: How to manage swaps url: https://docs.medusajs.com/modules/orders/admin/manage-swaps - name: Tax Rates description: | Each region has at least a default tax rate. Admins can create and manage additional tax rates that can be applied for certain conditions, such as for specific product types. externalDocs: description: How to manage tax rates url: https://docs.medusajs.com/modules/taxes/admin/manage-tax-rates - name: Uploads description: | The upload API Routes are used to upload any type of resources. For example, they can be used to upload CSV files that are used to import products into the store. externalDocs: description: How to upload CSV file when importing a product. url: https://docs.medusajs.com/modules/products/admin/import-products#1-upload-csv-file - name: Users description: | A store can have more than one user, each having the same privileges. Admins can manage users, their passwords, and more. externalDocs: description: How to manage users url: https://docs.medusajs.com/modules/users/admin/manage-users paths: /admin/apps: get: operationId: GetApps summary: List Applications description: Retrieve a list of applications registered in the Medusa backend. x-authenticated: true x-codegen: method: list x-codeSamples: - lang: Shell label: cURL source: | curl '{backend_url}/admin/apps' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Apps Oauth responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminAppsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/apps/authorizations: post: operationId: PostApps summary: Generate Token for App description: Use an app's Oauth provider to generate and store a new token for authentication. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostAppsReq' x-codegen: method: authorize x-codeSamples: - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/apps/authorizations' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "application_name": "example", "state": "ready", "code": "token" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Apps Oauth responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminAppsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/auth: get: operationId: GetAuth summary: Get Current User x-authenticated: true description: Get the currently logged in user's details. x-codegen: method: getSession x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.auth.getSession() .then(({ user }) => { console.log(user.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminGetSession } from "medusa-react" const Profile = () => { const { user, isLoading } = useAdminGetSession() return (
{isLoading && Loading...} {user && {user.email}}
) } export default Profile - lang: Shell label: cURL source: | curl '{backend_url}/admin/auth' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Auth responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminAuthRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostAuth summary: User Login x-authenticated: false description: Log a User in and includes the Cookie session in the response header. The cookie session can be used in subsequent requests to authorize the user to perform admin functionalities. When using Medusa's JS or Medusa React clients, the cookie is automatically attached to subsequent requests. requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostAuthReq' x-codegen: method: createSession x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) medusa.admin.auth.createSession({ email: "user@example.com", password: "supersecret" }) .then(({ user }) => { console.log(user.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminLogin } from "medusa-react" const Login = () => { const adminLogin = useAdminLogin() // ... const handleLogin = () => { adminLogin.mutate({ email: "user@example.com", password: "supersecret", }, { onSuccess: ({ user }) => { console.log(user) } }) } // ... } export default Login - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/auth' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com", "password": "supersecret" }' tags: - Auth responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminAuthRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/incorrect_credentials' '404': $ref: '#/components/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: DeleteAuth summary: User Logout x-authenticated: true description: Delete the current session for the logged in user. This will only work if you're using Cookie session for authentication. If the API token is still passed in the header, the user is still authorized to perform admin functionalities in other API Routes. x-codegen: method: deleteSession x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in medusa.admin.auth.deleteSession() - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteSession } from "medusa-react" const Logout = () => { const adminLogout = useAdminDeleteSession() // ... const handleLogout = () => { adminLogout.mutate(undefined, { onSuccess: () => { // user logged out. } }) } // ... } export default Logout - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/auth' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Auth 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' /admin/auth/token: post: operationId: PostToken summary: User Login (JWT) x-authenticated: false description: After a successful login, a JWT token is returned, which can be used to send authenticated requests. requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostAuthReq' x-codegen: method: getToken x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) medusa.admin.auth.getToken({ email: 'user@example.com', password: 'supersecret' }) .then(({ access_token }) => { console.log(access_token); }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/auth/token' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com", "password": "supersecret" }' tags: - Auth responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminBearerAuthRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/incorrect_credentials' '404': $ref: '#/components/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/batch-jobs: get: operationId: GetBatchJobs summary: List Batch Jobs description: Retrieve a list of Batch Jobs. The batch jobs can be filtered by fields such as `type` or `confirmed_at`. The batch jobs can also be sorted or paginated. x-authenticated: true parameters: - in: query name: limit description: Limit the number of batch jobs returned. schema: type: integer default: 10 - in: query name: offset description: The number of batch jobs to skip when retrieving the batch jobs. schema: type: integer default: 0 - in: query name: id style: form explode: false description: Filter by the batch ID schema: oneOf: - type: string description: batch job ID - type: array description: multiple batch job IDs items: type: string - in: query name: type style: form explode: false description: Filter by the batch type schema: type: array items: type: string - in: query name: confirmed_at style: form explode: false description: Filter by a confirmation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: pre_processed_at style: form explode: false description: Filter by a pre-processing date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: completed_at style: form explode: false description: Filter by a completion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: failed_at style: form explode: false description: Filter by a failure date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: canceled_at style: form explode: false description: Filter by a cancelation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: order description: A batch-job field to sort-order the retrieved batch jobs by. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned batch jobs. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned batch jobs. schema: type: string - in: query name: created_at style: form explode: false description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at style: form explode: false description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: AdminGetBatchParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.batchJobs.list() .then(({ batch_jobs, limit, offset, count }) => { console.log(batch_jobs.length) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminBatchJobs } from "medusa-react" const BatchJobs = () => { const { batch_jobs, limit, offset, count, isLoading } = useAdminBatchJobs() return (
{isLoading && Loading...} {batch_jobs?.length && ( )}
) } export default BatchJobs - lang: Shell label: cURL source: | curl '{backend_url}/admin/batch-jobs' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Batch Jobs responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminBatchJobListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostBatchJobs summary: Create a Batch Job description: Create a Batch Job to be executed asynchronously in the Medusa backend. If `dry_run` is set to `true`, the batch job will not be executed until the it is confirmed, which can be done using the Confirm Batch Job API Route. externalDocs: description: How to create a batch job url: https://docs.medusajs.com/development/batch-jobs/create#create-batch-job x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostBatchesReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.batchJobs.create({ type: 'product-export', context: {}, dry_run: false }).then((({ batch_job }) => { console.log(batch_job.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateBatchJob } from "medusa-react" const CreateBatchJob = () => { const createBatchJob = useAdminCreateBatchJob() // ... const handleCreateBatchJob = () => { createBatchJob.mutate({ type: "publish-products", context: {}, dry_run: true }, { onSuccess: ({ batch_job }) => { console.log(batch_job) } }) } // ... } export default CreateBatchJob - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/batch-jobs' \ -H 'Content-Type: application/json' \ -H 'x-medusa-access-token: {api_token}' \ --data-raw '{ "type": "product-export", "context": { } }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Batch Jobs responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminBatchJobRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/batch-jobs/{id}: get: operationId: GetBatchJobsBatchJob summary: Get a Batch Job description: Retrieve the details of a batch job. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Batch Job schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.batchJobs.retrieve(batchJobId) .then(({ batch_job }) => { console.log(batch_job.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminBatchJob } from "medusa-react" type Props = { batchJobId: string } const BatchJob = ({ batchJobId }: Props) => { const { batch_job, isLoading } = useAdminBatchJob(batchJobId) return (
{isLoading && Loading...} {batch_job && {batch_job.created_by}}
) } export default BatchJob - lang: Shell label: cURL source: | curl '{backend_url}/admin/batch-jobs/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Batch Jobs responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminBatchJobRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/batch-jobs/{id}/cancel: post: operationId: PostBatchJobsBatchJobCancel summary: Cancel a Batch Job description: Mark a batch job as canceled. When a batch job is canceled, the processing of the batch job doesn’t automatically stop. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the batch job. schema: type: string x-codegen: method: cancel x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.batchJobs.cancel(batchJobId) .then(({ batch_job }) => { console.log(batch_job.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelBatchJob } from "medusa-react" type Props = { batchJobId: string } const BatchJob = ({ batchJobId }: Props) => { const cancelBatchJob = useAdminCancelBatchJob(batchJobId) // ... const handleCancel = () => { cancelBatchJob.mutate(undefined, { onSuccess: ({ batch_job }) => { console.log(batch_job) } }) } // ... } export default BatchJob - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/batch-jobs/{id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Batch Jobs responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminBatchJobRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/batch-jobs/{id}/confirm: post: operationId: PostBatchJobsBatchJobConfirmProcessing summary: Confirm a Batch Job description: When a batch job is created, it is not executed automatically if `dry_run` is set to `true`. This API Route confirms that the batch job should be executed. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the batch job. schema: type: string x-codegen: method: confirm x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.batchJobs.confirm(batchJobId) .then(({ batch_job }) => { console.log(batch_job.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminConfirmBatchJob } from "medusa-react" type Props = { batchJobId: string } const BatchJob = ({ batchJobId }: Props) => { const confirmBatchJob = useAdminConfirmBatchJob(batchJobId) // ... const handleConfirm = () => { confirmBatchJob.mutate(undefined, { onSuccess: ({ batch_job }) => { console.log(batch_job) } }) } // ... } export default BatchJob - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/batch-jobs/{id}/confirm' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Batch Jobs responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminBatchJobRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/collections: get: operationId: GetCollections summary: List Collections description: Retrieve a list of Product Collection. The product collections can be filtered by fields such as `handle` or `title`. The collections can also be sorted or paginated. x-authenticated: true parameters: - in: query name: limit description: The number of collections to return. schema: type: integer default: 10 - in: query name: offset description: The number of collections to skip when retrieving the collections. schema: type: integer default: 0 - in: query name: title description: Filter collections by their title. schema: type: string - in: query name: handle description: Filter collections by their handle. schema: type: string - in: query name: q description: a term to search collections by their title or handle. schema: type: string - in: query name: order description: A field to sort-order the retrieved collections by. schema: type: string - in: query name: discount_condition_id description: Filter collections by a discount condition ID associated with them. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: AdminGetCollectionsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.collections.list() .then(({ collections, limit, offset, count }) => { console.log(collections.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCollections } from "medusa-react" const Collections = () => { const { collections, isLoading } = useAdminCollections() return (
{isLoading && Loading...} {collections && !collections.length && No Product Collections } {collections && collections.length > 0 && ( )}
) } export default Collections - lang: Shell label: cURL source: | curl '{backend_url}/admin/collections' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCollectionsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Collection description: Create a Product Collection. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostCollectionsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.collections.create({ title: "New Collection" }) .then(({ collection }) => { console.log(collection.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateCollection } from "medusa-react" const CreateCollection = () => { const createCollection = useAdminCreateCollection() // ... const handleCreate = (title: string) => { createCollection.mutate({ title }, { onSuccess: ({ collection }) => { console.log(collection.id) } }) } // ... } export default CreateCollection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/collections' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "New Collection" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/collections/{id}: get: operationId: GetCollectionsCollection summary: Get a Collection description: Retrieve a Product Collection by its ID. The products associated with it are expanded and returned as well. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product Collection schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.collections.retrieve(collectionId) .then(({ collection }) => { console.log(collection.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCollection } from "medusa-react" type Props = { collectionId: string } const Collection = ({ collectionId }: Props) => { const { collection, isLoading } = useAdminCollection(collectionId) return (
{isLoading && Loading...} {collection && {collection.title}}
) } export default Collection - lang: Shell label: cURL source: | curl '{backend_url}/admin/collections/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostCollectionsCollection summary: Update a Collection description: Update a Product Collection's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Collection. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostCollectionsCollectionReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.collections.update(collectionId, { title: "New Collection" }) .then(({ collection }) => { console.log(collection.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateCollection } from "medusa-react" type Props = { collectionId: string } const Collection = ({ collectionId }: Props) => { const updateCollection = useAdminUpdateCollection(collectionId) // ... const handleUpdate = (title: string) => { updateCollection.mutate({ title }, { onSuccess: ({ collection }) => { console.log(collection.id) } }) } // ... } export default Collection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/collections/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "New Collection" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteCollectionsCollection summary: Delete a Collection description: Delete a Product Collection. This does not delete associated products. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Collection. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.collections.delete(collectionId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteCollection } from "medusa-react" type Props = { collectionId: string } const Collection = ({ collectionId }: Props) => { const deleteCollection = useAdminDeleteCollection(collectionId) // ... const handleDelete = (title: string) => { deleteCollection.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default Collection - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/collections/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCollectionsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/collections/{id}/products/batch: post: operationId: PostProductsToCollection summary: Add Products to Collection description: Add products to a product collection. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the product collection. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductsToCollectionReq' x-codegen: method: addProducts x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.collections.addProducts(collectionId, { product_ids: [ productId1, productId2 ] }) .then(({ collection }) => { console.log(collection.products) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddProductsToCollection } from "medusa-react" type Props = { collectionId: string } const Collection = ({ collectionId }: Props) => { const addProducts = useAdminAddProductsToCollection(collectionId) // ... const handleAddProducts = (productIds: string[]) => { addProducts.mutate({ product_ids: productIds }, { onSuccess: ({ collection }) => { console.log(collection.products) } }) } // ... } export default Collection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/collections/{id}/products/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_ids": [ "prod_01G1G5V2MBA328390B5AXJ610F" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteProductsFromCollection summary: Remove Products from Collection description: Remove a list of products from a collection. This would not delete the product, only the association between the product and the collection. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product Collection. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteProductsFromCollectionReq' x-codegen: method: removeProducts x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.collections.removeProducts(collectionId, { product_ids: [ productId1, productId2 ] }) .then(({ id, object, removed_products }) => { console.log(removed_products) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRemoveProductsFromCollection } from "medusa-react" type Props = { collectionId: string } const Collection = ({ collectionId }: Props) => { const removeProducts = useAdminRemoveProductsFromCollection(collectionId) // ... const handleRemoveProducts = (productIds: string[]) => { removeProducts.mutate({ product_ids: productIds }, { onSuccess: ({ id, object, removed_products }) => { console.log(removed_products) } }) } // ... } export default Collection - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/collections/{id}/products/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_ids": [ "prod_01G1G5V2MBA328390B5AXJ610F" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDeleteProductsFromCollectionRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: get: operationId: GetCurrencies summary: List Currency description: Retrieve a list of currencies. The currencies can be filtered by fields such as `code`. The currencies can also be sorted or paginated. x-authenticated: true parameters: - in: query name: code description: filter by currency code. schema: type: string - in: query name: includes_tax description: filter currencies by whether they include taxes or not. schema: type: boolean x-featureFlag: tax_inclusive_pricing - in: query name: order description: A field to sort order the retrieved currencies by. schema: type: string - in: query name: q description: Term used to search currencies' name and code. schema: type: string - in: query name: offset description: The number of currencies to skip when retrieving the currencies. schema: type: number default: '0' - in: query name: limit description: The number of currencies to return. schema: type: number default: '20' x-codegen: method: list queryParams: AdminGetCurrenciesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.currencies.list() .then(({ currencies, count, offset, limit }) => { console.log(currencies.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCurrencies } from "medusa-react" const Currencies = () => { const { currencies, isLoading } = useAdminCurrencies() return (
{isLoading && Loading...} {currencies && !currencies.length && ( No Currencies )} {currencies && currencies.length > 0 && ( )}
) } export default Currencies - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/currencies' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Currencies responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCurrenciesListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}: post: operationId: PostCurrenciesCurrency summary: Update a Currency description: Update a Currency's details. x-authenticated: true parameters: - in: path name: code required: true description: The code of the Currency. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostCurrenciesCurrencyReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.currencies.update(code, { includes_tax: true }) .then(({ currency }) => { console.log(currency.code); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateCurrency } from "medusa-react" type Props = { currencyCode: string } const Currency = ({ currencyCode }: Props) => { const updateCurrency = useAdminUpdateCurrency(currencyCode) // ... const handleUpdate = (includes_tax: boolean) => { updateCurrency.mutate({ includes_tax, }, { onSuccess: ({ currency }) => { console.log(currency) } }) } // ... } export default Currency - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/currencies/{code}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "includes_tax": true }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Currencies responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCurrenciesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 `name` or `id. The customer groups can also be sorted or paginated. x-authenticated: true parameters: - in: query name: q description: term to search customer groups by name. schema: type: string - in: query name: offset description: The number of customer groups to skip when retrieving the customer groups. schema: type: integer default: 0 - in: query name: order description: A field to sort order the retrieved customer groups by. schema: type: string - in: query name: discount_condition_id description: Filter by discount condition ID. schema: type: string - in: query name: id style: form explode: false description: Filter by the customer group ID schema: oneOf: - type: string description: customer group ID - type: array description: an array of customer group IDs items: type: string - type: object properties: lt: type: string description: filter by IDs less than this ID gt: type: string description: filter by IDs greater than this ID lte: type: string description: filter by IDs less than or equal to this ID gte: type: string description: filter by IDs greater than or equal to this ID - in: query name: name style: form explode: false description: Filter by the customer group name schema: type: array description: an array of customer group names items: type: string description: customer group name - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: limit description: The number of customer groups to return. schema: type: integer default: 10 - in: query name: expand description: Comma-separated relations that should be expanded in the returned customer groups. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned customer groups. schema: type: string x-codegen: method: list queryParams: AdminGetCustomerGroupsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customerGroups.list() .then(({ customer_groups, limit, offset, count }) => { console.log(customer_groups.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCustomerGroups } from "medusa-react" const CustomerGroups = () => { const { customer_groups, isLoading, } = useAdminCustomerGroups() return (
{isLoading && Loading...} {customer_groups && !customer_groups.length && ( No Customer Groups )} {customer_groups && customer_groups.length > 0 && ( )}
) } export default CustomerGroups - lang: Shell label: cURL source: | curl '{backend_url}/admin/customer-groups' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customer Groups responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomerGroupsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Customer Group description: Create a Customer Group. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostCustomerGroupsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customerGroups.create({ name: "VIP" }) .then(({ customer_group }) => { console.log(customer_group.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateCustomerGroup } from "medusa-react" const CreateCustomerGroup = () => { const createCustomerGroup = useAdminCreateCustomerGroup() // ... const handleCreate = (name: string) => { createCustomerGroup.mutate({ name, }) } // ... } export default CreateCustomerGroup - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/customer-groups' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "VIP" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customer Groups responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomerGroupsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}: get: operationId: GetCustomerGroupsGroup 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: - in: path name: id required: true description: The ID of the Customer Group. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned customer group. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned customer group. schema: type: string x-codegen: method: retrieve queryParams: AdminGetCustomerGroupsGroupParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customerGroups.retrieve(customerGroupId) .then(({ customer_group }) => { console.log(customer_group.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCustomerGroup } from "medusa-react" type Props = { customerGroupId: string } const CustomerGroup = ({ customerGroupId }: Props) => { const { customer_group, isLoading } = useAdminCustomerGroup( customerGroupId ) return (
{isLoading && Loading...} {customer_group && {customer_group.name}}
) } export default CustomerGroup - lang: Shell label: cURL source: | curl '{backend_url}/admin/customer-groups/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customer Groups responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomerGroupsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostCustomerGroupsGroup summary: Update a Customer Group description: Update a Customer Group's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the customer group. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostCustomerGroupsGroupReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customerGroups.update(customerGroupId, { name: "VIP" }) .then(({ customer_group }) => { console.log(customer_group.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateCustomerGroup } from "medusa-react" type Props = { customerGroupId: string } const CustomerGroup = ({ customerGroupId }: Props) => { const updateCustomerGroup = useAdminUpdateCustomerGroup( customerGroupId ) // .. const handleUpdate = (name: string) => { updateCustomerGroup.mutate({ name, }) } // ... } export default CustomerGroup - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/customer-groups/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "VIP" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customer Groups responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomerGroupsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteCustomerGroupsCustomerGroup summary: Delete a Customer Group description: Delete a customer group. This doesn't delete the customers associated with the customer group. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Customer Group schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customerGroups.delete(customerGroupId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteCustomerGroup } from "medusa-react" type Props = { customerGroupId: string } const CustomerGroup = ({ customerGroupId }: Props) => { const deleteCustomerGroup = useAdminDeleteCustomerGroup( customerGroupId ) // ... const handleDeleteCustomerGroup = () => { deleteCustomerGroup.mutate() } // ... } export default CustomerGroup - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/customer-groups/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customer Groups responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomerGroupsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/customers: get: operationId: GetCustomerGroupsGroupCustomers summary: List Customers description: Retrieve a list of customers in a customer group. The customers can be filtered by the `q` field. The customers can also be paginated. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the customer group. schema: type: string - in: query name: limit description: The number of customers to return. schema: type: integer default: 50 - in: query name: offset description: The number of customers to skip when retrieving the customers. schema: type: integer default: 0 - in: query name: expand description: Comma-separated relations that should be expanded in the returned customers. schema: type: string - in: query name: q description: a term to search customers by email, first_name, and last_name. schema: type: string x-codegen: method: listCustomers queryParams: AdminGetGroupsGroupCustomersParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customerGroups.listCustomers(customerGroupId) .then(({ customers }) => { console.log(customers.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCustomerGroupCustomers } from "medusa-react" type Props = { customerGroupId: string } const CustomerGroup = ({ customerGroupId }: Props) => { const { customers, isLoading, } = useAdminCustomerGroupCustomers( customerGroupId ) return (
{isLoading && Loading...} {customers && !customers.length && ( No customers )} {customers && customers.length > 0 && ( )}
) } export default CustomerGroup - lang: Shell label: cURL source: | curl '{backend_url}/admin/customer-groups/{id}/customers' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customer Groups responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomersListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/customers/batch: post: operationId: PostCustomerGroupsGroupCustomersBatch summary: Add Customers to Group description: Add a list of customers to a customer group. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the customer group. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostCustomerGroupsGroupCustomersBatchReq' x-codegen: method: addCustomers x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customerGroups.addCustomers(customerGroupId, { customer_ids: [ { id: customerId } ] }) .then(({ customer_group }) => { console.log(customer_group.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddCustomersToCustomerGroup, } from "medusa-react" type Props = { customerGroupId: string } const CustomerGroup = ({ customerGroupId }: Props) => { const addCustomers = useAdminAddCustomersToCustomerGroup( customerGroupId ) // ... const handleAddCustomers= (customerId: string) => { addCustomers.mutate({ customer_ids: [ { id: customerId, }, ], }) } // ... } export default CustomerGroup - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/customer-groups/{id}/customers/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "customer_ids": [ { "id": "cus_01G2Q4BS9GAHDBMDEN4ZQZCJB2" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customer Groups responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomerGroupsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteCustomerGroupsGroupCustomerBatch summary: Remove Customers from Group description: Remove a list of customers from a customer group. This doesn't delete the customer, only the association between the customer and the customer group. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the customer group. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteCustomerGroupsGroupCustomerBatchReq' x-codegen: method: removeCustomers x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customerGroups.removeCustomers(customerGroupId, { customer_ids: [ { id: customerId } ] }) .then(({ customer_group }) => { console.log(customer_group.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRemoveCustomersFromCustomerGroup, } from "medusa-react" type Props = { customerGroupId: string } const CustomerGroup = ({ customerGroupId }: Props) => { const removeCustomers = useAdminRemoveCustomersFromCustomerGroup( customerGroupId ) // ... const handleRemoveCustomer = (customerId: string) => { removeCustomers.mutate({ customer_ids: [ { id: customerId, }, ], }) } // ... } export default CustomerGroup - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/customer-groups/{id}/customers/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "customer_ids": [ { "id": "cus_01G2Q4BS9GAHDBMDEN4ZQZCJB2" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customer Groups responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomerGroupsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/customers: get: operationId: GetCustomers summary: List Customers description: Retrieve a list of Customers. The customers can be filtered by fields such as `q` or `groups`. The customers can also be paginated. x-authenticated: true parameters: - in: query name: limit description: The number of customers to return. schema: type: integer default: 50 - in: query name: offset description: The number of customers to skip when retrieving the customers. schema: type: integer default: 0 - in: query name: expand description: Comma-separated relations that should be expanded in the returned customers. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned customers. schema: type: string - in: query name: q description: term to search customers' email, first_name, and last_name fields. schema: type: string - in: query name: has_account description: Filter customers by whether they have an account. schema: type: boolean - in: query name: order description: A field to sort-order the retrieved customers by. schema: type: string - in: query name: groups style: form explode: false description: Filter by customer group IDs. schema: type: array items: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: AdminGetCustomersParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customers.list() .then(({ customers, limit, offset, count }) => { console.log(customers.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCustomers } from "medusa-react" const Customers = () => { const { customers, isLoading } = useAdminCustomers() return (
{isLoading && Loading...} {customers && !customers.length && ( No customers )} {customers && customers.length > 0 && ( )}
) } export default Customers - lang: Shell label: cURL source: | curl '{backend_url}/admin/customers' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomersListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Customer description: Create a customer as an admin. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostCustomersReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customers.create({ email: "user@example.com", first_name: "Caterina", last_name: "Yost", password: "supersecret" }) .then(({ customer }) => { console.log(customer.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateCustomer } from "medusa-react" type CustomerData = { first_name: string last_name: string email: string password: string } const CreateCustomer = () => { const createCustomer = useAdminCreateCustomer() // ... const handleCreate = (customerData: CustomerData) => { createCustomer.mutate(customerData, { onSuccess: ({ customer }) => { console.log(customer.id) } }) } // ... } export default CreateCustomer - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/customers' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com", "first_name": "Caterina", "last_name": "Yost", "password": "supersecret" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/customers/{id}: get: operationId: GetCustomersCustomer summary: Get a Customer description: Retrieve the details of a customer. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Customer. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned customer. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned customer. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customers.retrieve(customerId) .then(({ customer }) => { console.log(customer.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCustomer } from "medusa-react" type Props = { customerId: string } const Customer = ({ customerId }: Props) => { const { customer, isLoading } = useAdminCustomer( customerId ) return (
{isLoading && Loading...} {customer && {customer.first_name}}
) } export default Customer - lang: Shell label: cURL source: | curl '{backend_url}/admin/customers/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostCustomersCustomer summary: Update a Customer description: Update a Customer's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Customer. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned customer. schema: type: string - in: query name: fields description: Comma-separated fields that should be retrieved in the returned customer. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostCustomersCustomerReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.customers.update(customerId, { first_name: "Dolly" }) .then(({ customer }) => { console.log(customer.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateCustomer } from "medusa-react" type CustomerData = { first_name: string last_name: string email: string password: string } type Props = { customerId: string } const Customer = ({ customerId }: Props) => { const updateCustomer = useAdminUpdateCustomer(customerId) // ... const handleUpdate = (customerData: CustomerData) => { updateCustomer.mutate(customerData) } // ... } export default Customer - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/customers/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "first_name": "Dolly" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminCustomersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts: get: operationId: GetDiscounts summary: List Discounts x-authenticated: true description: Retrieve a list of Discounts. The discounts can be filtered by fields such as `rule` or `is_dynamic`. The discounts can also be paginated. parameters: - in: query name: q description: term to search discounts' code field. schema: type: string - in: query name: rule description: Filter discounts by rule fields. schema: type: object properties: type: type: string enum: - fixed - percentage - free_shipping description: Filter discounts by type. allocation: type: string enum: - total - item description: Filter discounts by allocation type. - in: query name: is_dynamic description: Filter discounts by whether they're dynamic or not. schema: type: boolean - in: query name: is_disabled description: Filter discounts by whether they're disabled or not. schema: type: boolean - in: query name: limit description: The number of discounts to return schema: type: number default: '20' - in: query name: offset description: The number of discounts to skip when retrieving the discounts. schema: type: number default: '0' - in: query name: expand description: Comma-separated relations that should be expanded in each returned discount. schema: type: string - in: query name: order description: A discount field to sort-order the retrieved discounts by. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: AdminGetDiscountsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.list() .then(({ discounts, limit, offset, count }) => { console.log(discounts.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDiscounts } from "medusa-react" const Discounts = () => { const { discounts, isLoading } = useAdminDiscounts() return (
{isLoading && Loading...} {discounts && !discounts.length && ( No customers )} {discounts && discounts.length > 0 && ( )}
) } export default Discounts - lang: Shell label: cURL source: | curl '{backend_url}/admin/discounts' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostDiscounts summary: Create a Discount x-authenticated: true description: Create a Discount with a given set of rules that defines how the Discount is applied. parameters: - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be retrieved in the returned discount. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDiscountsReq' x-codegen: method: create queryParams: AdminPostDiscountsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" import { AllocationType, DiscountRuleType } from "@medusajs/medusa" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.create({ code: "TEST", rule: { type: DiscountRuleType.FIXED, value: 10, allocation: AllocationType.ITEM }, regions: ["reg_XXXXXXXX"], is_dynamic: false, is_disabled: false }) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateDiscount, } from "medusa-react" import { AllocationType, DiscountRuleType, } from "@medusajs/medusa" const CreateDiscount = () => { const createDiscount = useAdminCreateDiscount() // ... const handleCreate = ( currencyCode: string, regionId: string ) => { // ... createDiscount.mutate({ code: currencyCode, rule: { type: DiscountRuleType.FIXED, value: 10, allocation: AllocationType.ITEM, }, regions: [ regionId, ], is_dynamic: false, is_disabled: false, }) } // ... } export default CreateDiscount - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/discounts' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "code": "TEST", "rule": { "type": "fixed", "value": 10, "allocation": "item" }, "regions": ["reg_XXXXXXXX"] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts/code/{code}: get: operationId: GetDiscountsDiscountCode summary: Get Discount by Code description: Retrieve a Discount's details by its discount code x-authenticated: true parameters: - in: path name: code required: true description: The code of the Discount schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned discount. schema: type: string x-codegen: method: retrieveByCode queryParams: AdminGetDiscountsDiscountCodeParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.retrieveByCode(code) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminGetDiscountByCode } from "medusa-react" type Props = { discountCode: string } const Discount = ({ discountCode }: Props) => { const { discount, isLoading } = useAdminGetDiscountByCode( discountCode ) return (
{isLoading && Loading...} {discount && {discount.code}}
) } export default Discount - lang: Shell label: cURL source: | curl '{backend_url}/admin/discounts/code/{code}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts/{discount_id}/conditions: post: operationId: PostDiscountsDiscountConditions summary: Create a Condition description: Create a Discount Condition. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided, based on the type of discount condition. For example, if the discount condition's type is `products`, the `products` field should be provided in the request body. x-authenticated: true parameters: - in: path name: discount_id required: true description: The ID of the discount. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned discount. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDiscountsDiscountConditions' x-codegen: method: createCondition queryParams: AdminPostDiscountsDiscountConditionsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" import { DiscountConditionOperator } from "@medusajs/medusa" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.createCondition(discountId, { operator: DiscountConditionOperator.IN, products: [productId] }) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { DiscountConditionOperator } from "@medusajs/medusa" import { useAdminDiscountCreateCondition } from "medusa-react" type Props = { discountId: string } const Discount = ({ discountId }: Props) => { const createCondition = useAdminDiscountCreateCondition(discountId) // ... const handleCreateCondition = ( operator: DiscountConditionOperator, products: string[] ) => { createCondition.mutate({ operator, products }, { onSuccess: ({ discount }) => { console.log(discount.id) } }) } // ... } export default Discount - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/discounts/{id}/conditions' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "operator": "in" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts/{discount_id}/conditions/{condition_id}: get: operationId: GetDiscountsDiscountConditionsCondition summary: Get a Condition description: Retrieve a Discount Condition's details. x-authenticated: true parameters: - in: path name: discount_id required: true description: The ID of the Discount. schema: type: string - in: path name: condition_id required: true description: The ID of the Discount Condition. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount condition. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned discount condition. schema: type: string x-codegen: method: getCondition queryParams: AdminGetDiscountsDiscountConditionsConditionParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.getCondition(discountId, conditionId) .then(({ discount_condition }) => { console.log(discount_condition.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminGetDiscountCondition } from "medusa-react" type Props = { discountId: string discountConditionId: string } const DiscountCondition = ({ discountId, discountConditionId }: Props) => { const { discount_condition, isLoading } = useAdminGetDiscountCondition( discountId, discountConditionId ) return (
{isLoading && Loading...} {discount_condition && ( {discount_condition.type} )}
) } export default DiscountCondition - lang: Shell label: cURL source: | curl '{backend_url}/admin/discounts/{id}/conditions/{condition_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountConditionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostDiscountsDiscountConditionsCondition summary: Update a Condition description: Update a Discount Condition. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided, based on the type of discount condition. For example, if the discount condition's type is `products`, the `products` field should be provided in the request body. x-authenticated: true parameters: - in: path name: discount_id required: true description: The ID of the Discount. schema: type: string - in: path name: condition_id required: true description: The ID of the Discount Condition. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned discount. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDiscountsDiscountConditionsCondition' x-codegen: method: updateCondition queryParams: AdminPostDiscountsDiscountConditionsConditionParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.updateCondition(discountId, conditionId, { products: [ productId ] }) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDiscountUpdateCondition } from "medusa-react" type Props = { discountId: string conditionId: string } const DiscountCondition = ({ discountId, conditionId }: Props) => { const update = useAdminDiscountUpdateCondition( discountId, conditionId ) // ... const handleUpdate = ( products: string[] ) => { update.mutate({ products }, { onSuccess: ({ discount }) => { console.log(discount.id) } }) } // ... } export default DiscountCondition - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/discounts/{id}/conditions/{condition}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "products": [ "prod_01G1G5V2MBA328390B5AXJ610F" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteDiscountsDiscountConditionsCondition summary: Delete a Condition description: Delete a Discount Condition. This does not delete resources associated to the discount condition. x-authenticated: true parameters: - in: path name: discount_id required: true description: The ID of the Discount schema: type: string - in: path name: condition_id required: true description: The ID of the Discount Condition schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned discount. schema: type: string x-codegen: method: deleteCondition queryParams: AdminDeleteDiscountsDiscountConditionsConditionParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.deleteCondition(discountId, conditionId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDiscountRemoveCondition } from "medusa-react" type Props = { discountId: string } const Discount = ({ discountId }: Props) => { const deleteCondition = useAdminDiscountRemoveCondition( discountId ) // ... const handleDelete = ( conditionId: string ) => { deleteCondition.mutate(conditionId, { onSuccess: ({ id, object, deleted }) => { console.log(deleted) } }) } // ... } export default Discount - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/discounts/{id}/conditions/{condition_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountConditionsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts/{discount_id}/conditions/{condition_id}/batch: post: operationId: PostDiscountsDiscountConditionsConditionBatch summary: Add Batch Resources description: Add a batch of resources to a discount condition. The type of resource depends on the type of discount condition. For example, if the discount condition's type is `products`, the resources being added should be products. x-authenticated: true parameters: - in: path name: discount_id required: true description: The ID of the discount the condition belongs to. schema: type: string - in: path name: condition_id required: true description: The ID of the discount condition on which to add the item. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned discount. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDiscountsDiscountConditionsConditionBatchReq' x-codegen: method: addConditionResourceBatch queryParams: AdminPostDiscountsDiscountConditionsConditionBatchParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.addConditionResourceBatch(discountId, conditionId, { resources: [{ id: itemId }] }) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddDiscountConditionResourceBatch } from "medusa-react" type Props = { discountId: string conditionId: string } const DiscountCondition = ({ discountId, conditionId }: Props) => { const addConditionResources = useAdminAddDiscountConditionResourceBatch( discountId, conditionId ) // ... const handleAdd = (itemId: string) => { addConditionResources.mutate({ resources: [ { id: itemId } ] }, { onSuccess: ({ discount }) => { console.log(discount.id) } }) } // ... } export default DiscountCondition - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/discounts/{id}/conditions/{condition_id}/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "resources": [{ "id": "item_id" }] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteDiscountsDiscountConditionsConditionBatch summary: Remove Batch Resources description: Remove a batch of resources from a discount condition. This will only remove the association between the resource and the discount condition, not the resource itself. x-authenticated: true parameters: - in: path name: discount_id required: true description: The ID of the discount. schema: type: string - in: path name: condition_id required: true description: The ID of the condition to remove the resources from. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned discount. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteDiscountsDiscountConditionsConditionBatchReq' x-codegen: method: deleteConditionResourceBatch x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.deleteConditionResourceBatch(discountId, conditionId, { resources: [{ id: itemId }] }) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteDiscountConditionResourceBatch } from "medusa-react" type Props = { discountId: string conditionId: string } const DiscountCondition = ({ discountId, conditionId }: Props) => { const deleteConditionResource = useAdminDeleteDiscountConditionResourceBatch( discountId, conditionId, ) // ... const handleDelete = (itemId: string) => { deleteConditionResource.mutate({ resources: [ { id: itemId } ] }, { onSuccess: ({ discount }) => { console.log(discount.id) } }) } // ... } export default DiscountCondition - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/discounts/{id}/conditions/{condition_id}/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "resources": [{ "id": "item_id" }] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts/{id}: get: operationId: GetDiscountsDiscount summary: Get a Discount description: Retrieve a Discount. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Discount schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned discount. schema: type: string x-codegen: method: retrieve queryParams: AdminGetDiscountParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.retrieve(discountId) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDiscount } from "medusa-react" type Props = { discountId: string } const Discount = ({ discountId }: Props) => { const { discount, isLoading } = useAdminDiscount( discountId ) return (
{isLoading && Loading...} {discount && {discount.code}}
) } export default Discount - lang: Shell label: cURL source: | curl '{backend_url}/admin/discounts/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostDiscountsDiscount summary: Update a Discount description: Update a Discount with a given set of rules that define how the Discount is applied. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Discount. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned discount. schema: type: string - in: query name: fields description: Comma-separated fields that should be retrieved in the returned discount. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDiscountsDiscountReq' x-codegen: method: update queryParams: AdminPostDiscountsDiscountParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.update(discountId, { code: "TEST" }) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateDiscount } from "medusa-react" type Props = { discountId: string } const Discount = ({ discountId }: Props) => { const updateDiscount = useAdminUpdateDiscount(discountId) // ... const handleUpdate = (isDisabled: boolean) => { updateDiscount.mutate({ is_disabled: isDisabled, }) } // ... } export default Discount - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/discounts/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "code": "TEST" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteDiscountsDiscount summary: Delete a Discount description: Delete a Discount. Deleting the discount will make it unavailable for customers to use. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Discount schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.delete(discountId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteDiscount } from "medusa-react" const Discount = () => { const deleteDiscount = useAdminDeleteDiscount(discount_id) // ... const handleDelete = () => { deleteDiscount.mutate() } // ... } export default Discount - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/discounts/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts/{id}/dynamic-codes: post: operationId: PostDiscountsDiscountDynamicCodes summary: Create a Dynamic Code description: Create a dynamic unique code that can map to a parent Discount. This is useful if you want to automatically generate codes with the same rules and conditions. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Discount to create the dynamic code for." schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDiscountsDiscountDynamicCodesReq' x-codegen: method: createDynamicCode x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.createDynamicCode(discountId, { code: "TEST", usage_limit: 1 }) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateDynamicDiscountCode } from "medusa-react" type Props = { discountId: string } const Discount = ({ discountId }: Props) => { const createDynamicDiscount = useAdminCreateDynamicDiscountCode(discountId) // ... const handleCreate = ( code: string, usageLimit: number ) => { createDynamicDiscount.mutate({ code, usage_limit: usageLimit }, { onSuccess: ({ discount }) => { console.log(discount.is_dynamic) } }) } // ... } export default Discount - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/discounts/{id}/dynamic-codes' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "code": "TEST" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts/{id}/dynamic-codes/{code}: delete: operationId: DeleteDiscountsDiscountDynamicCodesCode summary: Delete a Dynamic Code description: Delete a dynamic code from a Discount. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Discount schema: type: string - in: path name: code required: true description: The dynamic code to delete schema: type: string x-codegen: method: deleteDynamicCode x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.deleteDynamicCode(discountId, code) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteDynamicDiscountCode } from "medusa-react" type Props = { discountId: string } const Discount = ({ discountId }: Props) => { const deleteDynamicDiscount = useAdminDeleteDynamicDiscountCode(discountId) // ... const handleDelete = (code: string) => { deleteDynamicDiscount.mutate(code, { onSuccess: ({ discount }) => { console.log(discount.is_dynamic) } }) } // ... } export default Discount - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/discounts/{id}/dynamic-codes/{code}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/discounts/{id}/regions/{region_id}: post: operationId: PostDiscountsDiscountRegionsRegion summary: Add Region to Discount description: Add a Region to the list of Regions a Discount can be used in. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Discount. schema: type: string - in: path name: region_id required: true description: The ID of the Region. schema: type: string x-codegen: method: addRegion x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.addRegion(discountId, regionId) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDiscountAddRegion } from "medusa-react" type Props = { discountId: string } const Discount = ({ discountId }: Props) => { const addRegion = useAdminDiscountAddRegion(discountId) // ... const handleAdd = (regionId: string) => { addRegion.mutate(regionId, { onSuccess: ({ discount }) => { console.log(discount.regions) } }) } // ... } export default Discount - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/discounts/{id}/regions/{region_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteDiscountsDiscountRegionsRegion summary: Remove Region x-authenticated: true description: Remove a Region from the list of Regions that a Discount can be used in. This does not delete a region, only the association between it and the discount. parameters: - in: path name: id required: true description: The ID of the Discount. schema: type: string - in: path name: region_id required: true description: The ID of the Region. schema: type: string x-codegen: method: removeRegion x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.discounts.removeRegion(discountId, regionId) .then(({ discount }) => { console.log(discount.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDiscountRemoveRegion } from "medusa-react" type Props = { discountId: string } const Discount = ({ discountId }: Props) => { const deleteRegion = useAdminDiscountRemoveRegion(discountId) // ... const handleDelete = (regionId: string) => { deleteRegion.mutate(regionId, { onSuccess: ({ discount }) => { console.log(discount.regions) } }) } // ... } export default Discount - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/discounts/{id}/regions/{region_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Discounts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDiscountsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/draft-orders: get: operationId: GetDraftOrders summary: List Draft Orders description: Retrieve an list of Draft Orders. The draft orders can be filtered by fields such as `q`. The draft orders can also paginated. x-authenticated: true parameters: - in: query name: offset description: The number of draft orders to skip when retrieving the draft orders. schema: type: number default: '0' - in: query name: limit description: Limit the number of draft orders returned. schema: type: number default: '50' - in: query name: q description: a term to search draft orders' display IDs and emails in the draft order's cart schema: type: string - in: query name: order description: Field to sort retrieved draft orders by. schema: type: string - in: query name: expand description: A comma-separated list of fields to expand. schema: type: string - in: query name: fields description: A comma-separated list of fields to include in the response. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: status style: form explode: false description: Filter by status schema: type: array items: type: string enum: - open - completed x-codegen: method: list queryParams: AdminGetDraftOrdersParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.list() .then(({ draft_orders, limit, offset, count }) => { console.log(draft_orders.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDraftOrders } from "medusa-react" const DraftOrders = () => { const { draft_orders, isLoading } = useAdminDraftOrders() return (
{isLoading && Loading...} {draft_orders && !draft_orders.length && ( No Draft Orders )} {draft_orders && draft_orders.length > 0 && ( )}
) } export default DraftOrders - lang: Shell label: cURL source: | curl '{backend_url}/admin/draft-orders' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDraftOrdersListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostDraftOrders summary: Create a Draft Order description: Create a Draft Order. A draft order is not transformed into an order until payment is captured. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDraftOrdersReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.create({ email: "user@example.com", region_id, items: [ { quantity: 1 } ], shipping_methods: [ { option_id } ], }) .then(({ draft_order }) => { console.log(draft_order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateDraftOrder } from "medusa-react" type DraftOrderData = { email: string region_id: string items: { quantity: number, variant_id: string }[] shipping_methods: { option_id: string price: number }[] } const CreateDraftOrder = () => { const createDraftOrder = useAdminCreateDraftOrder() // ... const handleCreate = (data: DraftOrderData) => { createDraftOrder.mutate(data, { onSuccess: ({ draft_order }) => { console.log(draft_order.id) } }) } // ... } export default CreateDraftOrder - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/draft-orders' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com", "region_id": "{region_id}" "items": [ { "quantity": 1 } ], "shipping_methods": [ { "option_id": "{option_id}" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDraftOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/draft-orders/{id}: get: operationId: GetDraftOrdersDraftOrder summary: Get a Draft Order description: Retrieve a Draft Order's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Draft Order. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.retrieve(draftOrderId) .then(({ draft_order }) => { console.log(draft_order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDraftOrder } from "medusa-react" type Props = { draftOrderId: string } const DraftOrder = ({ draftOrderId }: Props) => { const { draft_order, isLoading, } = useAdminDraftOrder(draftOrderId) return (
{isLoading && Loading...} {draft_order && {draft_order.display_id}}
) } export default DraftOrder - lang: Shell label: cURL source: | curl '{backend_url}/admin/draft-orders/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDraftOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostDraftOrdersDraftOrder summary: Update a Draft Order description: Update a Draft Order's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Draft Order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDraftOrdersDraftOrderReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.update(draftOrderId, { email: "user@example.com" }) .then(({ draft_order }) => { console.log(draft_order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateDraftOrder } from "medusa-react" type Props = { draftOrderId: string } const DraftOrder = ({ draftOrderId }: Props) => { const updateDraftOrder = useAdminUpdateDraftOrder( draftOrderId ) // ... const handleUpdate = (email: string) => { updateDraftOrder.mutate({ email, }, { onSuccess: ({ draft_order }) => { console.log(draft_order.id) } }) } // ... } export default DraftOrder - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/draft-orders/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDraftOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteDraftOrdersDraftOrder summary: Delete a Draft Order description: Delete a Draft Order. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Draft Order. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.delete(draftOrderId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteDraftOrder } from "medusa-react" type Props = { draftOrderId: string } const DraftOrder = ({ draftOrderId }: Props) => { const deleteDraftOrder = useAdminDeleteDraftOrder( draftOrderId ) // ... const handleDelete = () => { deleteDraftOrder.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default DraftOrder - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/draft-orders/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDraftOrdersDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/draft-orders/{id}/line-items: post: operationId: PostDraftOrdersDraftOrderLineItems summary: Create a Line Item description: Create a Line Item in the Draft Order. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Draft Order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDraftOrdersDraftOrderLineItemsReq' x-codegen: method: addLineItem x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.addLineItem(draftOrderId, { quantity: 1 }) .then(({ draft_order }) => { console.log(draft_order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDraftOrderAddLineItem } from "medusa-react" type Props = { draftOrderId: string } const DraftOrder = ({ draftOrderId }: Props) => { const addLineItem = useAdminDraftOrderAddLineItem( draftOrderId ) // ... const handleAdd = (quantity: number) => { addLineItem.mutate({ quantity, }, { onSuccess: ({ draft_order }) => { console.log(draft_order.cart) } }) } // ... } export default DraftOrder - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/draft-orders/{id}/line-items' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "quantity": 1 }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDraftOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/draft-orders/{id}/line-items/{line_id}: post: operationId: PostDraftOrdersDraftOrderLineItemsItem summary: Update a Line Item description: Update a Line Item in a Draft Order. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Draft Order. schema: type: string - in: path name: line_id required: true description: The ID of the Line Item. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostDraftOrdersDraftOrderLineItemsItemReq' x-codegen: method: updateLineItem x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.updateLineItem(draftOrderId, lineId, { quantity: 1 }) .then(({ draft_order }) => { console.log(draft_order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDraftOrderUpdateLineItem } from "medusa-react" type Props = { draftOrderId: string } const DraftOrder = ({ draftOrderId }: Props) => { const updateLineItem = useAdminDraftOrderUpdateLineItem( draftOrderId ) // ... const handleUpdate = ( itemId: string, quantity: number ) => { updateLineItem.mutate({ item_id: itemId, quantity, }) } // ... } export default DraftOrder - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/draft-orders/{id}/line-items/{line_id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "quantity": 1 }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDraftOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteDraftOrdersDraftOrderLineItemsItem summary: Delete a Line Item description: Delete a Line Item from a Draft Order. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Draft Order. schema: type: string - in: path name: line_id required: true description: The ID of the line item. schema: type: string x-codegen: method: removeLineItem x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.removeLineItem(draftOrderId, itemId) .then(({ draft_order }) => { console.log(draft_order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDraftOrderRemoveLineItem } from "medusa-react" type Props = { draftOrderId: string } const DraftOrder = ({ draftOrderId }: Props) => { const deleteLineItem = useAdminDraftOrderRemoveLineItem( draftOrderId ) // ... const handleDelete = (itemId: string) => { deleteLineItem.mutate(itemId, { onSuccess: ({ draft_order }) => { console.log(draft_order.cart) } }) } // ... } export default DraftOrder - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/draft-orders/{id}/line-items/{line_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDraftOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/draft-orders/{id}/pay: post: summary: Mark Paid operationId: PostDraftOrdersDraftOrderRegisterPayment description: Capture the draft order's payment. This will also set the draft order's status to `completed` and create an Order from the draft order. The payment is captured through Medusa's system payment, which is manual payment that isn't integrated with any third-party payment provider. It is assumed that the payment capturing is handled manually by the admin. x-authenticated: true parameters: - in: path name: id required: true description: The Draft Order ID. schema: type: string x-codegen: method: markPaid x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.markPaid(draftOrderId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDraftOrderRegisterPayment } from "medusa-react" type Props = { draftOrderId: string } const DraftOrder = ({ draftOrderId }: Props) => { const registerPayment = useAdminDraftOrderRegisterPayment( draftOrderId ) // ... const handlePayment = () => { registerPayment.mutate(void 0, { onSuccess: ({ order }) => { console.log(order.id) } }) } // ... } export default DraftOrder - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/draft-orders/{id}/pay' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Draft Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPostDraftOrdersDraftOrderRegisterPaymentRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `q`. The gift cards can also paginated. x-authenticated: true parameters: - in: query name: offset description: The number of gift cards to skip when retrieving the gift cards. schema: type: number default: '0' - in: query name: limit description: Limit the number of gift cards returned. schema: type: number default: '50' - in: query name: q description: a term to search gift cards' code or display ID schema: type: string - in: query name: order description: A gift card field to sort-order the retrieved gift cards by. schema: type: string x-codegen: method: list queryParams: AdminGetGiftCardsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.giftCards.list() .then(({ gift_cards, limit, offset, count }) => { console.log(gift_cards.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { GiftCard } from "@medusajs/medusa" import { useAdminGiftCards } from "medusa-react" const CustomGiftCards = () => { const { gift_cards, isLoading } = useAdminGiftCards() return (
{isLoading && Loading...} {gift_cards && !gift_cards.length && ( No custom gift cards... )} {gift_cards && gift_cards.length > 0 && ( )}
) } export default CustomGiftCards - lang: Shell label: cURL source: | curl '{backend_url}/admin/gift-cards' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Gift Cards responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminGiftCardsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostGiftCards summary: Create a Gift Card description: Create a Gift Card that can redeemed by its unique code. The Gift Card is only valid within 1 region. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostGiftCardsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.giftCards.create({ region_id }) .then(({ gift_card }) => { console.log(gift_card.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateGiftCard } from "medusa-react" const CreateCustomGiftCards = () => { const createGiftCard = useAdminCreateGiftCard() // ... const handleCreate = ( regionId: string, value: number ) => { createGiftCard.mutate({ region_id: regionId, value, }, { onSuccess: ({ gift_card }) => { console.log(gift_card.id) } }) } // ... } export default CreateCustomGiftCards - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/gift-cards' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "region_id": "{region_id}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Gift Cards responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminGiftCardsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/gift-cards/{id}: get: operationId: GetGiftCardsGiftCard summary: Get a Gift Card description: Retrieve a Gift Card's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Gift Card. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.giftCards.retrieve(giftCardId) .then(({ gift_card }) => { console.log(gift_card.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminGiftCard } from "medusa-react" type Props = { giftCardId: string } const CustomGiftCard = ({ giftCardId }: Props) => { const { gift_card, isLoading } = useAdminGiftCard(giftCardId) return (
{isLoading && Loading...} {gift_card && {gift_card.code}}
) } export default CustomGiftCard - lang: Shell label: cURL source: | curl '{backend_url}/admin/gift-cards/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Gift Cards responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminGiftCardsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostGiftCardsGiftCard summary: Update a Gift Card description: Update a Gift Card's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Gift Card. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostGiftCardsGiftCardReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.giftCards.update(giftCardId, { region_id }) .then(({ gift_card }) => { console.log(gift_card.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateGiftCard } from "medusa-react" type Props = { customGiftCardId: string } const CustomGiftCard = ({ customGiftCardId }: Props) => { const updateGiftCard = useAdminUpdateGiftCard( customGiftCardId ) // ... const handleUpdate = (regionId: string) => { updateGiftCard.mutate({ region_id: regionId, }, { onSuccess: ({ gift_card }) => { console.log(gift_card.id) } }) } // ... } export default CustomGiftCard - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/gift-cards/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "region_id": "{region_id}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Gift Cards responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminGiftCardsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteGiftCardsGiftCard summary: Delete a Gift Card description: Delete a Gift Card. Once deleted, it can't be used by customers. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Gift Card to delete. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.giftCards.delete(giftCardId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteGiftCard } from "medusa-react" type Props = { customGiftCardId: string } const CustomGiftCard = ({ customGiftCardId }: Props) => { const deleteGiftCard = useAdminDeleteGiftCard( customGiftCardId ) // ... const handleDelete = () => { deleteGiftCard.mutate(void 0, { onSuccess: ({ id, object, deleted}) => { console.log(id) } }) } // ... } export default CustomGiftCard - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/gift-cards/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Gift Cards responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminGiftCardsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `q` or `location_id`. The inventory items can also be paginated. x-authenticated: true parameters: - in: query name: offset description: The number of inventory items to skip when retrieving the inventory items. schema: type: integer default: 0 - in: query name: limit description: Limit the number of inventory items returned. schema: type: integer default: 20 - in: query name: expand description: Comma-separated relations that should be expanded in each returned inventory item. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned inventory item. schema: type: string - in: query name: q description: term to search inventory item's sku, title, and description. schema: type: string - in: query name: order description: Field to sort-order inventory items by. schema: type: string - in: query name: location_id style: form explode: false description: Filter by location IDs. schema: type: array items: type: string - in: query name: id style: form explode: false description: Filter by the inventory ID schema: oneOf: - type: string description: inventory ID - type: array description: an array of inventory IDs items: type: string - in: query name: sku description: Filter by SKU schema: type: string - in: query name: origin_country description: Filter by origin country schema: type: string - in: query name: mid_code description: Filter by MID code schema: type: string - in: query name: material description: Filter by material schema: type: string - in: query name: hs_code description: Filter by HS Code schema: type: string - in: query name: weight description: Filter by weight schema: type: string - in: query name: length description: Filter by length schema: type: string - in: query name: height description: Filter by height schema: type: string - in: query name: width description: Filter by width schema: type: string - in: query name: requires_shipping description: Filter by whether the item requires shipping schema: type: string x-codegen: method: list queryParams: AdminGetInventoryItemsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.list() .then(({ inventory_items, count, offset, limit }) => { console.log(inventory_items.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminInventoryItems } from "medusa-react" function InventoryItems() { const { inventory_items, isLoading } = useAdminInventoryItems() return (
{isLoading && Loading...} {inventory_items && !inventory_items.length && ( No Items )} {inventory_items && inventory_items.length > 0 && ( )}
) } export default InventoryItems - lang: Shell label: cURL source: | curl '{backend_url}/admin/inventory-items' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsListWithVariantsAndLocationLevelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 an Inventory Item description: Create an Inventory Item for a product variant. x-authenticated: true parameters: - in: query name: expand description: Comma-separated relations that should be expanded in the returned inventory item. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned inventory item. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostInventoryItemsReq' x-codegen: method: create queryParams: AdminPostInventoryItemsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.create({ variant_id: "variant_123", }) .then(({ inventory_item }) => { console.log(inventory_item.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateInventoryItem } from "medusa-react" const CreateInventoryItem = () => { const createInventoryItem = useAdminCreateInventoryItem() // ... const handleCreate = (variantId: string) => { createInventoryItem.mutate({ variant_id: variantId, }, { onSuccess: ({ inventory_item }) => { console.log(inventory_item.id) } }) } // ... } export default CreateInventoryItem - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/inventory-items' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "variant_id": "variant_123", }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/inventory-items/{id}: get: operationId: GetInventoryItemsInventoryItem summary: Get an Inventory Item description: Retrieve an Inventory Item's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Inventory Item. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned inventory item. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned inventory item. schema: type: string x-codegen: method: retrieve queryParams: AdminGetInventoryItemsItemParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.retrieve(inventoryItemId) .then(({ inventory_item }) => { console.log(inventory_item.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminInventoryItem } from "medusa-react" type Props = { inventoryItemId: string } const InventoryItem = ({ inventoryItemId }: Props) => { const { inventory_item, isLoading } = useAdminInventoryItem(inventoryItemId) return (
{isLoading && Loading...} {inventory_item && ( {inventory_item.sku} )}
) } export default InventoryItem - lang: Shell label: cURL source: | curl '{backend_url}/admin/inventory-items/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostInventoryItemsInventoryItem summary: Update an Inventory Item description: Update an Inventory Item's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Inventory Item. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned inventory level. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned inventory level. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostInventoryItemsInventoryItemReq' x-codegen: method: update queryParams: AdminPostInventoryItemsInventoryItemParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.update(inventoryItemId, { origin_country: "US", }) .then(({ inventory_item }) => { console.log(inventory_item.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateInventoryItem } from "medusa-react" type Props = { inventoryItemId: string } const InventoryItem = ({ inventoryItemId }: Props) => { const updateInventoryItem = useAdminUpdateInventoryItem( inventoryItemId ) // ... const handleUpdate = (origin_country: string) => { updateInventoryItem.mutate({ origin_country, }, { onSuccess: ({ inventory_item }) => { console.log(inventory_item.origin_country) } }) } // ... } export default InventoryItem - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/inventory-items/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "origin_country": "US" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteInventoryItemsInventoryItem summary: Delete an Inventory Item description: Delete an Inventory Item. This does not delete the associated product variant. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Inventory Item to delete. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.delete(inventoryItemId) .then(({ id, object, deleted }) => { console.log(id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteInventoryItem } from "medusa-react" type Props = { inventoryItemId: string } const InventoryItem = ({ inventoryItemId }: Props) => { const deleteInventoryItem = useAdminDeleteInventoryItem( inventoryItemId ) // ... const handleDelete = () => { deleteInventoryItem.mutate() } // ... } export default InventoryItem - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/inventory-items/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsDeleteRes' '400': $ref: '#/components/responses/400_error' /admin/inventory-items/{id}/location-levels: get: operationId: GetInventoryItemsInventoryItemLocationLevels summary: List Inventory Level description: Retrieve a list of inventory levels of an inventory item. The inventory levels can be filtered by fields such as `location_id`. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Inventory Item the locations are associated with. schema: type: string - in: query name: location_id style: form explode: false description: Filter by location IDs. schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned inventory levels. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned inventory levels. schema: type: string x-codegen: method: listLocationLevels queryParams: AdminGetInventoryItemsItemLocationLevelsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.listLocationLevels(inventoryItemId) .then(({ inventory_item }) => { console.log(inventory_item.location_levels); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminInventoryItemLocationLevels, } from "medusa-react" type Props = { inventoryItemId: string } const InventoryItem = ({ inventoryItemId }: Props) => { const { inventory_item, isLoading, } = useAdminInventoryItemLocationLevels(inventoryItemId) return (
{isLoading && Loading...} {inventory_item && ( )}
) } export default InventoryItem - lang: Shell label: cURL source: | curl '{backend_url}/admin/inventory-items/{id}/location-levels' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsLocationLevelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostInventoryItemsInventoryItemLocationLevels summary: Create a Location Level description: Create a Location Level for a given Inventory Item. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Inventory Item. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned inventory item. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned inventory item. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostInventoryItemsItemLocationLevelsReq' x-codegen: method: createLocationLevel queryParams: AdminPostInventoryItemsItemLocationLevelsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.createLocationLevel(inventoryItemId, { location_id: "sloc_123", stocked_quantity: 10, }) .then(({ inventory_item }) => { console.log(inventory_item.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateLocationLevel } from "medusa-react" type Props = { inventoryItemId: string } const InventoryItem = ({ inventoryItemId }: Props) => { const createLocationLevel = useAdminCreateLocationLevel( inventoryItemId ) // ... const handleCreateLocationLevel = ( locationId: string, stockedQuantity: number ) => { createLocationLevel.mutate({ location_id: locationId, stocked_quantity: stockedQuantity, }, { onSuccess: ({ inventory_item }) => { console.log(inventory_item.id) } }) } // ... } export default InventoryItem - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/inventory-items/{id}/location-levels' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "location_id": "sloc_123", "stocked_quantity": 10 }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/inventory-items/{id}/location-levels/{location_id}: post: operationId: PostInventoryItemsInventoryItemLocationLevelsLocationLevel summary: Update a Location Level description: Update a Location Level's details for a given Inventory Item. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Inventory Item that the location is associated with. schema: type: string - in: path name: location_id required: true description: The ID of the Location to update. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned location level. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned location level. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostInventoryItemsItemLocationLevelsLevelReq' x-codegen: method: updateLocationLevel queryParams: AdminPostInventoryItemsItemLocationLevelsLevelParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.updateLocationLevel(inventoryItemId, locationId, { stocked_quantity: 15, }) .then(({ inventory_item }) => { console.log(inventory_item.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateLocationLevel } from "medusa-react" type Props = { inventoryItemId: string } const InventoryItem = ({ inventoryItemId }: Props) => { const updateLocationLevel = useAdminUpdateLocationLevel( inventoryItemId ) // ... const handleUpdate = ( stockLocationId: string, stocked_quantity: number ) => { updateLocationLevel.mutate({ stockLocationId, stocked_quantity, }, { onSuccess: ({ inventory_item }) => { console.log(inventory_item.id) } }) } // ... } export default InventoryItem - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/inventory-items/{id}/location-levels/{location_id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "stocked_quantity": 15 }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteInventoryItemsInventoryIteLocationLevelsLocation summary: Delete a Location Level description: Delete a location level of an Inventory Item. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Inventory Item. schema: type: string - in: path name: location_id required: true description: The ID of the location. schema: type: string x-codegen: method: deleteLocationLevel x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.inventoryItems.deleteLocationLevel(inventoryItemId, locationId) .then(({ inventory_item }) => { console.log(inventory_item.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteLocationLevel } from "medusa-react" type Props = { inventoryItemId: string } const InventoryItem = ({ inventoryItemId }: Props) => { const deleteLocationLevel = useAdminDeleteLocationLevel( inventoryItemId ) // ... const handleDelete = ( locationId: string ) => { deleteLocationLevel.mutate(locationId) } // ... } export default InventoryItem - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/inventory-items/{id}/location-levels/{location_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Inventory Items responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInventoryItemsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/invites: get: operationId: GetInvites summary: Lists Invites description: Retrieve a list of invites. x-authenticated: true x-codegen: method: list x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.invites.list() .then(({ invites }) => { console.log(invites.length); }) - lang: Shell label: cURL source: | curl '{backend_url}/admin/invites' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Invites responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminListInvitesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostInvites summary: Create an Invite description: Create an Invite. This will generate a token associated with the invite and trigger an `invite.created` event. If you have a Notification Provider installed that handles this event, a notification should be sent to the email associated with the invite to allow them to accept the invite. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostInvitesReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.invites.create({ user: "user@example.com", role: "admin" }) .then(() => { // successful }) .catch(() => { // an error occurred }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/invites' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "user": "user@example.com", "role": "admin" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Invites 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' /admin/invites/accept: post: operationId: PostInvitesInviteAccept summary: Accept an Invite description: Accept an Invite. This will also delete the invite and create a new user that can log in and perform admin functionalities. The user will have the email associated with the invite, and the password provided in the request body. requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostInvitesInviteAcceptReq' x-codegen: method: accept x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.invites.accept({ token, user: { first_name: "Brigitte", last_name: "Collier", password: "supersecret" } }) .then(() => { // successful }) .catch(() => { // an error occurred }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAcceptInvite } from "medusa-react" const AcceptInvite = () => { const acceptInvite = useAdminAcceptInvite() // ... const handleAccept = ( token: string, firstName: string, lastName: string, password: string ) => { acceptInvite.mutate({ token, user: { first_name: firstName, last_name: lastName, password, }, }, { onSuccess: () => { // invite accepted successfully. } }) } // ... } export default AcceptInvite - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/invites/accept' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "token": "{token}", "user": { "first_name": "Brigitte", "last_name": "Collier", "password": "supersecret" } }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Invites 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' /admin/invites/{invite_id}: delete: operationId: DeleteInvitesInvite summary: Delete an Invite description: Delete an Invite. Only invites that weren't accepted can be deleted. x-authenticated: true parameters: - in: path name: invite_id required: true description: The ID of the Invite schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.invites.delete(inviteId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteInvite } from "medusa-react" type Props = { inviteId: string } const DeleteInvite = ({ inviteId }: Props) => { const deleteInvite = useAdminDeleteInvite(inviteId) // ... const handleDelete = () => { deleteInvite.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default Invite - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/invites/{invite_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Invites responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminInviteDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/invites/{invite_id}/resend: post: operationId: PostInvitesInviteResend summary: Resend an Invite description: Resend an Invite. This renews the expiry date by 7 days and generates a new token for the invite. It also triggers the `invite.created` event, so if you have a Notification Provider installed that handles this event, a notification should be sent to the email associated with the invite to allow them to accept the invite. x-authenticated: true parameters: - in: path name: invite_id required: true description: The ID of the Invite schema: type: string x-codegen: method: resend x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.invites.resend(inviteId) .then(() => { // successful }) .catch(() => { // an error occurred }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminResendInvite } from "medusa-react" type Props = { inviteId: string } const ResendInvite = ({ inviteId }: Props) => { const resendInvite = useAdminResendInvite(inviteId) // ... const handleResend = () => { resendInvite.mutate(void 0, { onSuccess: () => { // invite resent successfully } }) } // ... } export default ResendInvite - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/invites/{invite_id}/resend' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Invites 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' /admin/notes: get: operationId: GetNotes summary: List Notes x-authenticated: true description: Retrieve a list of notes. The notes can be filtered by fields such as `resource_id`. The notes can also be paginated. parameters: - in: query name: limit description: Limit the number of notes returned. schema: type: number default: '50' - in: query name: offset description: The number of notes to skip when retrieving the notes. schema: type: number default: '0' - in: query name: resource_id description: Filter by resource ID schema: type: string x-codegen: method: list queryParams: AdminGetNotesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.notes.list() .then(({ notes, limit, offset, count }) => { console.log(notes.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminNotes } from "medusa-react" const Notes = () => { const { notes, isLoading } = useAdminNotes() return (
{isLoading && Loading...} {notes && !notes.length && No Notes} {notes && notes.length > 0 && ( )}
) } export default Notes - lang: Shell label: cURL source: | curl '{backend_url}/admin/notes' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Notes responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminNotesListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostNotes summary: Create a Note description: Create a Note which can be associated with any resource. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostNotesReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.notes.create({ resource_id, resource_type: "order", value: "We delivered this order" }) .then(({ note }) => { console.log(note.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateNote } from "medusa-react" const CreateNote = () => { const createNote = useAdminCreateNote() // ... const handleCreate = () => { createNote.mutate({ resource_id: "order_123", resource_type: "order", value: "We delivered this order" }, { onSuccess: ({ note }) => { console.log(note.id) } }) } // ... } export default CreateNote - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/notes' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "resource_id": "{resource_id}", "resource_type": "order", "value": "We delivered this order" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Notes responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminNotesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/notes/{id}: get: operationId: GetNotesNote summary: Get a Note description: Retrieve a note's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the note. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.notes.retrieve(noteId) .then(({ note }) => { console.log(note.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminNote } from "medusa-react" type Props = { noteId: string } const Note = ({ noteId }: Props) => { const { note, isLoading } = useAdminNote(noteId) return (
{isLoading && Loading...} {note && {note.resource_type}}
) } export default Note - lang: Shell label: cURL source: | curl '{backend_url}/admin/notes/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Notes responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminNotesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostNotesNote summary: Update a Note x-authenticated: true description: Update a Note's details. parameters: - in: path name: id required: true description: The ID of the Note schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostNotesNoteReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.notes.update(noteId, { value: "We delivered this order" }) .then(({ note }) => { console.log(note.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateNote } from "medusa-react" type Props = { noteId: string } const Note = ({ noteId }: Props) => { const updateNote = useAdminUpdateNote(noteId) // ... const handleUpdate = ( value: string ) => { updateNote.mutate({ value }, { onSuccess: ({ note }) => { console.log(note.value) } }) } // ... } export default Note - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/notes/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "value": "We delivered this order" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Notes responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminNotesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteNotesNote summary: Delete a Note description: Delete a Note. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Note to delete. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.notes.delete(noteId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteNote } from "medusa-react" type Props = { noteId: string } const Note = ({ noteId }: Props) => { const deleteNote = useAdminDeleteNote(noteId) // ... const handleDelete = () => { deleteNote.mutate() } // ... } export default Note - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/notes/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Notes responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminNotesDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: get: operationId: GetNotifications summary: List Notifications description: Retrieve a list of notifications. The notifications can be filtered by fields such as `event_name` or `resource_type`. The notifications can also be paginated. x-authenticated: true parameters: - in: query name: offset description: The number of inventory items to skip when retrieving the inventory items. schema: type: integer default: 0 - in: query name: limit description: Limit the number of notifications returned. schema: type: integer default: 50 - in: query name: fields description: Comma-separated fields that should be included in each returned notification. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in each returned notification. schema: type: string - in: query name: event_name description: Filter by the name of the event that triggered sending this notification. schema: type: string - in: query name: resource_type description: Filter by the resource type. schema: type: string - in: query name: resource_id description: Filter by the resource ID. schema: type: string - in: query name: to description: Filter by the address that the Notification was sent to. This will usually be an email address, but it can also represent other addresses such as a chat bot user id. schema: type: string - in: query name: include_resends description: A boolean indicating whether the result set should include resent notifications or not schema: type: string x-codegen: method: list queryParams: AdminGetNotificationsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.notifications.list() .then(({ notifications }) => { console.log(notifications.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminNotifications } from "medusa-react" const Notifications = () => { const { notifications, isLoading } = useAdminNotifications() return (
{isLoading && Loading...} {notifications && !notifications.length && ( No Notifications )} {notifications && notifications.length > 0 && ( )}
) } export default Notifications - lang: Shell label: cURL source: | curl '{backend_url}/admin/notifications' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Notifications responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminNotificationsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/resend: post: operationId: PostNotificationsNotificationResend summary: Resend Notification description: Resend a previously sent notifications, with the same data but optionally to a different address. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Notification schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostNotificationsNotificationResendReq' x-codegen: method: resend x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.notifications.resend(notificationId) .then(({ notification }) => { console.log(notification.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminResendNotification } from "medusa-react" type Props = { notificationId: string } const Notification = ({ notificationId }: Props) => { const resendNotification = useAdminResendNotification( notificationId ) // ... const handleResend = () => { resendNotification.mutate({}, { onSuccess: ({ notification }) => { console.log(notification.id) } }) } // ... } export default Notification - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/notifications/{id}/resend' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Notifications responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminNotificationsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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-edits: get: operationId: GetOrderEdits summary: List Order Edits description: Retrieve a list of order edits. The order edits can be filtered by fields such as `q` or `order_id`. The order edits can also be paginated. x-authenticated: true parameters: - in: query name: q description: term to search order edits' internal note. schema: type: string - in: query name: order_id description: Filter by order ID schema: type: string - in: query name: limit description: Limit the number of order edits returned. schema: type: number default: '20' - in: query name: offset description: The number of order edits to skip when retrieving the order edits. schema: type: number default: '0' - in: query name: expand description: Comma-separated relations that should be expanded in each returned order edit. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in each returned order edit. schema: type: string x-codegen: method: list queryParams: GetOrderEditsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.list() .then(({ order_edits, count, limit, offset }) => { console.log(order_edits.length) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminOrderEdits } from "medusa-react" const OrderEdits = () => { const { order_edits, isLoading } = useAdminOrderEdits() return (
{isLoading && Loading...} {order_edits && !order_edits.length && ( No Order Edits )} {order_edits && order_edits.length > 0 && ( )}
) } export default OrderEdits - lang: Shell label: cURL source: | curl '{backend_url}/admin/order-edits' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostOrderEdits summary: Create an OrderEdit description: Create an Order Edit. requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrderEditsReq' x-authenticated: true x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.create({ orderId }) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateOrderEdit } from "medusa-react" const CreateOrderEdit = () => { const createOrderEdit = useAdminCreateOrderEdit() const handleCreateOrderEdit = (orderId: string) => { createOrderEdit.mutate({ order_id: orderId, }, { onSuccess: ({ order_edit }) => { console.log(order_edit.id) } }) } // ... } export default CreateOrderEdit - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/order-edits' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "order_id": "my_order_id", "internal_note": "my_optional_note" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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-edits/{id}: get: operationId: GetOrderEditsOrderEdit summary: Get an Order Edit description: Retrieve an Order Edit's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the OrderEdit. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in each returned order edit. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order edit. schema: type: string x-codegen: method: retrieve queryParams: GetOrderEditsOrderEditParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.retrieve(orderEditId) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminOrderEdit } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const { order_edit, isLoading, } = useAdminOrderEdit(orderEditId) return (
{isLoading && Loading...} {order_edit && {order_edit.status}}
) } export default OrderEdit - lang: Shell label: cURL source: | curl '{backend_url}/admin/order-edits/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostOrderEditsOrderEdit summary: Update an Order Edit description: Update an Order Edit's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the OrderEdit. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrderEditsOrderEditReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.update(orderEditId, { internal_note: "internal reason XY" }) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateOrderEdit } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const updateOrderEdit = useAdminUpdateOrderEdit( orderEditId, ) const handleUpdate = ( internalNote: string ) => { updateOrderEdit.mutate({ internal_note: internalNote }, { onSuccess: ({ order_edit }) => { console.log(order_edit.internal_note) } }) } // ... } export default OrderEdit - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/order-edits/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "internal_note": "internal reason XY" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteOrderEditsOrderEdit summary: Delete an Order Edit description: Delete an Order Edit. Only order edits that have the status `created` can be deleted. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order Edit to delete. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.delete(orderEditId) .then(({ id, object, deleted }) => { console.log(id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteOrderEdit } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const deleteOrderEdit = useAdminDeleteOrderEdit( orderEditId ) const handleDelete = () => { deleteOrderEdit.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default OrderEdit - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/order-edits/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditDeleteRes' '400': $ref: '#/components/responses/400_error' /admin/order-edits/{id}/cancel: post: operationId: PostOrderEditsOrderEditCancel summary: Cancel an Order Edit description: Cancel an Order Edit. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the OrderEdit. schema: type: string x-codegen: method: cancel x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.cancel(orderEditId) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelOrderEdit } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const cancelOrderEdit = useAdminCancelOrderEdit( orderEditId ) const handleCancel = () => { cancelOrderEdit.mutate(void 0, { onSuccess: ({ order_edit }) => { console.log( order_edit.id ) } }) } // ... } export default OrderEdit - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/order-edits/{id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '500': $ref: '#/components/responses/500_error' /admin/order-edits/{id}/changes/{change_id}: delete: operationId: DeleteOrderEditsOrderEditItemChange summary: Delete a Line Item Change description: Delete a line item change that indicates the addition, deletion, or update of a line item in the original order. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order Edit. schema: type: string - in: path name: change_id required: true description: The ID of the Line Item Change to delete. schema: type: string x-codegen: method: deleteItemChange x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.deleteItemChange(orderEdit_id, itemChangeId) .then(({ id, object, deleted }) => { console.log(id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteOrderEditItemChange } from "medusa-react" type Props = { orderEditId: string itemChangeId: string } const OrderEditItemChange = ({ orderEditId, itemChangeId }: Props) => { const deleteItemChange = useAdminDeleteOrderEditItemChange( orderEditId, itemChangeId ) const handleDeleteItemChange = () => { deleteItemChange.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default OrderEditItemChange - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/order-edits/{id}/changes/{change_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditItemChangeDeleteRes' '400': $ref: '#/components/responses/400_error' /admin/order-edits/{id}/confirm: post: operationId: PostOrderEditsOrderEditConfirm summary: Confirm an OrderEdit description: Confirm an Order Edit. This will reflect the changes in the order edit on the associated order. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the order edit. schema: type: string x-codegen: method: confirm x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.confirm(orderEditId) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminConfirmOrderEdit } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const confirmOrderEdit = useAdminConfirmOrderEdit( orderEditId ) const handleConfirmOrderEdit = () => { confirmOrderEdit.mutate(void 0, { onSuccess: ({ order_edit }) => { console.log( order_edit.confirmed_at, order_edit.confirmed_by ) } }) } // ... } export default OrderEdit - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/order-edits/{id}/confirm' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '500': $ref: '#/components/responses/500_error' /admin/order-edits/{id}/items: post: operationId: PostOrderEditsEditLineItems summary: Add a Line Item description: Create a line item change in the order edit that indicates adding an item in the original order. The item will not be added to the original order until the order edit is confirmed. parameters: - in: path name: id required: true description: The ID of the Order Edit. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrderEditsEditLineItemsReq' x-authenticated: true x-codegen: method: addLineItem x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.addLineItem(orderEditId, { variant_id, quantity }) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminOrderEditAddLineItem } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const addLineItem = useAdminOrderEditAddLineItem( orderEditId ) const handleAddLineItem = (quantity: number, variantId: string) => { addLineItem.mutate({ quantity, variant_id: variantId, }, { onSuccess: ({ order_edit }) => { console.log(order_edit.changes) } }) } // ... } export default OrderEdit - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/order-edits/{id}/items' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "variant_id": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6", "quantity": 3 }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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-edits/{id}/items/{item_id}: post: operationId: PostOrderEditsEditLineItemsLineItem summary: Upsert Line Item Change description: Create or update a line item change in the order edit that indicates addition, deletion, or update of a line item into an original order. Line item changes are only reflected on the original order after the order edit is confirmed. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order Edit. schema: type: string - in: path name: item_id required: true description: The ID of the line item in the original order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrderEditsEditLineItemsLineItemReq' x-codegen: method: updateLineItem x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.updateLineItem(orderEditId, lineItemId, { quantity: 5 }) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminOrderEditUpdateLineItem } from "medusa-react" type Props = { orderEditId: string itemId: string } const OrderEditItemChange = ({ orderEditId, itemId }: Props) => { const updateLineItem = useAdminOrderEditUpdateLineItem( orderEditId, itemId ) const handleUpdateLineItem = (quantity: number) => { updateLineItem.mutate({ quantity, }, { onSuccess: ({ order_edit }) => { console.log(order_edit.items) } }) } // ... } export default OrderEditItemChange - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/order-edits/{id}/items/{item_id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "quantity": 5 }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteOrderEditsOrderEditLineItemsLineItem summary: Delete Line Item description: Create a line item change in the order edit that indicates deleting an item in the original order. The item in the original order will not be deleted until the order edit is confirmed. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order Edit. schema: type: string - in: path name: item_id required: true description: The ID of line item in the original order. schema: type: string x-codegen: method: removeLineItem x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.removeLineItem(orderEditId, lineItemId) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminOrderEditDeleteLineItem } from "medusa-react" type Props = { orderEditId: string itemId: string } const OrderEditLineItem = ({ orderEditId, itemId }: Props) => { const removeLineItem = useAdminOrderEditDeleteLineItem( orderEditId, itemId ) const handleRemoveLineItem = () => { removeLineItem.mutate(void 0, { onSuccess: ({ order_edit }) => { console.log(order_edit.changes) } }) } // ... } export default OrderEditLineItem - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/order-edits/{id}/items/{item_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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-edits/{id}/request: post: operationId: PostOrderEditsOrderEditRequest summary: Request Confirmation description: Request customer confirmation of an Order Edit. This would emit the event `order-edit.requested` which Notification Providers listen to and send a notification to the customer about the order edit. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order Edit. schema: type: string x-codegen: method: requestConfirmation x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orderEdits.requestConfirmation(orderEditId) .then({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRequestOrderEditConfirmation, } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const requestOrderConfirmation = useAdminRequestOrderEditConfirmation( orderEditId ) const handleRequestConfirmation = () => { requestOrderConfirmation.mutate(void 0, { onSuccess: ({ order_edit }) => { console.log( order_edit.requested_at, order_edit.requested_by ) } }) } // ... } export default OrderEdit - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/order-edits/{id}/request' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '500': $ref: '#/components/responses/500_error' /admin/orders: get: operationId: GetOrders summary: List Orders description: Retrieve a list of Orders. The orders can be filtered by fields such as `status` or `display_id`. The order can also be paginated. x-authenticated: true parameters: - in: query name: q description: term to search orders' shipping address, first name, email, and display ID schema: type: string - in: query name: id description: Filter by ID. schema: type: string - in: query name: status style: form explode: false description: Filter by status schema: type: array items: type: string enum: - pending - completed - archived - canceled - requires_action - in: query name: fulfillment_status style: form explode: false description: Filter by fulfillment status schema: type: array items: type: string enum: - not_fulfilled - fulfilled - partially_fulfilled - shipped - partially_shipped - canceled - returned - partially_returned - requires_action - in: query name: payment_status style: form explode: false description: Filter by payment status schema: type: array items: type: string enum: - captured - awaiting - not_paid - refunded - partially_refunded - canceled - requires_action - in: query name: display_id description: Filter by display ID schema: type: string - in: query name: cart_id description: Filter by cart ID schema: type: string - in: query name: customer_id description: Filter by customer ID schema: type: string - in: query name: email description: Filter by email schema: type: string - in: query name: region_id style: form explode: false description: Filter by region IDs. schema: oneOf: - type: string description: ID of a Region. - type: array items: type: string description: ID of a Region. - in: query name: currency_code style: form explode: false description: Filter by currency codes. schema: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. - in: query name: tax_rate description: Filter by tax rate. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: canceled_at description: Filter by a cancelation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: sales_channel_id style: form explode: false description: Filter by Sales Channel IDs schema: type: array items: type: string description: The ID of a Sales Channel - in: query name: offset description: The number of orders to skip when retrieving the orders. schema: type: integer default: 0 - in: query name: limit description: Limit the number of orders returned. schema: type: integer default: 50 - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string - in: query name: order description: Field to sort retrieved orders by. schema: type: string x-codegen: method: list queryParams: AdminGetOrdersParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.list() .then(({ orders, limit, offset, count }) => { console.log(orders.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminOrders } from "medusa-react" const Orders = () => { const { orders, isLoading } = useAdminOrders() return (
{isLoading && Loading...} {orders && !orders.length && No Orders} {orders && orders.length > 0 && ( )}
) } export default Orders - lang: Shell label: cURL source: | curl '{backend_url}/admin/orders' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}: get: operationId: GetOrdersOrder summary: Get an Order description: Retrieve an Order's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: retrieve queryParams: AdminGetOrdersOrderParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.retrieve(orderId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminOrder } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const { order, isLoading, } = useAdminOrder(orderId) return (
{isLoading && Loading...} {order && {order.display_id}}
) } export default Order - lang: Shell label: cURL source: | curl '{backend_url}/admin/orders/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostOrdersOrder summary: Update an Order description: Update and order's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderReq' x-codegen: method: update params: AdminPostOrdersOrderParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.update(orderId, { email: "user@example.com" }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateOrder } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const updateOrder = useAdminUpdateOrder( orderId ) const handleUpdate = ( email: string ) => { updateOrder.mutate({ email, }, { onSuccess: ({ order }) => { console.log(order.email) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/adasda' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/archive: post: operationId: PostOrdersOrderArchive summary: Archive Order description: Archive an order and change its status. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: archive params: AdminPostOrdersOrderArchiveParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.archive(orderId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminArchiveOrder } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const archiveOrder = useAdminArchiveOrder( orderId ) // ... const handleArchivingOrder = () => { archiveOrder.mutate(void 0, { onSuccess: ({ order }) => { console.log(order.status) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/archive' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/cancel: post: operationId: PostOrdersOrderCancel summary: Cancel an Order description: Cancel an order and change its status. This will also cancel any associated Fulfillments and Payments, and it may fail if the Payment or Fulfillment Provider is unable to cancel the Payment/Fulfillment. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: cancel params: AdminPostOrdersOrderCancel x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.cancel(orderId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelOrder } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const cancelOrder = useAdminCancelOrder( orderId ) // ... const handleCancel = () => { cancelOrder.mutate(void 0, { onSuccess: ({ order }) => { console.log(order.status) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/capture: post: operationId: PostOrdersOrderCapture summary: Capture an Order's Payments description: Capture all the Payments associated with an Order. The payment of canceled orders can't be captured. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: capturePayment params: AdminPostOrdersOrderCaptureParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.capturePayment(orderId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCapturePayment } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const capturePayment = useAdminCapturePayment( orderId ) // ... const handleCapture = () => { capturePayment.mutate(void 0, { onSuccess: ({ order }) => { console.log(order.status) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/capture' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/claims: post: operationId: PostOrdersOrderClaims summary: Create a Claim description: Create a Claim for an order. If a return shipping method is specified, a return will also be created and associated with the claim. If the claim's type is `refund`, the refund is processed as well. externalDocs: description: How are claims created url: https://docs.medusajs.com/modules/orders/claims#how-are-claims-created x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderClaimsReq' x-codegen: method: createClaim params: AdminPostOrdersOrderClaimsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.createClaim(orderId, { type: 'refund', claim_items: [ { item_id, quantity: 1 } ] }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateClaim } from "medusa-react" type Props = { orderId: string } const CreateClaim = ({ orderId }: Props) => { const CreateClaim = (orderId: string) => { const createClaim = useAdminCreateClaim(orderId) // ... const handleCreate = (itemId: string) => { createClaim.mutate({ type: "refund", claim_items: [ { item_id: itemId, quantity: 1, }, ], }, { onSuccess: ({ order }) => { console.log(order.claims) } }) } // ... } export default CreateClaim - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/claims' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "type": "refund", "claim_items": [ { "item_id": "asdsd", "quantity": 1 } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/claims/{claim_id}: post: operationId: PostOrdersOrderClaimsClaim summary: Update a Claim description: Update a Claim's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order associated with the claim. schema: type: string - in: path name: claim_id required: true description: The ID of the Claim. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderClaimsClaimReq' x-codegen: method: updateClaim params: AdminPostOrdersOrderClaimsClaimParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.updateClaim(orderId, claimId, { no_notification: true }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateClaim } from "medusa-react" type Props = { orderId: string claimId: string } const Claim = ({ orderId, claimId }: Props) => { const updateClaim = useAdminUpdateClaim(orderId) // ... const handleUpdate = () => { updateClaim.mutate({ claim_id: claimId, no_notification: false }, { onSuccess: ({ order }) => { console.log(order.claims) } }) } // ... } export default Claim - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/claims/{claim_id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "no_notification": true }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/claims/{claim_id}/cancel: post: operationId: PostOrdersClaimCancel summary: Cancel a Claim description: Cancel a Claim and change its status. A claim can't be canceled if it has a refund, if its fulfillments haven't been canceled, of if its associated return hasn't been canceled. x-authenticated: true externalDocs: description: Canceling a claim url: https://docs.medusajs.com/modules/orders/claims#cancel-a-claim parameters: - in: path name: id required: true description: The ID of the order the claim is associated with. schema: type: string - in: path name: claim_id required: true description: The ID of the Claim. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: cancelClaim params: AdminPostOrdersClaimCancel x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.cancelClaim(orderId, claimId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelClaim } from "medusa-react" type Props = { orderId: string claimId: string } const Claim = ({ orderId, claimId }: Props) => { const cancelClaim = useAdminCancelClaim(orderId) // ... const handleCancel = () => { cancelClaim.mutate(claimId) } // ... } export default Claim - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/claims/{claim_id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/claims/{claim_id}/fulfillments: post: operationId: PostOrdersOrderClaimsClaimFulfillments summary: Create a Claim Fulfillment description: Create a Fulfillment for a Claim, and change its fulfillment status to `partially_fulfilled` or `fulfilled` depending on whether all the items were fulfilled. It may also change the status to `requires_action` if any actions are required. x-authenticated: true externalDocs: description: Fulfill a claim url: https://docs.medusajs.com/modules/orders/claims#fulfill-a-claim parameters: - in: path name: id required: true description: The ID of the Order the claim is associated with. schema: type: string - in: path name: claim_id required: true description: The ID of the Claim. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderClaimsClaimFulfillmentsReq' x-codegen: method: fulfillClaim params: AdminPostOrdersOrderClaimsClaimFulfillmentsReq x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.fulfillClaim(orderId, claimId, { }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminFulfillClaim } from "medusa-react" type Props = { orderId: string claimId: string } const Claim = ({ orderId, claimId }: Props) => { const fulfillClaim = useAdminFulfillClaim(orderId) // ... const handleFulfill = () => { fulfillClaim.mutate({ claim_id: claimId, }, { onSuccess: ({ order }) => { console.log(order.claims) } }) } // ... } export default Claim - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/claims/{claim_id}/fulfillments' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel: post: operationId: PostOrdersClaimFulfillmentsCancel summary: Cancel Claim's Fulfillment description: Cancel a claim's fulfillment and change its fulfillment status to `canceled`. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the order the claim is associated with. schema: type: string - in: path name: claim_id required: true description: The ID of the claim. schema: type: string - in: path name: fulfillment_id required: true description: The ID of the fulfillment. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: cancelClaimFulfillment params: AdminPostOrdersClaimFulfillmentsCancelParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.cancelClaimFulfillment(orderId, claimId, fulfillmentId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelClaimFulfillment } from "medusa-react" type Props = { orderId: string claimId: string } const Claim = ({ orderId, claimId }: Props) => { const cancelFulfillment = useAdminCancelClaimFulfillment( orderId ) // ... const handleCancel = (fulfillmentId: string) => { cancelFulfillment.mutate({ claim_id: claimId, fulfillment_id: fulfillmentId, }, { onSuccess: ({ order }) => { console.log(order.claims) } }) } // ... } export default Claim - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/claims/{claim_id}/shipments: post: operationId: PostOrdersOrderClaimsClaimShipments summary: Ship a Claim's Fulfillment description: Create a shipment for the claim and mark its fulfillment as shipped. This changes the claim's fulfillment status to either `partially_shipped` or `shipped`, depending on whether all the items were shipped. x-authenticated: true externalDocs: description: Fulfill a claim url: https://docs.medusajs.com/modules/orders/claims#fulfill-a-claim parameters: - in: path name: id required: true description: The ID of the Order the claim is associated with. schema: type: string - in: path name: claim_id required: true description: The ID of the Claim. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderClaimsClaimShipmentsReq' x-codegen: method: createClaimShipment params: AdminPostOrdersOrderClaimsClaimShipmentsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.createClaimShipment(orderId, claimId, { fulfillment_id }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateClaimShipment } from "medusa-react" type Props = { orderId: string claimId: string } const Claim = ({ orderId, claimId }: Props) => { const createShipment = useAdminCreateClaimShipment(orderId) // ... const handleCreateShipment = (fulfillmentId: string) => { createShipment.mutate({ claim_id: claimId, fulfillment_id: fulfillmentId, }, { onSuccess: ({ order }) => { console.log(order.claims) } }) } // ... } export default Claim - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/claims/{claim_id}/shipments' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "fulfillment_id": "{fulfillment_id}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostOrdersOrderComplete summary: Complete an Order description: Complete an Order and change its status. A canceled order can't be completed. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: complete params: AdminPostOrdersOrderCompleteParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.complete(orderId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCompleteOrder } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const completeOrder = useAdminCompleteOrder( orderId ) // ... const handleComplete = () => { completeOrder.mutate(void 0, { onSuccess: ({ order }) => { console.log(order.status) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/complete' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/fulfillment: post: operationId: PostOrdersOrderFulfillments summary: Create a Fulfillment description: Create a Fulfillment of an Order using the fulfillment provider, and change the order's fulfillment status to either `partially_fulfilled` or `fulfilled`, depending on whether all the items were fulfilled. x-authenticated: true externalDocs: description: Fulfillments of orders url: https://docs.medusajs.com/modules/orders/#fulfillments-in-orders parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderFulfillmentsReq' x-codegen: method: createFulfillment params: AdminPostOrdersOrderFulfillmentsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.createFulfillment(orderId, { items: [ { item_id, quantity: 1 } ] }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateFulfillment } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const createFulfillment = useAdminCreateFulfillment( orderId ) // ... const handleCreateFulfillment = ( itemId: string, quantity: number ) => { createFulfillment.mutate({ items: [ { item_id: itemId, quantity, }, ], }, { onSuccess: ({ order }) => { console.log(order.fulfillments) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/fulfillment' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "items": [ { "item_id": "{item_id}", "quantity": 1 } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/fulfillments/{fulfillment_id}/cancel: post: operationId: PostOrdersOrderFulfillmentsCancel summary: Cancel a Fulfilmment description: Cancel an order's fulfillment and change its fulfillment status to `canceled`. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: path name: fulfillment_id required: true description: The ID of the Fulfillment. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: cancelFulfillment params: AdminPostOrdersOrderFulfillementsCancelParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.cancelFulfillment(orderId, fulfillmentId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelFulfillment } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const cancelFulfillment = useAdminCancelFulfillment( orderId ) // ... const handleCancel = ( fulfillmentId: string ) => { cancelFulfillment.mutate(fulfillmentId, { onSuccess: ({ order }) => { console.log(order.fulfillments) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/fulfillments/{fulfillment_id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/line-items/{line_item_id}/reserve: post: operationId: PostOrdersOrderLineItemReservations summary: Create a Reservation description: Create a Reservation for a line item at a specified location, optionally for a partial quantity. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: path name: line_item_id required: true description: The ID of the Line item. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminOrdersOrderLineItemReservationReq' x-codeSamples: - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/line-items/{line_item_id}/reserve' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "location_id": "loc_1" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPostReservationsReq' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/refund: post: operationId: PostOrdersOrderRefunds summary: Create a Refund description: Refund an amount for an order. The amount must be less than or equal the `refundable_amount` of the order. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderRefundsReq' x-codegen: method: refundPayment params: AdminPostOrdersOrderRefundsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.refundPayment(orderId, { amount: 1000, reason: "Do not like it" }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRefundPayment } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const refundPayment = useAdminRefundPayment( orderId ) // ... const handleRefund = ( amount: number, reason: string ) => { refundPayment.mutate({ amount, reason, }, { onSuccess: ({ order }) => { console.log(order.refunds) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/adasda/refund' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "amount": 1000, "reason": "Do not like it" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/reservations: get: operationId: GetOrdersOrderReservations summary: Get Order Reservations description: Retrieve the list of reservations of an Order x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: offset description: The number of reservations to skip when retrieving the reservations. schema: type: integer default: 0 - in: query name: limit description: Limit the number of reservations returned. schema: type: integer default: 20 x-codeSamples: - lang: Shell label: cURL source: | curl '{backend_url}/admin/orders/{id}/reservations' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReservationsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/return: post: operationId: PostOrdersOrderReturns summary: Request a Return description: Request and create a Return for items in an order. If the return shipping method is specified, it will be automatically fulfilled. x-authenticated: true externalDocs: description: Return creation process url: https://docs.medusajs.com/modules/orders/returns#returns-process parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderReturnsReq' x-codegen: method: requestReturn params: AdminPostOrdersOrderReturnsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.requestReturn(orderId, { items: [ { item_id, quantity: 1 } ] }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRequestReturn } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const requestReturn = useAdminRequestReturn( orderId ) // ... const handleRequestingReturn = ( itemId: string, quantity: number ) => { requestReturn.mutate({ items: [ { item_id: itemId, quantity } ] }, { onSuccess: ({ order }) => { console.log(order.returns) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/return' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "items": [ { "item_id": "{item_id}", "quantity": 1 } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/shipment: post: operationId: PostOrdersOrderShipment summary: Ship a Fulfillment description: Create a shipment and mark a fulfillment as shipped. This changes the order's fulfillment status to either `partially_shipped` or `shipped`, depending on whether all the items were shipped. x-authenticated: true externalDocs: description: Fulfillments of orders url: https://docs.medusajs.com/modules/orders/#fulfillments-in-orders parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderShipmentReq' x-codegen: method: createShipment params: AdminPostOrdersOrderShipmentParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.createShipment(order_id, { fulfillment_id }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateShipment } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const createShipment = useAdminCreateShipment( orderId ) // ... const handleCreate = ( fulfillmentId: string ) => { createShipment.mutate({ fulfillment_id: fulfillmentId, }, { onSuccess: ({ order }) => { console.log(order.fulfillment_status) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/shipment' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "fulfillment_id": "{fulfillment_id}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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-methods: post: operationId: PostOrdersOrderShippingMethods summary: Add a Shipping Method description: Add a Shipping Method to an Order. If another Shipping Method exists with the same Shipping Profile, the previous Shipping Method will be replaced. parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderShippingMethodsReq' x-authenticated: true x-codegen: method: addShippingMethod params: AdminPostOrdersOrderShippingMethodsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.addShippingMethod(orderId, { price: 1000, option_id }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddShippingMethod } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const addShippingMethod = useAdminAddShippingMethod( orderId ) // ... const handleAddShippingMethod = ( optionId: string, price: number ) => { addShippingMethod.mutate({ option_id: optionId, price }, { onSuccess: ({ order }) => { console.log(order.shipping_methods) } }) } // ... } export default Order - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/shipping-methods' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "price": 1000, "option_id": "{option_id}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/swaps: post: operationId: PostOrdersOrderSwaps summary: Create a Swap description: Create a Swap. This includes creating a return that is associated with the swap. x-authenticated: true externalDocs: description: How are swaps created url: https://docs.medusajs.com/modules/orders/swaps#how-are-swaps-created parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderSwapsReq' x-codegen: method: createSwap queryParams: AdminPostOrdersOrderSwapsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.createSwap(orderId, { return_items: [ { item_id, quantity: 1 } ] }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateSwap } from "medusa-react" type Props = { orderId: string } const CreateSwap = ({ orderId }: Props) => { const createSwap = useAdminCreateSwap(orderId) // ... const handleCreate = ( returnItems: { item_id: string, quantity: number }[] ) => { createSwap.mutate({ return_items: returnItems }, { onSuccess: ({ order }) => { console.log(order.swaps) } }) } // ... } export default CreateSwap - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/swaps' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "return_items": [ { "item_id": "asfasf", "quantity": 1 } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/swaps/{swap_id}/cancel: post: operationId: PostOrdersSwapCancel summary: Cancel a Swap description: Cancel a Swap and change its status. x-authenticated: true externalDocs: description: Canceling a swap url: https://docs.medusajs.com/modules/orders/swaps#canceling-a-swap parameters: - in: path name: id required: true description: The ID of the Order the swap is associated with. schema: type: string - in: path name: swap_id required: true description: The ID of the Swap. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: cancelSwap params: AdminPostOrdersSwapCancelParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.cancelSwap(orderId, swapId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelSwap } from "medusa-react" type Props = { orderId: string, swapId: string } const Swap = ({ orderId, swapId }: Props) => { const cancelSwap = useAdminCancelSwap( orderId ) // ... const handleCancel = () => { cancelSwap.mutate(swapId, { onSuccess: ({ order }) => { console.log(order.swaps) } }) } // ... } export default Swap - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{order_id}/swaps/{swap_id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/swaps/{swap_id}/fulfillments: post: operationId: PostOrdersOrderSwapsSwapFulfillments summary: Create a Swap Fulfillment description: Create a Fulfillment for a Swap and change its fulfillment status to `fulfilled`. If it requires any additional actions, its fulfillment status may change to `requires_action`. x-authenticated: true externalDocs: description: Handling a swap's fulfillment url: https://docs.medusajs.com/modules/orders/swaps#handling-swap-fulfillment parameters: - in: path name: id required: true description: The ID of the Order the swap is associated with. schema: type: string - in: path name: swap_id required: true description: The ID of the Swap. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderSwapsSwapFulfillmentsReq' x-codegen: method: fulfillSwap params: AdminPostOrdersOrderSwapsSwapFulfillmentsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.fulfillSwap(orderId, swapId, { }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminFulfillSwap } from "medusa-react" type Props = { orderId: string, swapId: string } const Swap = ({ orderId, swapId }: Props) => { const fulfillSwap = useAdminFulfillSwap( orderId ) // ... const handleFulfill = () => { fulfillSwap.mutate({ swap_id: swapId, }, { onSuccess: ({ order }) => { console.log(order.swaps) } }) } // ... } export default Swap - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/swaps/{swap_id}/fulfillments' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel: post: operationId: PostOrdersSwapFulfillmentsCancel summary: Cancel Swap's Fulfilmment description: Cancel a swap's fulfillment and change its fulfillment status to `canceled`. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the order the swap is associated with. schema: type: string - in: path name: swap_id required: true description: The ID of the swap. schema: type: string - in: path name: fulfillment_id required: true description: The ID of the fulfillment. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: cancelSwapFulfillment params: AdminPostOrdersSwapFulfillementsCancelParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.cancelSwapFulfillment(orderId, swapId, fulfillmentId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelSwapFulfillment } from "medusa-react" type Props = { orderId: string, swapId: string } const Swap = ({ orderId, swapId }: Props) => { const cancelFulfillment = useAdminCancelSwapFulfillment( orderId ) // ... const handleCancelFulfillment = ( fulfillmentId: string ) => { cancelFulfillment.mutate({ swap_id: swapId, fulfillment_id: fulfillmentId, }) } // ... } export default Swap - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/swaps/{swap_id}/process-payment: post: operationId: PostOrdersOrderSwapsSwapProcessPayment summary: Process a Swap Payment description: Process a swap's payment either by refunding or issuing a payment. This depends on the `difference_due` of the swap. If `difference_due` is negative, the amount is refunded. If `difference_due` is positive, the amount is captured. x-authenticated: true externalDocs: description: Handling a swap's payment url: https://docs.medusajs.com/modules/orders/swaps#handling-swap-payment parameters: - in: path name: id required: true description: The ID of the order the swap is associated with. schema: type: string - in: path name: swap_id required: true description: The ID of the swap. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string x-codegen: method: processSwapPayment params: AdminPostOrdersOrderSwapsSwapProcessPaymentParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.processSwapPayment(orderId, swapId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminProcessSwapPayment } from "medusa-react" type Props = { orderId: string, swapId: string } const Swap = ({ orderId, swapId }: Props) => { const processPayment = useAdminProcessSwapPayment( orderId ) // ... const handleProcessPayment = () => { processPayment.mutate(swapId, { onSuccess: ({ order }) => { console.log(order.swaps) } }) } // ... } export default Swap - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/swaps/{swap_id}/process-payment' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/swaps/{swap_id}/shipments: post: operationId: PostOrdersOrderSwapsSwapShipments summary: Ship a Swap's Fulfillment description: Create a shipment for a swap and mark its fulfillment as shipped. This changes the swap's fulfillment status to either `partially_shipped` or `shipped`, depending on whether all the items were shipped. x-authenticated: true externalDocs: description: Handling swap fulfillments url: https://docs.medusajs.com/modules/orders/swaps#handling-swap-fulfillment parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: path name: swap_id required: true description: The ID of the Swap. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned order. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned order. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostOrdersOrderSwapsSwapShipmentsReq' x-codegen: method: createSwapShipment params: AdminPostOrdersOrderSwapsSwapShipmentsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.orders.createSwapShipment(orderId, swapId, { fulfillment_id }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateSwapShipment } from "medusa-react" type Props = { orderId: string, swapId: string } const Swap = ({ orderId, swapId }: Props) => { const createShipment = useAdminCreateSwapShipment( orderId ) // ... const handleCreateShipment = ( fulfillmentId: string ) => { createShipment.mutate({ swap_id: swapId, fulfillment_id: fulfillmentId, }, { onSuccess: ({ order }) => { console.log(order.swaps) } }) } // ... } export default Swap - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/orders/{id}/swaps/{swap_id}/shipments' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "fulfillment_id": "{fulfillment_id}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/payment-collections/{id}: get: operationId: GetPaymentCollectionsPaymentCollection summary: Get a Payment Collection description: Retrieve a Payment Collection's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Payment Collection. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned payment collection. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned payment collection. schema: type: string x-codegen: method: retrieve queryParams: AdminGetPaymentCollectionsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.paymentCollections.retrieve(paymentCollectionId) .then(({ payment_collection }) => { console.log(payment_collection.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminPaymentCollection } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const { payment_collection, isLoading, } = useAdminPaymentCollection(paymentCollectionId) return (
{isLoading && Loading...} {payment_collection && ( {payment_collection.status} )}
) } export default PaymentCollection - lang: Shell label: cURL source: | curl '{backend_url}/admin/payment-collections/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPaymentCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostPaymentCollectionsPaymentCollection summary: Update Payment Collection description: Update a Payment Collection's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Payment Collection. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminUpdatePaymentCollectionsReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.paymentCollections.update(paymentCollectionId, { description }) .then(({ payment_collection }) => { console.log(payment_collection.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdatePaymentCollection } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const updateCollection = useAdminUpdatePaymentCollection( paymentCollectionId ) // ... const handleUpdate = ( description: string ) => { updateCollection.mutate({ description }, { onSuccess: ({ payment_collection }) => { console.log(payment_collection.description) } }) } // ... } export default PaymentCollection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/payment-collections/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "description": "Description of payment collection" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPaymentCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeletePaymentCollectionsPaymentCollection summary: Delete a Payment Collection description: Delete a Payment Collection. Only payment collections with the statuses `canceled` or `not_paid` can be deleted. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Payment Collection. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.paymentCollections.delete(paymentCollectionId) .then(({ id, object, deleted }) => { console.log(id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeletePaymentCollection } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const deleteCollection = useAdminDeletePaymentCollection( paymentCollectionId ) // ... const handleDelete = () => { deleteCollection.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default PaymentCollection - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/payment-collections/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPaymentCollectionDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' /admin/payment-collections/{id}/authorize: post: operationId: PostPaymentCollectionsPaymentCollectionAuthorize summary: Mark Authorized description: Set the status of a Payment Collection as `authorized`. This will also change the `authorized_amount` of the payment collection. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Payment Collection. schema: type: string x-codegen: method: markAsAuthorized x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.paymentCollections.markAsAuthorized(paymentCollectionId) .then(({ payment_collection }) => { console.log(payment_collection.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminMarkPaymentCollectionAsAuthorized } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const markAsAuthorized = useAdminMarkPaymentCollectionAsAuthorized( paymentCollectionId ) // ... const handleAuthorization = () => { markAsAuthorized.mutate(void 0, { onSuccess: ({ payment_collection }) => { console.log(payment_collection.status) } }) } // ... } export default PaymentCollection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/payment-collections/{id}/authorize' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPaymentCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: GetPaymentsPayment summary: Get Payment details description: Retrieve a Payment's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Payment. schema: type: string x-codegen: method: retrieve queryParams: GetPaymentsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.payments.retrieve(paymentId) .then(({ payment }) => { console.log(payment.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminPayment } from "medusa-react" type Props = { paymentId: string } const Payment = ({ paymentId }: Props) => { const { payment, isLoading, } = useAdminPayment(paymentId) return (
{isLoading && Loading...} {payment && {payment.amount}}
) } export default Payment - lang: Shell label: cURL source: | curl '{backend_url}/admin/payments/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Payments responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPaymentRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostPaymentsPaymentCapture summary: Capture a Payment description: Capture a Payment. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Payment. schema: type: string x-codegen: method: capturePayment x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.payments.capturePayment(paymentId) .then(({ payment }) => { console.log(payment.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminPaymentsCapturePayment } from "medusa-react" type Props = { paymentId: string } const Payment = ({ paymentId }: Props) => { const capture = useAdminPaymentsCapturePayment( paymentId ) // ... const handleCapture = () => { capture.mutate(void 0, { onSuccess: ({ payment }) => { console.log(payment.amount) } }) } // ... } export default Payment - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/payments/{id}/capture' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Payments responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPaymentRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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}/refund: post: operationId: PostPaymentsPaymentRefunds summary: Refund Payment description: Refund a payment. The payment must be captured first. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Payment. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostPaymentRefundsReq' x-codegen: method: refundPayment x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.payments.refundPayment(paymentId, { amount: 1000, reason: "return", note: "Do not like it", }) .then(({ payment }) => { console.log(payment.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { RefundReason } from "@medusajs/medusa" import { useAdminPaymentsRefundPayment } from "medusa-react" type Props = { paymentId: string } const Payment = ({ paymentId }: Props) => { const refund = useAdminPaymentsRefundPayment( paymentId ) // ... const handleRefund = ( amount: number, reason: RefundReason, note: string ) => { refund.mutate({ amount, reason, note }, { onSuccess: ({ refund }) => { console.log(refund.amount) } }) } // ... } export default Payment - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/payments/pay_123/refund' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "amount": 1000, "reason": "return", "note": "Do not like it" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Payments responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRefundRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 `q` or `status`. The price lists can also be sorted or paginated. x-authenticated: true parameters: - in: query name: limit description: Limit the number of price lists returned. schema: type: number default: '10' - in: query name: offset description: The number of price lists to skip when retrieving the price lists. schema: type: number default: '0' - in: query name: expand description: Comma-separated relations that should be expanded in the returned price lists. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned price lists. schema: type: string - in: query name: order description: A price-list field to sort-order the retrieved price lists by. schema: type: string - in: query name: id description: Filter by ID schema: type: string - in: query name: q description: term to search price lists' description, name, and customer group's name. schema: type: string - in: query name: status style: form explode: false description: Filter by status. schema: type: array items: type: string enum: - active - draft - in: query name: name description: Filter by name schema: type: string - in: query name: customer_groups style: form explode: false description: Filter by customer-group IDs. schema: type: array items: type: string - in: query name: type style: form explode: false description: Filter by type. schema: type: array items: type: string enum: - sale - override - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: AdminGetPriceListPaginationParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.list() .then(({ price_lists, limit, offset, count }) => { console.log(price_lists.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminPriceLists } from "medusa-react" const PriceLists = () => { const { price_lists, isLoading } = useAdminPriceLists() return (
{isLoading && Loading...} {price_lists && !price_lists.length && ( No Price Lists )} {price_lists && price_lists.length > 0 && ( )}
) } export default PriceLists - lang: Shell label: cURL source: | curl '{backend_url}/admin/price-lists' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostPriceListsPriceList summary: Create a Price List description: Create a Price List. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostPriceListsPriceListReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" import { PriceListType } from "@medusajs/medusa" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.create({ name: "New Price List", description: "A new price list", type: PriceListType.SALE, prices: [ { amount: 1000, variant_id, currency_code: "eur" } ] }) .then(({ price_list }) => { console.log(price_list.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { PriceListStatus, PriceListType, } from "@medusajs/medusa" import { useAdminCreatePriceList } from "medusa-react" type CreateData = { name: string description: string type: PriceListType status: PriceListStatus prices: { amount: number variant_id: string currency_code: string max_quantity: number }[] } const CreatePriceList = () => { const createPriceList = useAdminCreatePriceList() // ... const handleCreate = ( data: CreateData ) => { createPriceList.mutate(data, { onSuccess: ({ price_list }) => { console.log(price_list.id) } }) } // ... } export default CreatePriceList - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/price-lists' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "New Price List", "description": "A new price list", "type": "sale", "prices": [ { "amount": 1000, "variant_id": "afafa", "currency_code": "eur" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}: get: operationId: GetPriceListsPriceList summary: Get a Price List description: Retrieve a Price List's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Price List. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.retrieve(priceListId) .then(({ price_list }) => { console.log(price_list.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminPriceList } from "medusa-react" type Props = { priceListId: string } const PriceList = ({ priceListId }: Props) => { const { price_list, isLoading, } = useAdminPriceList(priceListId) return (
{isLoading && Loading...} {price_list && {price_list.name}}
) } export default PriceList - lang: Shell label: cURL source: | curl '{backend_url}/admin/price-lists/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostPriceListsPriceListPriceList summary: Update a Price List description: Update a Price List's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Price List. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostPriceListsPriceListPriceListReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.update(priceListId, { name: "New Price List" }) .then(({ price_list }) => { console.log(price_list.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdatePriceList } from "medusa-react" type Props = { priceListId: string } const PriceList = ({ priceListId }: Props) => { const updatePriceList = useAdminUpdatePriceList(priceListId) // ... const handleUpdate = ( endsAt: Date ) => { updatePriceList.mutate({ ends_at: endsAt, }, { onSuccess: ({ price_list }) => { console.log(price_list.ends_at) } }) } // ... } export default PriceList - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/price-lists/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "New Price List" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeletePriceListsPriceList summary: Delete a Price List description: Delete a Price List and its associated prices. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Price List. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.delete(priceListId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeletePriceList } from "medusa-react" type Props = { priceListId: string } const PriceList = ({ priceListId }: Props) => { const deletePriceList = useAdminDeletePriceList(priceListId) // ... const handleDelete = () => { deletePriceList.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default PriceList - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/price-lists/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/prices/batch: post: operationId: PostPriceListsPriceListPricesBatch summary: Add or Update Prices description: Add or update a list of prices in a Price List. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Price List. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostPriceListPricesPricesReq' x-codegen: method: addPrices x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.addPrices(priceListId, { prices: [ { amount: 1000, variant_id, currency_code: "eur" } ] }) .then(({ price_list }) => { console.log(price_list.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreatePriceListPrices } from "medusa-react" type PriceData = { amount: number variant_id: string currency_code: string } type Props = { priceListId: string } const PriceList = ({ priceListId }: Props) => { const addPrices = useAdminCreatePriceListPrices(priceListId) // ... const handleAddPrices = (prices: PriceData[]) => { addPrices.mutate({ prices }, { onSuccess: ({ price_list }) => { console.log(price_list.prices) } }) } // ... } export default PriceList - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/price-lists/{id}/prices/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "prices": [ { "amount": 100, "variant_id": "afasfa", "currency_code": "eur" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeletePriceListsPriceListPricesBatch summary: Delete Prices description: Delete a list of prices in a Price List x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Price List schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeletePriceListPricesPricesReq' x-codegen: method: deletePrices x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.deletePrices(priceListId, { price_ids: [ price_id ] }) .then(({ ids, object, deleted }) => { console.log(ids.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeletePriceListPrices } from "medusa-react" const PriceList = ( priceListId: string ) => { const deletePrices = useAdminDeletePriceListPrices(priceListId) // ... const handleDeletePrices = (priceIds: string[]) => { deletePrices.mutate({ price_ids: priceIds }, { onSuccess: ({ ids, deleted, object }) => { console.log(ids) } }) } // ... } export default PriceList - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/price-lists/{id}/prices/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "price_ids": [ "adasfa" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListDeleteBatchRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/products: get: operationId: GetPriceListsPriceListProducts summary: List Products description: Retrieve a price list's products. The products can be filtered by fields such as `q` or `status`. The products can also be sorted or paginated. x-authenticated: true parameters: - in: path name: id required: true description: ID of the price list. schema: type: string - in: query name: q description: term used to search products' title, description, product variant's title and sku, and product collection's title. schema: type: string - in: query name: id style: form explode: false description: Filter by product IDs. schema: oneOf: - type: string description: ID of the product. - type: array items: type: string description: ID of a product. - in: query name: status description: Filter by product status style: form explode: false schema: type: array items: type: string enum: - draft - proposed - published - rejected - in: query name: collection_id description: Filter by product collection ID. Only products in the specified collections are retrieved. style: form explode: false schema: type: array items: type: string - in: query name: tags description: Filter by tag IDs. Only products having the specified tags are retrieved. style: form explode: false schema: type: array items: type: string - in: query name: title description: Filter by title schema: type: string - in: query name: description description: Filter by description schema: type: string - in: query name: handle description: Filter by handle schema: type: string - in: query name: is_giftcard description: A boolean value to filter by whether the product is a gift card or not. schema: type: boolean - in: query name: type description: Filter product type. schema: type: string - in: query name: order description: A product field to sort-order the retrieved products by. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: offset description: The number of products to skip when retrieving the products. schema: type: integer default: 0 - in: query name: limit description: Limit the number of products returned. schema: type: integer default: 50 - in: query name: expand description: Comma-separated relations that should be expanded in the returned products. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned products. schema: type: string x-codegen: method: listProducts queryParams: AdminGetPriceListsPriceListProductsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.listProducts(priceListId) .then(({ products, limit, offset, count }) => { console.log(products.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminPriceListProducts } from "medusa-react" type Props = { priceListId: string } const PriceListProducts = ({ priceListId }: Props) => { const { products, isLoading } = useAdminPriceListProducts( priceListId ) return (
{isLoading && Loading...} {products && !products.length && ( No Price Lists )} {products && products.length > 0 && ( )}
) } export default PriceListProducts - lang: Shell label: cURL source: | curl '{backend_url}/admin/price-lists/{id}/products' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListsProductsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/products/prices/batch: delete: operationId: DeletePriceListsPriceListProductsPricesBatch summary: Delete Product Prices description: Delete all the prices associated with multiple products in a price list. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Price List schema: type: string x-codegen: method: deleteProductsPrices x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.deleteProductsPrices(priceListId, { product_ids: [ productId1, productId2, ] }) .then(({ ids, object, deleted }) => { console.log(ids.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeletePriceListProductsPrices } from "medusa-react" type Props = { priceListId: string } const PriceList = ({ priceListId }: Props) => { const deleteProductsPrices = useAdminDeletePriceListProductsPrices( priceListId ) // ... const handleDeleteProductsPrices = (productIds: string[]) => { deleteProductsPrices.mutate({ product_ids: productIds }, { onSuccess: ({ ids, deleted, object }) => { console.log(ids) } }) } // ... } export default PriceList - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/price-lists/{id}/products/prices/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_ids": [ "prod_1", "prod_2" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListDeleteProductPricesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/products/{product_id}/prices: delete: operationId: DeletePriceListsPriceListProductsProductPrices summary: Delete a Product's Prices description: Delete all the prices related to a specific product in a price list. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Price List. schema: type: string - in: path name: product_id required: true description: The ID of the product from which the prices will be deleted. schema: type: string x-codegen: method: deleteProductPrices x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.deleteProductPrices(priceListId, productId) .then(({ ids, object, deleted }) => { console.log(ids.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeletePriceListProductPrices } from "medusa-react" type Props = { priceListId: string productId: string } const PriceListProduct = ({ priceListId, productId }: Props) => { const deleteProductPrices = useAdminDeletePriceListProductPrices( priceListId, productId ) // ... const handleDeleteProductPrices = () => { deleteProductPrices.mutate(void 0, { onSuccess: ({ ids, deleted, object }) => { console.log(ids) } }) } // ... } export default PriceListProduct - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/price-lists/{id}/products/{product_id}/prices' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListDeleteProductPricesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/variants/{variant_id}/prices: delete: operationId: DeletePriceListsPriceListVariantsVariantPrices summary: Delete a Variant's Prices description: Delete all the prices related to a specific variant in a price list. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Price List. schema: type: string - in: path name: variant_id required: true description: The ID of the variant. schema: type: string x-codegen: method: deleteVariantPrices x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.priceLists.deleteVariantPrices(priceListId, variantId) .then(({ ids, object, deleted }) => { console.log(ids); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeletePriceListVariantPrices } from "medusa-react" type Props = { priceListId: string variantId: string } const PriceListVariant = ({ priceListId, variantId }: Props) => { const deleteVariantPrices = useAdminDeletePriceListVariantPrices( priceListId, variantId ) // ... const handleDeleteVariantPrices = () => { deleteVariantPrices.mutate(void 0, { onSuccess: ({ ids, deleted, object }) => { console.log(ids) } }) } // ... } export default PriceListVariant - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/price-lists/{id}/variants/{variant_id}/prices' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Price Lists responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPriceListDeleteVariantPricesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `q` or `handle`. The product categories can also be paginated. x-authenticated: true x-featureFlag: product_categories parameters: - in: query name: q description: term to search product categories' names and handles. schema: type: string - in: query name: handle description: Filter by handle. schema: type: string - in: query name: is_internal description: Filter by whether the category is internal or not. schema: type: boolean - in: query name: is_active description: Filter by whether the category is active or not. schema: type: boolean - in: query name: include_descendants_tree description: If set to `true`, all nested descendants of a category are included in the response. schema: type: boolean - in: query name: parent_category_id description: Filter by the ID of a parent category. schema: type: string - in: query name: offset description: The number of product categories to skip when retrieving the product categories. schema: type: integer default: 0 - in: query name: limit description: Limit the number of product categories returned. schema: type: integer default: 100 - in: query name: expand description: Comma-separated relations that should be expanded in the returned product categories. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned product categories. schema: type: string x-codegen: method: list queryParams: AdminGetProductCategoriesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productCategories.list() .then(({ product_categories, limit, offset, count }) => { console.log(product_categories.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminProductCategories } from "medusa-react" function Categories() { const { product_categories, isLoading } = useAdminProductCategories() return (
{isLoading && Loading...} {product_categories && !product_categories.length && ( No Categories )} {product_categories && product_categories.length > 0 && ( )}
) } export default Categories - lang: Shell label: cURL source: | curl '{backend_url}/admin/product-categories' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Categories responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductCategoriesListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Product Category description: Create a Product Category. x-authenticated: true x-featureFlag: product_categories parameters: - in: query name: expand description: Comma-separated relations that should be expanded in the returned product category. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned product category. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductCategoriesReq' x-codegen: method: create queryParams: AdminPostProductCategoriesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productCategories.create({ name: "Skinny Jeans", }) .then(({ product_category }) => { console.log(product_category.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateProductCategory } from "medusa-react" const CreateCategory = () => { const createCategory = useAdminCreateProductCategory() // ... const handleCreate = ( name: string ) => { createCategory.mutate({ name, }, { onSuccess: ({ product_category }) => { console.log(product_category.id) } }) } // ... } export default CreateCategory - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/product-categories' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Skinny Jeans" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Categories responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/product-categories/{id}: get: operationId: GetProductCategoriesCategory summary: Get a Product Category description: Retrieve a Product Category's details. x-authenticated: true x-featureFlag: product_categories parameters: - in: path name: id required: true description: The ID of the Product Category schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned product category. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned product category. schema: type: string x-codegen: method: retrieve queryParams: AdminGetProductCategoryParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productCategories.retrieve(productCategoryId) .then(({ product_category }) => { console.log(product_category.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminProductCategory } from "medusa-react" type Props = { productCategoryId: string } const Category = ({ productCategoryId }: Props) => { const { product_category, isLoading, } = useAdminProductCategory(productCategoryId) return (
{isLoading && Loading...} {product_category && ( {product_category.name} )}
) } export default Category - lang: Shell label: cURL source: | curl '{backend_url}/admin/product-categories/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Categories responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostProductCategoriesCategory summary: Update a Product Category description: Updates a Product Category. x-authenticated: true x-featureFlag: product_categories parameters: - in: path name: id required: true description: The ID of the Product Category. schema: type: string - in: query name: expand description: (Comma separated) Which fields should be expanded in each product category. schema: type: string - in: query name: fields description: (Comma separated) Which fields should be retrieved in each product category. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductCategoriesCategoryReq' x-codegen: method: update queryParams: AdminPostProductCategoriesCategoryParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productCategories.update(productCategoryId, { name: "Skinny Jeans" }) .then(({ product_category }) => { console.log(product_category.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateProductCategory } from "medusa-react" type Props = { productCategoryId: string } const Category = ({ productCategoryId }: Props) => { const updateCategory = useAdminUpdateProductCategory( productCategoryId ) // ... const handleUpdate = ( name: string ) => { updateCategory.mutate({ name, }, { onSuccess: ({ product_category }) => { console.log(product_category.id) } }) } // ... } export default Category - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/product-categories/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Skinny Jeans" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Categories responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteProductCategoriesCategory summary: Delete a Product Category description: Delete a Product Category. This does not delete associated products. x-authenticated: true x-featureFlag: product_categories parameters: - in: path name: id required: true description: The ID of the Product Category schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productCategories.delete(productCategoryId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteProductCategory } from "medusa-react" type Props = { productCategoryId: string } const Category = ({ productCategoryId }: Props) => { const deleteCategory = useAdminDeleteProductCategory( productCategoryId ) // ... const handleDelete = () => { deleteCategory.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default Category - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/product-categories/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Categories responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductCategoriesCategoryDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/product-categories/{id}/products/batch: post: operationId: PostProductCategoriesCategoryProductsBatch summary: Add Products to a Category description: Add a list of products to a product category. x-authenticated: true x-featureFlag: product_categories parameters: - in: path name: id required: true description: The ID of the Product Category. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned product category. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned product category. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductCategoriesCategoryProductsBatchReq' x-codegen: method: addProducts queryParams: AdminPostProductCategoriesCategoryProductsBatchParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productCategories.addProducts(productCategoryId, { product_ids: [ { id: productId } ] }) .then(({ product_category }) => { console.log(product_category.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddProductsToCategory } from "medusa-react" type ProductsData = { id: string } type Props = { productCategoryId: string } const Category = ({ productCategoryId }: Props) => { const addProducts = useAdminAddProductsToCategory( productCategoryId ) // ... const handleAddProducts = ( productIds: ProductsData[] ) => { addProducts.mutate({ product_ids: productIds }, { onSuccess: ({ product_category }) => { console.log(product_category.products) } }) } // ... } export default Category - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/product-categories/{id}/products/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_ids": [ { "id": "{product_id}" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Categories responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteProductCategoriesCategoryProductsBatch summary: Remove Products from Category description: Remove a list of products from a product category. x-authenticated: true x-featureFlag: product_categories parameters: - in: path name: id required: true description: The ID of the Product Category. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned product category. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned product category. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteProductCategoriesCategoryProductsBatchReq' x-codegen: method: removeProducts queryParams: AdminDeleteProductCategoriesCategoryProductsBatchParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productCategories.removeProducts(productCategoryId, { product_ids: [ { id: productId } ] }) .then(({ product_category }) => { console.log(product_category.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteProductsFromCategory } from "medusa-react" type ProductsData = { id: string } type Props = { productCategoryId: string } const Category = ({ productCategoryId }: Props) => { const deleteProducts = useAdminDeleteProductsFromCategory( productCategoryId ) // ... const handleDeleteProducts = ( productIds: ProductsData[] ) => { deleteProducts.mutate({ product_ids: productIds }, { onSuccess: ({ product_category }) => { console.log(product_category.products) } }) } // ... } export default Category - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/product-categories/{id}/products/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_ids": [ { "id": "{product_id}" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Categories responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `q` or `value`. The product tags can also be sorted or paginated. x-authenticated: true parameters: - in: query name: limit description: Limit the number of product tags returned. schema: type: integer default: 10 - in: query name: offset description: The number of product tags to skip when retrieving the product tags. schema: type: integer default: 0 - in: query name: order description: A product tag field to sort-order the retrieved product tags by. schema: type: string - in: query name: discount_condition_id description: Filter by the ID of a discount condition. Only product tags that this discount condition is applied to will be retrieved. schema: type: string - in: query name: value style: form explode: false description: Filter by tag value. schema: type: array items: type: string - in: query name: q description: term to search product tags' values. schema: type: string - in: query name: id style: form explode: false description: Filter by tag IDs. schema: type: array items: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: AdminGetProductTagsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productTags.list() .then(({ product_tags }) => { console.log(product_tags.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminProductTags } from "medusa-react" function ProductTags() { const { product_tags, isLoading } = useAdminProductTags() return (
{isLoading && Loading...} {product_tags && !product_tags.length && ( No Product Tags )} {product_tags && product_tags.length > 0 && ( )}
) } export default ProductTags - lang: Shell label: cURL source: | curl '{backend_url}/admin/product-tags' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Tags responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductTagsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `q` or `value`. The product types can also be sorted or paginated. x-authenticated: true parameters: - in: query name: limit description: Limit the number of product types returned. schema: type: integer default: 20 - in: query name: offset description: The number of product types to skip when retrieving the product types. schema: type: integer default: 0 - in: query name: order description: A product type field to sort-order the retrieved product types by. schema: type: string - in: query name: discount_condition_id description: Filter by the ID of a discount condition. Only product types that this discount condition is applied to will be retrieved. schema: type: string - in: query name: value style: form explode: false description: Filter by value. schema: type: array items: type: string - in: query name: id style: form explode: false description: Filter by product type IDs. schema: type: array items: type: string - in: query name: q description: term to search product types' values. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: AdminGetProductTypesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.productTypes.list() .then(({ product_types }) => { console.log(product_types.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminProductTypes } from "medusa-react" function ProductTypes() { const { product_types, isLoading } = useAdminProductTypes() return (
{isLoading && Loading...} {product_types && !product_types.length && ( No Product Tags )} {product_types && product_types.length > 0 && ( )}
) } export default ProductTypes - lang: Shell label: cURL source: | curl '{backend_url}/admin/product-types' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Types responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductTypesListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 `q` or `status`. The products can also be sorted or paginated. x-authenticated: true parameters: - in: query name: q description: term to search products' title, description, variants' title and sku, and collections' title. schema: type: string - in: query name: discount_condition_id description: Filter by the ID of a discount condition. Only products that this discount condition is applied to will be retrieved. schema: type: string - in: query name: id style: form explode: false description: Filter by product IDs. schema: oneOf: - type: string description: ID of the product. - type: array items: type: string description: ID of a product. - in: query name: status style: form explode: false description: Filter by status. schema: type: array items: type: string enum: - draft - proposed - published - rejected - in: query name: collection_id style: form explode: false description: Filter by product collection IDs. Only products that are associated with the specified collections will be retrieved. schema: type: array items: type: string - in: query name: tags style: form explode: false description: Filter by product tag IDs. Only products that are associated with the specified tags will be retrieved. schema: type: array items: type: string - in: query name: price_list_id style: form explode: false description: Filter by IDs of price lists. Only products that these price lists are applied to will be retrieved. schema: type: array items: type: string - in: query name: sales_channel_id style: form explode: false description: Filter by sales channel IDs. Only products that are available in the specified sales channels will be retrieved. schema: type: array items: type: string - in: query name: type_id style: form explode: false description: Filter by product type IDs. Only products that are associated with the specified types will be retrieved. schema: type: array items: type: string - in: query name: category_id style: form explode: false description: Filter by product category IDs. Only products that are associated with the specified categories will be retrieved. schema: type: array x-featureFlag: product_categories items: type: string - in: query name: include_category_children style: form explode: false description: whether to include product category children when filtering by `category_id` schema: type: boolean x-featureFlag: product_categories - in: query name: title description: Filter by title. schema: type: string - in: query name: description description: Filter by description. schema: type: string - in: query name: handle description: Filter by handle. schema: type: string - in: query name: is_giftcard description: Whether to retrieve gift cards or regular products. schema: type: boolean - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: offset description: The number of products to skip when retrieving the products. schema: type: integer default: 0 - in: query name: limit description: Limit the number of products returned. schema: type: integer default: 50 - in: query name: expand description: Comma-separated relations that should be expanded in the returned products. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned products. schema: type: string - in: query name: order description: A product field to sort-order the retrieved products by. schema: type: string x-codegen: method: list queryParams: AdminGetProductsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.list() .then(({ products, limit, offset, count }) => { console.log(products.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminProducts } from "medusa-react" const Products = () => { const { products, isLoading } = useAdminProducts() return (
{isLoading && Loading...} {products && !products.length && No Products} {products && products.length > 0 && ( )}
) } export default Products - lang: Shell label: cURL source: | curl '{backend_url}/admin/products' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Product x-authenticated: true description: Create a new Product. This API Route can also be used to create a gift card if the `is_giftcard` field is set to `true`. requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.create({ title: "Shirt", is_giftcard: false, discountable: true }) .then(({ product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateProduct } from "medusa-react" type CreateProductData = { title: string is_giftcard: boolean discountable: boolean options: { title: string }[] variants: { title: string prices: { amount: number currency_code :string }[] options: { value: string }[] }[], collection_id: string categories: { id: string }[] type: { value: string } tags: { value: string }[] } const CreateProduct = () => { const createProduct = useAdminCreateProduct() // ... const handleCreate = (productData: CreateProductData) => { createProduct.mutate(productData, { onSuccess: ({ product }) => { console.log(product.id) } }) } // ... } export default CreateProduct - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/products' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "Shirt" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/tag-usage: get: operationId: GetProductsTagUsage summary: List Tags Usage Number description: Retrieve a list of Product Tags with how many times each is used in products. x-authenticated: true x-codegen: method: listTags x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.listTags() .then(({ tags }) => { console.log(tags.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminProductTagUsage } from "medusa-react" const ProductTags = (productId: string) => { const { tags, isLoading } = useAdminProductTagUsage() return (
{isLoading && Loading...} {tags && !tags.length && No Product Tags} {tags && tags.length > 0 && ( )}
) } export default ProductTags - lang: Shell label: cURL source: | curl '{backend_url}/admin/products/tag-usage' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsListTagsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/types: get: deprecated: true operationId: GetProductsTypes summary: List Product Types description: Retrieve a list of Product Types. x-authenticated: true x-codegen: method: listTypes x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.listTypes() .then(({ types }) => { console.log(types.length); }) - lang: Shell label: cURL source: | curl '{backend_url}/admin/products/types' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsListTypesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}: get: operationId: GetProductsProduct summary: Get a Product description: Retrieve a Product's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.retrieve(productId) .then(({ product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminProduct } from "medusa-react" type Props = { productId: string } const Product = ({ productId }: Props) => { const { product, isLoading, } = useAdminProduct(productId) return (
{isLoading && Loading...} {product && {product.title}}
) } export default Product - lang: Shell label: cURL source: | curl '{backend_url}/admin/products/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostProductsProduct summary: Update a Product description: Update a Product's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductsProductReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.update(productId, { title: "Shirt", }) .then(({ product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateProduct } from "medusa-react" type Props = { productId: string } const Product = ({ productId }: Props) => { const updateProduct = useAdminUpdateProduct( productId ) // ... const handleUpdate = ( title: string ) => { updateProduct.mutate({ title, }, { onSuccess: ({ product }) => { console.log(product.id) } }) } // ... } export default Product - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/products/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "Size" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteProductsProduct summary: Delete a Product description: Delete a Product and its associated product variants and options. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.delete(productId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteProduct } from "medusa-react" type Props = { productId: string } const Product = ({ productId }: Props) => { const deleteProduct = useAdminDeleteProduct( productId ) // ... const handleDelete = () => { deleteProduct.mutate(void 0, { onSuccess: ({ id, object, deleted}) => { console.log(id) } }) } // ... } export default Product - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/products/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/metadata: post: operationId: PostProductsProductMetadata summary: Set Metadata description: Set the metadata of a Product. It can be any key-value pair, which allows adding custom data to a product. externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductsProductMetadataReq' x-codegen: method: setMetadata x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.setMetadata(productId, { key: "test", value: "true" }) .then(({ product }) => { console.log(product.id); }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/products/{id}/metadata' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "key": "test", "value": "true" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/options: post: operationId: PostProductsProductOptions summary: Add a Product Option description: Add a Product Option to a Product. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductsProductOptionsReq' x-codegen: method: addOption x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.addOption(productId, { title: "Size" }) .then(({ product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateProductOption } from "medusa-react" type Props = { productId: string } const CreateProductOption = ({ productId }: Props) => { const createOption = useAdminCreateProductOption( productId ) // ... const handleCreate = ( title: string ) => { createOption.mutate({ title }, { onSuccess: ({ product }) => { console.log(product.options) } }) } // ... } export default CreateProductOption - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/products/{id}/options' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "Size" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/options/{option_id}: post: operationId: PostProductsProductOptionsOption summary: Update a Product Option description: Update a Product Option's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string - in: path name: option_id required: true description: The ID of the Product Option. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductsProductOptionsOption' x-codegen: method: updateOption x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.updateOption(productId, optionId, { title: "Size" }) .then(({ product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateProductOption } from "medusa-react" type Props = { productId: string optionId: string } const ProductOption = ({ productId, optionId }: Props) => { const updateOption = useAdminUpdateProductOption( productId ) // ... const handleUpdate = ( title: string ) => { updateOption.mutate({ option_id: optionId, title, }, { onSuccess: ({ product }) => { console.log(product.options) } }) } // ... } export default ProductOption - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/products/{id}/options/{option_id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "Size" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteProductsProductOptionsOption summary: Delete a Product Option description: Delete a Product Option. If there are product variants that use this product option, they must be deleted before deleting the product option. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string - in: path name: option_id required: true description: The ID of the Product Option. schema: type: string x-codegen: method: deleteOption x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.deleteOption(productId, optionId) .then(({ option_id, object, deleted, product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteProductOption } from "medusa-react" type Props = { productId: string optionId: string } const ProductOption = ({ productId, optionId }: Props) => { const deleteOption = useAdminDeleteProductOption( productId ) // ... const handleDelete = () => { deleteOption.mutate(optionId, { onSuccess: ({ option_id, object, deleted, product }) => { console.log(product.options) } }) } // ... } export default ProductOption - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/products/{id}/options/{option_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsDeleteOptionRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/variants: get: operationId: GetProductsProductVariants summary: List a Product's Variants description: | Retrieve a list of Product Variants associated with a Product. The variants can be paginated. x-authenticated: true parameters: - in: path name: id required: true description: ID of the product. schema: type: string - in: query name: id description: IDs to filter product variants by. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned product variants. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned product variants. schema: type: string - in: query name: offset description: The number of product variants to skip when retrieving the product variants. schema: type: integer default: 0 - in: query name: limit description: Limit the number of product variants returned. schema: type: integer default: 100 - in: query name: q description: Search term to search product variants' title, sku, and products' title. schema: type: string - in: query name: 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 `-`. schema: type: string - in: query name: manage_inventory description: Filter product variants by whether their inventory is managed or not. schema: type: boolean - in: query name: allow_backorder description: Filter product variants by whether they are allowed to be backordered or not. schema: type: boolean - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: listVariants queryParams: AdminGetProductsVariantsParams x-codeSamples: - lang: Shell label: cURL source: | curl '{backend_url}/admin/products/{id}/variants' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsListVariantsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostProductsProductVariants summary: Create a Product Variant description: Create a Product Variant associated with a Product. Each product variant must have a unique combination of Product Option values. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductsProductVariantsReq' x-codegen: method: createVariant x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.createVariant(productId, { title: "Color", prices: [ { amount: 1000, currency_code: "eur" } ], options: [ { option_id, value: "S" } ], inventory_quantity: 100 }) .then(({ product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateVariant } from "medusa-react" type CreateVariantData = { title: string prices: { amount: number currency_code: string }[] options: { option_id: string value: string }[] } type Props = { productId: string } const CreateProductVariant = ({ productId }: Props) => { const createVariant = useAdminCreateVariant( productId ) // ... const handleCreate = ( variantData: CreateVariantData ) => { createVariant.mutate(variantData, { onSuccess: ({ product }) => { console.log(product.variants) } }) } // ... } export default CreateProductVariant - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/products/{id}/variants' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "Color", "prices": [ { "amount": 1000, "currency_code": "eur" } ], "options": [ { "option_id": "asdasf", "value": "S" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/{id}/variants/{variant_id}: post: operationId: PostProductsProductVariantsVariant summary: Update a Product Variant description: Update a Product Variant's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string - in: path name: variant_id required: true description: The ID of the Product Variant. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostProductsProductVariantsVariantReq' x-codegen: method: updateVariant x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.updateVariant(productId, variantId, { title: "Color", prices: [ { amount: 1000, currency_code: "eur" } ], options: [ { option_id, value: "S" } ], inventory_quantity: 100 }) .then(({ product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateVariant } from "medusa-react" type Props = { productId: string variantId: string } const ProductVariant = ({ productId, variantId }: Props) => { const updateVariant = useAdminUpdateVariant( productId ) // ... const handleUpdate = (title: string) => { updateVariant.mutate({ variant_id: variantId, title, }, { onSuccess: ({ product }) => { console.log(product.variants) } }) } // ... } export default ProductVariant - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/products/{id}/variants/{variant_id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "Color", "prices": [ { "amount": 1000, "currency_code": "eur" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteProductsProductVariantsVariant summary: Delete a Product Variant description: Delete a Product Variant. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string - in: path name: variant_id required: true description: The ID of the Product Variant. schema: type: string x-codegen: method: deleteVariant x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.products.deleteVariant(productId, variantId) .then(({ variant_id, object, deleted, product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteVariant } from "medusa-react" type Props = { productId: string variantId: string } const ProductVariant = ({ productId, variantId }: Props) => { const deleteVariant = useAdminDeleteVariant( productId ) // ... const handleDelete = () => { deleteVariant.mutate(variantId, { onSuccess: ({ variant_id, object, deleted, product }) => { console.log(product.variants) } }) } // ... } export default ProductVariant - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/products/{id}/variants/{variant_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminProductsDeleteVariantRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/publishable-api-keys: get: operationId: GetPublishableApiKeys summary: List Publishable API keys description: Retrieve a list of publishable API keys. The publishable API keys can be filtered by fields such as `q`. The publishable API keys can also be paginated. x-authenticated: true parameters: - in: query name: q description: term to search publishable API keys' titles. schema: type: string - in: query name: limit description: Limit the number of publishable API keys returned. schema: type: number default: '20' - in: query name: offset description: The number of publishable API keys to skip when retrieving the publishable API keys. schema: type: number default: '0' - in: query name: expand description: Comma-separated relations that should be expanded in the returned publishable API keys. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned publishable API keys. schema: type: string - in: query name: order description: A field to sort-order the retrieved publishable API keys by. schema: type: string - in: query name: created_at required: false description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at required: false description: Filter by a update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: revoked_at required: false description: Filter by a revocation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: GetPublishableApiKeysParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.list() .then(({ publishable_api_keys, count, limit, offset }) => { console.log(publishable_api_keys) }) - lang: tsx label: Medusa React source: | import React from "react" import { PublishableApiKey } from "@medusajs/medusa" import { useAdminPublishableApiKeys } from "medusa-react" const PublishableApiKeys = () => { const { publishable_api_keys, isLoading } = useAdminPublishableApiKeys() return (
{isLoading && Loading...} {publishable_api_keys && !publishable_api_keys.length && ( No Publishable API Keys )} {publishable_api_keys && publishable_api_keys.length > 0 && ( )}
) } export default PublishableApiKeys - lang: Shell label: cURL source: | curl '{backend_url}/admin/publishable-api-keys' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeysListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostPublishableApiKeys summary: Create Publishable API Key description: Create a Publishable API Key. requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostPublishableApiKeysReq' x-authenticated: true x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.create({ title }) .then(({ publishable_api_key }) => { console.log(publishable_api_key.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreatePublishableApiKey } from "medusa-react" const CreatePublishableApiKey = () => { const createKey = useAdminCreatePublishableApiKey() // ... const handleCreate = (title: string) => { createKey.mutate({ title, }, { onSuccess: ({ publishable_api_key }) => { console.log(publishable_api_key.id) } }) } // ... } export default CreatePublishableApiKey - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/publishable-api-keys' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "Web API Key" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeysRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/publishable-api-keys/{id}: get: operationId: GetPublishableApiKeysPublishableApiKey summary: Get a Publishable API Key description: Retrieve a publishable API key's details. parameters: - in: path name: id required: true description: The ID of the Publishable API Key. schema: type: string x-authenticated: true x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.retrieve(publishableApiKeyId) .then(({ publishable_api_key }) => { console.log(publishable_api_key.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminPublishableApiKey, } from "medusa-react" type Props = { publishableApiKeyId: string } const PublishableApiKey = ({ publishableApiKeyId }: Props) => { const { publishable_api_key, isLoading } = useAdminPublishableApiKey( publishableApiKeyId ) return (
{isLoading && Loading...} {publishable_api_key && {publishable_api_key.title}}
) } export default PublishableApiKey - lang: Shell label: cURL source: | curl '{backend_url}/admin/publishable-api-keys/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeysRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostPublishableApiKysPublishableApiKey summary: Update Publishable API Key description: Update a Publishable API Key's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Publishable API Key. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostPublishableApiKeysPublishableApiKeyReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.update(publishableApiKeyId, { title: "new title" }) .then(({ publishable_api_key }) => { console.log(publishable_api_key.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdatePublishableApiKey } from "medusa-react" type Props = { publishableApiKeyId: string } const PublishableApiKey = ({ publishableApiKeyId }: Props) => { const updateKey = useAdminUpdatePublishableApiKey( publishableApiKeyId ) // ... const handleUpdate = (title: string) => { updateKey.mutate({ title, }, { onSuccess: ({ publishable_api_key }) => { console.log(publishable_api_key.id) } }) } // ... } export default PublishableApiKey - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/publishable-api-key/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "title": "new title" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeysRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeletePublishableApiKeysPublishableApiKey summary: Delete Publishable API Key description: Delete a Publishable API Key. Associated resources, such as sales channels, are not deleted. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Publishable API Key to delete. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.delete(publishableApiKeyId) .then(({ id, object, deleted }) => { console.log(id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeletePublishableApiKey } from "medusa-react" type Props = { publishableApiKeyId: string } const PublishableApiKey = ({ publishableApiKeyId }: Props) => { const deleteKey = useAdminDeletePublishableApiKey( publishableApiKeyId ) // ... const handleDelete = () => { deleteKey.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default PublishableApiKey - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/publishable-api-key/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeyDeleteRes' '400': $ref: '#/components/responses/400_error' /admin/publishable-api-keys/{id}/revoke: post: operationId: PostPublishableApiKeysPublishableApiKeyRevoke summary: Revoke a Publishable API Key description: Revoke a Publishable API Key. Revoking the publishable API Key can't be undone, and the key can't be used in future requests. parameters: - in: path name: id required: true description: The ID of the Publishable API Key. schema: type: string x-authenticated: true x-codegen: method: revoke x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.revoke(publishableApiKeyId) .then(({ publishable_api_key }) => { console.log(publishable_api_key.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRevokePublishableApiKey } from "medusa-react" type Props = { publishableApiKeyId: string } const PublishableApiKey = ({ publishableApiKeyId }: Props) => { const revokeKey = useAdminRevokePublishableApiKey( publishableApiKeyId ) // ... const handleRevoke = () => { revokeKey.mutate(void 0, { onSuccess: ({ publishable_api_key }) => { console.log(publishable_api_key.revoked_at) } }) } // ... } export default PublishableApiKey - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/publishable-api-keys/{id}/revoke' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeysRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/publishable-api-keys/{id}/sales-channels: get: operationId: GetPublishableApiKeySalesChannels summary: List Sales Channels description: List the sales channels associated with a publishable API key. The sales channels can be filtered by fields such as `q`. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the publishable API key. schema: type: string - in: query name: q description: query to search sales channels' names and descriptions. schema: type: string x-codegen: method: listSalesChannels queryParams: GetPublishableApiKeySalesChannelsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.listSalesChannels() .then(({ sales_channels }) => { console.log(sales_channels.length) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminPublishableApiKeySalesChannels, } from "medusa-react" type Props = { publishableApiKeyId: string } const SalesChannels = ({ publishableApiKeyId }: Props) => { const { sales_channels, isLoading } = useAdminPublishableApiKeySalesChannels( publishableApiKeyId ) return (
{isLoading && Loading...} {sales_channels && !sales_channels.length && ( No Sales Channels )} {sales_channels && sales_channels.length > 0 && ( )}
) } export default SalesChannels - lang: Shell label: cURL source: | curl '{backend_url}/admin/publishable-api-keys/{id}/sales-channels' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeysListSalesChannelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/publishable-api-keys/{id}/sales-channels/batch: post: operationId: PostPublishableApiKeySalesChannelsChannelsBatch summary: Add Sales Channels description: Add a list of sales channels to a publishable API key. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Publishable Api Key. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostPublishableApiKeySalesChannelsBatchReq' x-codegen: method: addSalesChannelsBatch x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.addSalesChannelsBatch(publishableApiKeyId, { sales_channel_ids: [ { id: channelId } ] }) .then(({ publishable_api_key }) => { console.log(publishable_api_key.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddPublishableKeySalesChannelsBatch, } from "medusa-react" type Props = { publishableApiKeyId: string } const PublishableApiKey = ({ publishableApiKeyId }: Props) => { const addSalesChannels = useAdminAddPublishableKeySalesChannelsBatch( publishableApiKeyId ) // ... const handleAdd = (salesChannelId: string) => { addSalesChannels.mutate({ sales_channel_ids: [ { id: salesChannelId, }, ], }, { onSuccess: ({ publishable_api_key }) => { console.log(publishable_api_key.id) } }) } // ... } export default PublishableApiKey - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/publishable-api-keys/{pak_id}/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "sales_channel_ids": [ { "id": "{sales_channel_id}" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeysRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeletePublishableApiKeySalesChannelsChannelsBatch summary: Remove Sales Channels description: Remove a list of sales channels from a publishable API key. This doesn't delete the sales channels and only removes the association between them and the publishable API key. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Publishable API Key. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeletePublishableApiKeySalesChannelsBatchReq' x-codegen: method: deleteSalesChannelsBatch x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.publishableApiKeys.deleteSalesChannelsBatch(publishableApiKeyId, { sales_channel_ids: [ { id: channelId } ] }) .then(({ publishable_api_key }) => { console.log(publishable_api_key.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRemovePublishableKeySalesChannelsBatch, } from "medusa-react" type Props = { publishableApiKeyId: string } const PublishableApiKey = ({ publishableApiKeyId }: Props) => { const deleteSalesChannels = useAdminRemovePublishableKeySalesChannelsBatch( publishableApiKeyId ) // ... const handleDelete = (salesChannelId: string) => { deleteSalesChannels.mutate({ sales_channel_ids: [ { id: salesChannelId, }, ], }, { onSuccess: ({ publishable_api_key }) => { console.log(publishable_api_key.id) } }) } // ... } export default PublishableApiKey - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/publishable-api-keys/{id}/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "sales_channel_ids": [ { "id": "{sales_channel_id}" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Publishable Api Keys responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPublishableApiKeysRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions: get: operationId: GetRegions summary: List Regions description: Retrieve a list of Regions. The regions can be filtered by fields such as `created_at`. The regions can also be paginated. x-authenticated: true parameters: - in: query name: q description: Term used to search regions' name. schema: type: string - in: query name: order description: A field to sort-order the retrieved regions by. schema: type: string - in: query name: limit schema: type: integer default: 50 required: false description: Limit the number of regions returned. - in: query name: offset schema: type: integer default: 0 required: false description: The number of regions to skip when retrieving the regions. - in: query name: created_at required: false description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at required: false description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at required: false description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date x-codegen: method: list queryParams: AdminGetRegionsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.list() .then(({ regions, limit, offset, count }) => { console.log(regions.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegions } from "medusa-react" const Regions = () => { const { regions, isLoading } = useAdminRegions() return (
{isLoading && Loading...} {regions && !regions.length && No Regions} {regions && regions.length > 0 && ( )}
) } export default Regions - lang: Shell label: cURL source: | curl '{backend_url}/admin/regions' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Region description: Create a Region. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostRegionsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.create({ name: "Europe", currency_code: "eur", tax_rate: 0, payment_providers: [ "manual" ], fulfillment_providers: [ "manual" ], countries: [ "DK" ] }) .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateRegion } from "medusa-react" type CreateData = { name: string currency_code: string tax_rate: number payment_providers: string[] fulfillment_providers: string[] countries: string[] } const CreateRegion = () => { const createRegion = useAdminCreateRegion() // ... const handleCreate = (regionData: CreateData) => { createRegion.mutate(regionData, { onSuccess: ({ region }) => { console.log(region.id) } }) } // ... } export default CreateRegion - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/regions' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Europe", "currency_code": "eur", "tax_rate": 0, "payment_providers": [ "manual" ], "fulfillment_providers": [ "manual" ], "countries": [ "DK" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions/{id}: get: operationId: GetRegionsRegion summary: Get a Region description: Retrieve a Region's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.retrieve(regionId) .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegion } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const { region, isLoading } = useAdminRegion( regionId ) return (
{isLoading && Loading...} {region && {region.name}}
) } export default Region - lang: Shell label: cURL source: | curl '{backend_url}/admin/regions/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostRegionsRegion summary: Update a Region description: Update a Region's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostRegionsRegionReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.update(regionId, { name: "Europe" }) .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateRegion } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const updateRegion = useAdminUpdateRegion(regionId) // ... const handleUpdate = ( countries: string[] ) => { updateRegion.mutate({ countries, }, { onSuccess: ({ region }) => { console.log(region.id) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/regions/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Europe" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteRegionsRegion summary: Delete a Region description: Delete a Region. Associated resources, such as providers or currencies are not deleted. Associated tax rates are deleted. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.delete(regionId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteRegion } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const deleteRegion = useAdminDeleteRegion(regionId) // ... const handleDelete = () => { deleteRegion.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/regions/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions/{id}/countries: post: operationId: PostRegionsRegionCountries summary: Add Country description: Add a Country to the list of Countries in a Region. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostRegionsRegionCountriesReq' x-codegen: method: addCountry x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.addCountry(regionId, { country_code: "dk" }) .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegionAddCountry } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const addCountry = useAdminRegionAddCountry(regionId) // ... const handleAddCountry = ( countryCode: string ) => { addCountry.mutate({ country_code: countryCode }, { onSuccess: ({ region }) => { console.log(region.countries) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/regions/{region_id}/countries' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "country_code": "dk" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions/{id}/countries/{country_code}: delete: operationId: PostRegionsRegionCountriesCountry summary: Remove Country x-authenticated: true description: Remove a Country from the list of Countries in a Region. The country will still be available in the system, and it can be used in other regions. parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string - in: path name: country_code description: The 2 character ISO code for the Country. required: true schema: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. x-codegen: method: deleteCountry x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.deleteCountry(regionId, "dk") .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegionRemoveCountry } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const removeCountry = useAdminRegionRemoveCountry(regionId) // ... const handleRemoveCountry = ( countryCode: string ) => { removeCountry.mutate(countryCode, { onSuccess: ({ region }) => { console.log(region.countries) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/regions/{id}/countries/{country_code}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions/{id}/fulfillment-options: get: operationId: GetRegionsRegionFulfillmentOptions summary: List Fulfillment Options description: Retrieve a list of fulfillment options available in a Region. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string x-codegen: method: retrieveFulfillmentOptions x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.retrieveFulfillmentOptions(regionId) .then(({ fulfillment_options }) => { console.log(fulfillment_options.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegionFulfillmentOptions } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const { fulfillment_options, isLoading } = useAdminRegionFulfillmentOptions( regionId ) return (
{isLoading && Loading...} {fulfillment_options && !fulfillment_options.length && ( No Regions )} {fulfillment_options && fulfillment_options.length > 0 && ( )}
) } export default Region - lang: Shell label: cURL source: | curl '{backend_url}/admin/regions/{id}/fulfillment-options' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminGetRegionsRegionFulfillmentOptionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions/{id}/fulfillment-providers: post: operationId: PostRegionsRegionFulfillmentProviders summary: Add Fulfillment Provider description: Add a Fulfillment Provider to the list of fulfullment providers in a Region. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostRegionsRegionFulfillmentProvidersReq' x-codegen: method: addFulfillmentProvider x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.addFulfillmentProvider(regionId, { provider_id: "manual" }) .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegionAddFulfillmentProvider } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const addFulfillmentProvider = useAdminRegionAddFulfillmentProvider(regionId) // ... const handleAddFulfillmentProvider = ( providerId: string ) => { addFulfillmentProvider.mutate({ provider_id: providerId }, { onSuccess: ({ region }) => { console.log(region.fulfillment_providers) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/regions/{id}/fulfillment-providers' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "provider_id": "manual" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions/{id}/fulfillment-providers/{provider_id}: delete: operationId: PostRegionsRegionFulfillmentProvidersProvider summary: Remove Fulfillment Provider description: Remove a Fulfillment Provider from a Region. The fulfillment provider will still be available for usage in other regions. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string - in: path name: provider_id required: true description: The ID of the Fulfillment Provider. schema: type: string x-codegen: method: deleteFulfillmentProvider x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.deleteFulfillmentProvider(regionId, "manual") .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegionDeleteFulfillmentProvider } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const removeFulfillmentProvider = useAdminRegionDeleteFulfillmentProvider(regionId) // ... const handleRemoveFulfillmentProvider = ( providerId: string ) => { removeFulfillmentProvider.mutate(providerId, { onSuccess: ({ region }) => { console.log(region.fulfillment_providers) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/regions/{id}/fulfillment-providers/{provider_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions/{id}/payment-providers: post: operationId: PostRegionsRegionPaymentProviders summary: Add Payment Provider description: Add a Payment Provider to the list of payment providers in a Region. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostRegionsRegionPaymentProvidersReq' x-codegen: method: addPaymentProvider x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.addPaymentProvider(regionId, { provider_id: "manual" }) .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegionAddPaymentProvider } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const addPaymentProvider = useAdminRegionAddPaymentProvider(regionId) // ... const handleAddPaymentProvider = ( providerId: string ) => { addPaymentProvider.mutate({ provider_id: providerId }, { onSuccess: ({ region }) => { console.log(region.payment_providers) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/regions/{id}/payment-providers' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "provider_id": "manual" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/regions/{id}/payment-providers/{provider_id}: delete: operationId: PostRegionsRegionPaymentProvidersProvider summary: Remove Payment Provider description: Remove a Payment Provider from a Region. The payment provider will still be available for usage in other regions. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Region. schema: type: string - in: path name: provider_id required: true description: The ID of the Payment Provider. schema: type: string x-codegen: method: deletePaymentProvider x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.regions.deletePaymentProvider(regionId, "manual") .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRegionDeletePaymentProvider } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const removePaymentProvider = useAdminRegionDeletePaymentProvider(regionId) // ... const handleRemovePaymentProvider = ( providerId: string ) => { removePaymentProvider.mutate(providerId, { onSuccess: ({ region }) => { console.log(region.payment_providers) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/regions/{id}/payment-providers/{provider_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminRegionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/reservations: get: operationId: GetReservations summary: List Reservations description: Retrieve a list of Reservations. The reservations can be filtered by fields such as `location_id` or `quantity`. The reservations can also be paginated. x-authenticated: true parameters: - in: query name: location_id style: form explode: false description: Filter by location ID schema: type: array items: type: string - in: query name: inventory_item_id style: form explode: false description: Filter by inventory item ID. schema: type: array items: type: string - in: query name: line_item_id style: form explode: false description: Filter by line item ID. schema: type: array items: type: string - in: query name: quantity description: Filter by reservation quantity schema: type: object properties: lt: type: number description: filter by reservation quantity less than this number gt: type: number description: filter by reservation quantity greater than this number lte: type: number description: filter by reservation quantity less than or equal to this number gte: type: number description: filter by reservation quantity greater than or equal to this number - in: query name: description description: Filter by description. schema: oneOf: - type: string description: description value to filter by. - type: object properties: contains: type: string description: filter by reservation description containing search string. starts_with: type: string description: filter by reservation description starting with search string. ends_with: type: string description: filter by reservation description ending with search string. - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: offset description: The number of reservations to skip when retrieving the reservations. schema: type: integer default: 0 - in: query name: limit description: Limit the number of reservations returned. schema: type: integer default: 20 - in: query name: expand description: Comma-separated relations that should be expanded in the returned reservations. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned reservations. schema: type: string x-codegen: method: list queryParams: AdminGetReservationsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.reservations.list() .then(({ reservations, count, limit, offset }) => { console.log(reservations.length) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminReservations } from "medusa-react" const Reservations = () => { const { reservations, isLoading } = useAdminReservations() return (
{isLoading && Loading...} {reservations && !reservations.length && ( No Reservations )} {reservations && reservations.length > 0 && ( )}
) } export default Reservations - lang: Shell label: cURL source: | curl '{backend_url}/admin/product-categories' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Reservations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReservationsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Reservation description: Create a Reservation which can be associated with any resource, such as an order's line item. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostReservationsReq' x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.reservations.create({ line_item_id: "item_123", location_id: "loc_123", inventory_item_id: "iitem_123", quantity: 1 }) .then(({ reservation }) => { console.log(reservation.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateReservation } from "medusa-react" const CreateReservation = () => { const createReservation = useAdminCreateReservation() // ... const handleCreate = ( locationId: string, inventoryItemId: string, quantity: number ) => { createReservation.mutate({ location_id: locationId, inventory_item_id: inventoryItemId, quantity, }, { onSuccess: ({ reservation }) => { console.log(reservation.id) } }) } // ... } export default CreateReservation - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/reservations' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "line_item_id": "item_123", "location_id": "loc_123", "inventory_item_id": "iitem_123", "quantity": 1 }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Reservations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReservationsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/reservations/{id}: get: operationId: GetReservationsReservation summary: Get a Reservation description: Retrieve a reservation's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the reservation. schema: type: string x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.reservations.retrieve(reservationId) .then(({ reservation }) => { console.log(reservation.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminReservation } from "medusa-react" type Props = { reservationId: string } const Reservation = ({ reservationId }: Props) => { const { reservation, isLoading } = useAdminReservation( reservationId ) return (
{isLoading && Loading...} {reservation && {reservation.inventory_item_id}}
) } export default Reservation - lang: Shell label: cURL source: | curl '{backend_url}/admin/reservations/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Reservations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReservationsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostReservationsReservation summary: Update a Reservation description: Update a Reservation's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Reservation. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostReservationsReservationReq' x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.reservations.update(reservationId, { quantity: 3 }) .then(({ reservation }) => { console.log(reservation.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateReservation } from "medusa-react" type Props = { reservationId: string } const Reservation = ({ reservationId }: Props) => { const updateReservation = useAdminUpdateReservation( reservationId ) // ... const handleUpdate = ( quantity: number ) => { updateReservation.mutate({ quantity, }) } // ... } export default Reservation - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/reservations/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "quantity": 3, }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Reservations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReservationsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteReservationsReservation summary: Delete a Reservation description: Delete a Reservation. Associated resources, such as the line item, will not be deleted. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Reservation to delete. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.reservations.delete(reservationId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteReservation } from "medusa-react" type Props = { reservationId: string } const Reservation = ({ reservationId }: Props) => { const deleteReservation = useAdminDeleteReservation( reservationId ) // ... const handleDelete = () => { deleteReservation.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default Reservation - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/reservations/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Reservations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReservationsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/return-reasons: get: operationId: GetReturnReasons summary: List Return Reasons description: Retrieve a list of Return Reasons. x-authenticated: true x-codegen: method: list x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.returnReasons.list() .then(({ return_reasons }) => { console.log(return_reasons.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminReturnReasons } from "medusa-react" const ReturnReasons = () => { const { return_reasons, isLoading } = useAdminReturnReasons() return (
{isLoading && Loading...} {return_reasons && !return_reasons.length && ( No Return Reasons )} {return_reasons && return_reasons.length > 0 && ( )}
) } export default ReturnReasons - lang: Shell label: cURL source: | curl '{backend_url}/admin/return-reasons' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Return Reasons responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReturnReasonsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Return Reason description: Create a Return Reason. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostReturnReasonsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.returnReasons.create({ label: "Damaged", value: "damaged" }) .then(({ return_reason }) => { console.log(return_reason.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateReturnReason } from "medusa-react" const CreateReturnReason = () => { const createReturnReason = useAdminCreateReturnReason() // ... const handleCreate = ( label: string, value: string ) => { createReturnReason.mutate({ label, value, }, { onSuccess: ({ return_reason }) => { console.log(return_reason.id) } }) } // ... } export default CreateReturnReason - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/return-reasons' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "label": "Damaged", "value": "damaged" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Return Reasons responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReturnReasonsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/return-reasons/{id}: get: operationId: GetReturnReasonsReason summary: Get a Return Reason description: Retrieve a Return Reason's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Return Reason. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.returnReasons.retrieve(returnReasonId) .then(({ return_reason }) => { console.log(return_reason.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminReturnReason } from "medusa-react" type Props = { returnReasonId: string } const ReturnReason = ({ returnReasonId }: Props) => { const { return_reason, isLoading } = useAdminReturnReason( returnReasonId ) return (
{isLoading && Loading...} {return_reason && {return_reason.label}}
) } export default ReturnReason - lang: Shell label: cURL source: | curl '{backend_url}/admin/return-reasons/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Return Reasons responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReturnReasonsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostReturnReasonsReason summary: Update a Return Reason description: Update a Return Reason's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Return Reason. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostReturnReasonsReasonReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.returnReasons.update(returnReasonId, { label: "Damaged" }) .then(({ return_reason }) => { console.log(return_reason.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateReturnReason } from "medusa-react" type Props = { returnReasonId: string } const ReturnReason = ({ returnReasonId }: Props) => { const updateReturnReason = useAdminUpdateReturnReason( returnReasonId ) // ... const handleUpdate = ( label: string ) => { updateReturnReason.mutate({ label, }, { onSuccess: ({ return_reason }) => { console.log(return_reason.label) } }) } // ... } export default ReturnReason - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/return-reasons/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "label": "Damaged" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Return Reasons responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReturnReasonsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteReturnReason summary: Delete a Return Reason description: Delete a return reason. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the return reason schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.returnReasons.delete(returnReasonId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteReturnReason } from "medusa-react" type Props = { returnReasonId: string } const ReturnReason = ({ returnReasonId }: Props) => { const deleteReturnReason = useAdminDeleteReturnReason( returnReasonId ) // ... const handleDelete = () => { deleteReturnReason.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default ReturnReason - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/return-reasons/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Return Reasons responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReturnReasonsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/returns: get: operationId: GetReturns summary: List Returns description: Retrieve a list of Returns. The returns can be paginated. parameters: - in: query name: limit description: Limit the number of Returns returned. schema: type: number default: '50' - in: query name: offset description: The number of Returns to skip when retrieving the Returns. schema: type: number default: '0' x-codegen: method: list queryParams: AdminGetReturnsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.returns.list() .then(({ returns, limit, offset, count }) => { console.log(returns.length) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminReturns } from "medusa-react" const Returns = () => { const { returns, isLoading } = useAdminReturns() return (
{isLoading && Loading...} {returns && !returns.length && ( No Returns )} {returns && returns.length > 0 && ( )}
) } export default Returns - lang: Shell label: cURL source: | curl '{backend_url}/admin/returns' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Returns responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReturnsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/returns/{id}/cancel: post: operationId: PostReturnsReturnCancel summary: Cancel a Return description: Registers a Return as canceled. The return can be associated with an order, claim, or swap. parameters: - in: path name: id required: true description: The ID of the Return. schema: type: string x-codegen: method: cancel x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.returns.cancel(returnId) .then(({ order }) => { console.log(order.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCancelReturn } from "medusa-react" type Props = { returnId: string } const Return = ({ returnId }: Props) => { const cancelReturn = useAdminCancelReturn( returnId ) // ... const handleCancel = () => { cancelReturn.mutate(void 0, { onSuccess: ({ order }) => { console.log(order.returns) } }) } // ... } export default Return - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/returns/{id}/cancel' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Returns responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReturnsCancelRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/returns/{id}/receive: post: operationId: PostReturnsReturnReceive summary: Receive a Return description: Mark a Return as received. This also updates the status of associated order, claim, or swap accordingly. parameters: - in: path name: id required: true description: The ID of the Return. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostReturnsReturnReceiveReq' x-codegen: method: receive x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.returns.receive(returnId, { items: [ { item_id, quantity: 1 } ] }) .then((data) => { console.log(data.return.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminReceiveReturn } from "medusa-react" type ReceiveReturnData = { items: { item_id: string quantity: number }[] } type Props = { returnId: string } const Return = ({ returnId }: Props) => { const receiveReturn = useAdminReceiveReturn( returnId ) // ... const handleReceive = (data: ReceiveReturnData) => { receiveReturn.mutate(data, { onSuccess: ({ return: dataReturn }) => { console.log(dataReturn.status) } }) } // ... } export default Return - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/returns/{id}/receive' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "items": [ { "item_id": "asafg", "quantity": 1 } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Returns responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminReturnsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `q` or `name`. The sales channels can also be sorted or paginated. x-authenticated: true parameters: - in: query name: id description: Filter by a sales channel ID. schema: type: string - in: query name: name description: Filter by name. schema: type: string - in: query name: description description: Filter by description. schema: type: string - in: query name: q description: term used to search sales channels' names and descriptions. schema: type: string - in: query name: order description: A sales-channel field to sort-order the retrieved sales channels by. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: offset description: The number of sales channels to skip when retrieving the sales channels. schema: type: integer default: 0 - in: query name: limit description: Limit the number of sales channels returned. schema: type: integer default: 20 - in: query name: expand description: Comma-separated relations that should be expanded in the returned sales channels. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned sales channels. schema: type: string x-codegen: method: list queryParams: AdminGetSalesChannelsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.list() .then(({ sales_channels, limit, offset, count }) => { console.log(sales_channels.length) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminSalesChannels } from "medusa-react" const SalesChannels = () => { const { sales_channels, isLoading } = useAdminSalesChannels() return (
{isLoading && Loading...} {sales_channels && !sales_channels.length && ( No Sales Channels )} {sales_channels && sales_channels.length > 0 && ( )}
) } export default SalesChannels - lang: Shell label: cURL source: | curl '{backend_url}/admin/sales-channels' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Sales Channel description: Create a Sales Channel. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostSalesChannelsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.create({ name: "App", description: "Mobile app" }) .then(({ sales_channel }) => { console.log(sales_channel.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateSalesChannel } from "medusa-react" const CreateSalesChannel = () => { const createSalesChannel = useAdminCreateSalesChannel() // ... const handleCreate = (name: string, description: string) => { createSalesChannel.mutate({ name, description, }, { onSuccess: ({ sales_channel }) => { console.log(sales_channel.id) } }) } // ... } export default CreateSalesChannel - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/sales-channels' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "App" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/sales-channels/{id}: get: operationId: GetSalesChannelsSalesChannel summary: Get a Sales Channel description: Retrieve a sales channel's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Sales channel. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.retrieve(salesChannelId) .then(({ sales_channel }) => { console.log(sales_channel.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminSalesChannel } from "medusa-react" type Props = { salesChannelId: string } const SalesChannel = ({ salesChannelId }: Props) => { const { sales_channel, isLoading, } = useAdminSalesChannel(salesChannelId) return (
{isLoading && Loading...} {sales_channel && {sales_channel.name}}
) } export default SalesChannel - lang: Shell label: cURL source: | curl '{backend_url}/admin/sales-channels/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostSalesChannelsSalesChannel summary: Update a Sales Channel description: Update a Sales Channel's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Sales Channel. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostSalesChannelsSalesChannelReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.update(salesChannelId, { name: "App" }) .then(({ sales_channel }) => { console.log(sales_channel.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateSalesChannel } from "medusa-react" type Props = { salesChannelId: string } const SalesChannel = ({ salesChannelId }: Props) => { const updateSalesChannel = useAdminUpdateSalesChannel( salesChannelId ) // ... const handleUpdate = ( is_disabled: boolean ) => { updateSalesChannel.mutate({ is_disabled, }, { onSuccess: ({ sales_channel }) => { console.log(sales_channel.is_disabled) } }) } // ... } export default SalesChannel - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/sales-channels/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "App" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteSalesChannelsSalesChannel summary: Delete a Sales Channel description: Delete a sales channel. Associated products, stock locations, and other resources are not deleted. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Sales channel. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.delete(salesChannelId) .then(({ id, object, deleted }) => { console.log(id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteSalesChannel } from "medusa-react" type Props = { salesChannelId: string } const SalesChannel = ({ salesChannelId }: Props) => { const deleteSalesChannel = useAdminDeleteSalesChannel( salesChannelId ) // ... const handleDelete = () => { deleteSalesChannel.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default SalesChannel - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/sales-channels/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/sales-channels/{id}/products/batch: post: operationId: PostSalesChannelsChannelProductsBatch summary: Add Products to Sales Channel description: Add a list of products to a sales channel. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Sales channel. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostSalesChannelsChannelProductsBatchReq' x-codegen: method: addProducts x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.addProducts(salesChannelId, { product_ids: [ { id: productId } ] }) .then(({ sales_channel }) => { console.log(sales_channel.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddProductsToSalesChannel } from "medusa-react" type Props = { salesChannelId: string } const SalesChannel = ({ salesChannelId }: Props) => { const addProducts = useAdminAddProductsToSalesChannel( salesChannelId ) // ... const handleAddProducts = (productId: string) => { addProducts.mutate({ product_ids: [ { id: productId, }, ], }, { onSuccess: ({ sales_channel }) => { console.log(sales_channel.id) } }) } // ... } export default SalesChannel - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/sales-channels/{id}/products/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_ids": [ { "id": "{product_id}" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteSalesChannelsChannelProductsBatch summary: Remove Products from Sales Channel description: Remove a list of products from a sales channel. This does not delete the product. It only removes the association between the product and the sales channel. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Sales Channel schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteSalesChannelsChannelProductsBatchReq' x-codegen: method: removeProducts x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.removeProducts(salesChannelId, { product_ids: [ { id: productId } ] }) .then(({ sales_channel }) => { console.log(sales_channel.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteProductsFromSalesChannel, } from "medusa-react" type Props = { salesChannelId: string } const SalesChannel = ({ salesChannelId }: Props) => { const deleteProducts = useAdminDeleteProductsFromSalesChannel( salesChannelId ) // ... const handleDeleteProducts = (productId: string) => { deleteProducts.mutate({ product_ids: [ { id: productId, }, ], }, { onSuccess: ({ sales_channel }) => { console.log(sales_channel.id) } }) } // ... } export default SalesChannel - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/sales-channels/{id}/products/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_ids": [ { "id": "{product_id}" } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/sales-channels/{id}/stock-locations: post: operationId: PostSalesChannelsSalesChannelStockLocation summary: Associate a Stock Location description: Associate a stock location with a Sales Channel. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Sales Channel. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostSalesChannelsChannelStockLocationsReq' x-codegen: method: addLocation x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.addLocation(salesChannelId, { location_id: "loc_123" }) .then(({ sales_channel }) => { console.log(sales_channel.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddLocationToSalesChannel } from "medusa-react" type Props = { salesChannelId: string } const SalesChannel = ({ salesChannelId }: Props) => { const addLocation = useAdminAddLocationToSalesChannel() // ... const handleAddLocation = (locationId: string) => { addLocation.mutate({ sales_channel_id: salesChannelId, location_id: locationId }, { onSuccess: ({ sales_channel }) => { console.log(sales_channel.locations) } }) } // ... } export default SalesChannel - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/sales-channels/{id}/stock-locations' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "locaton_id": "loc_123" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteSalesChannelsSalesChannelStockLocation summary: Remove Stock Location from Sales Channels. description: Remove a stock location from a Sales Channel. This only removes the association between the stock location and the sales channel. It does not delete the stock location. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Sales Channel. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteSalesChannelsChannelStockLocationsReq' x-codegen: method: removeLocation x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.salesChannels.removeLocation(salesChannelId, { location_id: "loc_id" }) .then(({ sales_channel }) => { console.log(sales_channel.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminRemoveLocationFromSalesChannel } from "medusa-react" type Props = { salesChannelId: string } const SalesChannel = ({ salesChannelId }: Props) => { const removeLocation = useAdminRemoveLocationFromSalesChannel() // ... const handleRemoveLocation = (locationId: string) => { removeLocation.mutate({ sales_channel_id: salesChannelId, location_id: locationId }, { onSuccess: ({ sales_channel }) => { console.log(sales_channel.locations) } }) } // ... } export default SalesChannel - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/sales-channels/{id}/stock-locations' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "locaton_id": "loc_id" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Sales Channels responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSalesChannelsDeleteLocationRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `region_id` or `is_return`. The shipping options can also be sorted or paginated. x-authenticated: true parameters: - in: query name: name description: Filter by name. schema: type: string - in: query name: region_id description: Filter by the ID of the region the shipping options belong to. schema: type: string - in: query name: is_return description: Filter by whether the shipping options are return shipping options. schema: type: boolean - in: query name: admin_only description: Filter by whether the shipping options are available for admin users only. schema: type: boolean - in: query name: q description: Term used to search shipping options' name. schema: type: string - in: query name: order description: A shipping option field to sort-order the retrieved shipping options by. schema: type: string - in: query name: id style: form explode: false description: Filter by shipping option IDs. schema: oneOf: - type: string description: ID of the shipping option. - type: array items: type: string description: ID of a shipping option. - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: offset description: The number of users to skip when retrieving the shipping options. schema: type: integer default: 0 - in: query name: limit description: Limit the number of shipping options returned. schema: type: integer default: 20 - in: query name: expand description: Comma-separated relations that should be expanded in the returned shipping options. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned shipping options. schema: type: string x-codegen: method: list queryParams: AdminGetShippingOptionsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingOptions.list() .then(({ shipping_options, count }) => { console.log(shipping_options.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminShippingOptions } from "medusa-react" const ShippingOptions = () => { const { shipping_options, isLoading } = useAdminShippingOptions() return (
{isLoading && Loading...} {shipping_options && !shipping_options.length && ( No Shipping Options )} {shipping_options && shipping_options.length > 0 && ( )}
) } export default ShippingOptions - lang: Shell label: cURL source: | curl '{backend_url}/admin/shipping-options' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Options responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingOptionsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostShippingOptionsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingOptions.create({ name: "PostFake", region_id, provider_id, data: { }, price_type: "flat_rate" }) .then(({ shipping_option }) => { console.log(shipping_option.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateShippingOption } from "medusa-react" type CreateShippingOption = { name: string provider_id: string data: Record price_type: string amount: number } type Props = { regionId: string } const Region = ({ regionId }: Props) => { const createShippingOption = useAdminCreateShippingOption() // ... const handleCreate = ( data: CreateShippingOption ) => { createShippingOption.mutate({ ...data, region_id: regionId }, { onSuccess: ({ shipping_option }) => { console.log(shipping_option.id) } }) } // ... } export default Region - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/shipping-options' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "PostFake", "region_id": "afasf", "provider_id": "manual", "data": {}, "price_type": "flat_rate" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Options responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingOptionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/shipping-options/{id}: get: operationId: GetShippingOptionsOption summary: Get a Shipping Option description: Retrieve a Shipping Option's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Shipping Option. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingOptions.retrieve(optionId) .then(({ shipping_option }) => { console.log(shipping_option.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminShippingOption } from "medusa-react" type Props = { shippingOptionId: string } const ShippingOption = ({ shippingOptionId }: Props) => { const { shipping_option, isLoading } = useAdminShippingOption( shippingOptionId ) return (
{isLoading && Loading...} {shipping_option && {shipping_option.name}}
) } export default ShippingOption - lang: Shell label: cURL source: | curl '{backend_url}/admin/shipping-options/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Options responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingOptionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostShippingOptionsOption summary: Update Shipping Option description: Update a Shipping Option's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Shipping Option. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostShippingOptionsOptionReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingOptions.update(optionId, { name: "PostFake", requirements: [ { id, type: "max_subtotal", amount: 1000 } ] }) .then(({ shipping_option }) => { console.log(shipping_option.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateShippingOption } from "medusa-react" type Props = { shippingOptionId: string } const ShippingOption = ({ shippingOptionId }: Props) => { const updateShippingOption = useAdminUpdateShippingOption( shippingOptionId ) // ... const handleUpdate = ( name: string, requirements: { id: string, type: string, amount: number }[] ) => { updateShippingOption.mutate({ name, requirements }, { onSuccess: ({ shipping_option }) => { console.log(shipping_option.requirements) } }) } // ... } export default ShippingOption - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/shipping-options/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "requirements": [ { "type": "max_subtotal", "amount": 1000 } ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Options responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingOptionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteShippingOptionsOption summary: Delete Shipping Option description: Delete a Shipping Option. Once deleted, it can't be used when creating orders or returns. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Shipping Option. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingOptions.delete(optionId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteShippingOption } from "medusa-react" type Props = { shippingOptionId: string } const ShippingOption = ({ shippingOptionId }: Props) => { const deleteShippingOption = useAdminDeleteShippingOption( shippingOptionId ) // ... const handleDelete = () => { deleteShippingOption.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default ShippingOption - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/shipping-options/{option_id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Options responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingOptionsDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/shipping-profiles: get: operationId: GetShippingProfiles summary: List Shipping Profiles description: Retrieve a list of Shipping Profiles. x-authenticated: true x-codegen: method: list x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingProfiles.list() .then(({ shipping_profiles }) => { console.log(shipping_profiles.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminShippingProfiles } from "medusa-react" const ShippingProfiles = () => { const { shipping_profiles, isLoading } = useAdminShippingProfiles() return (
{isLoading && Loading...} {shipping_profiles && !shipping_profiles.length && ( No Shipping Profiles )} {shipping_profiles && shipping_profiles.length > 0 && ( )}
) } export default ShippingProfiles - lang: Shell label: cURL source: | curl '{backend_url}/admin/shipping-profiles' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Profiles responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingProfilesListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Shipping Profile description: Create a Shipping Profile. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostShippingProfilesReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingProfiles.create({ name: "Large Products" }) .then(({ shipping_profile }) => { console.log(shipping_profile.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { ShippingProfileType } from "@medusajs/medusa" import { useAdminCreateShippingProfile } from "medusa-react" const CreateShippingProfile = () => { const createShippingProfile = useAdminCreateShippingProfile() // ... const handleCreate = ( name: string, type: ShippingProfileType ) => { createShippingProfile.mutate({ name, type }, { onSuccess: ({ shipping_profile }) => { console.log(shipping_profile.id) } }) } // ... } export default CreateShippingProfile - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/shipping-profiles' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Large Products" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Profiles responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingProfilesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/shipping-profiles/{id}: get: operationId: GetShippingProfilesProfile summary: Get a Shipping Profile description: Retrieve a Shipping Profile's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Shipping Profile. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingProfiles.retrieve(profileId) .then(({ shipping_profile }) => { console.log(shipping_profile.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminShippingProfile } from "medusa-react" type Props = { shippingProfileId: string } const ShippingProfile = ({ shippingProfileId }: Props) => { const { shipping_profile, isLoading } = useAdminShippingProfile( shippingProfileId ) return (
{isLoading && Loading...} {shipping_profile && ( {shipping_profile.name} )}
) } export default ShippingProfile - lang: Shell label: cURL source: | curl '{backend_url}/admin/shipping-profiles/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Profiles responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingProfilesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostShippingProfilesProfile summary: Update a Shipping Profile description: Update a Shipping Profile's details. parameters: - in: path name: id required: true description: The ID of the Shipping Profile. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostShippingProfilesProfileReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingProfiles.update(shippingProfileId, { name: 'Large Products' }) .then(({ shipping_profile }) => { console.log(shipping_profile.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { ShippingProfileType } from "@medusajs/medusa" import { useAdminUpdateShippingProfile } from "medusa-react" type Props = { shippingProfileId: string } const ShippingProfile = ({ shippingProfileId }: Props) => { const updateShippingProfile = useAdminUpdateShippingProfile( shippingProfileId ) // ... const handleUpdate = ( name: string, type: ShippingProfileType ) => { updateShippingProfile.mutate({ name, type }, { onSuccess: ({ shipping_profile }) => { console.log(shipping_profile.name) } }) } // ... } export default ShippingProfile - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/shipping-profiles/{id} \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Large Products" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Profiles responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminShippingProfilesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteShippingProfilesProfile summary: Delete a Shipping Profile description: Delete a Shipping Profile. Associated shipping options are deleted as well. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Shipping Profile. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.shippingProfiles.delete(profileId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteShippingProfile } from "medusa-react" type Props = { shippingProfileId: string } const ShippingProfile = ({ shippingProfileId }: Props) => { const deleteShippingProfile = useAdminDeleteShippingProfile( shippingProfileId ) // ... const handleDelete = () => { deleteShippingProfile.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default ShippingProfile - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/shipping-profiles/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Shipping Profiles responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDeleteShippingProfileRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `name` or `created_at`. The stock locations can also be sorted or paginated. x-authenticated: true parameters: - in: query name: id description: Filter by ID. schema: type: string - in: query name: name description: Filter by name. schema: type: string - in: query name: order description: A stock-location field to sort-order the retrieved stock locations by. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: offset description: The number of stock locations to skip when retrieving the stock locations. schema: type: integer default: 0 - in: query name: limit description: Limit the number of stock locations returned. schema: type: integer default: 20 - in: query name: expand description: Comma-separated relations that should be expanded in the returned stock locations. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned stock locations. schema: type: string x-codegen: method: list queryParams: AdminGetStockLocationsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.stockLocations.list() .then(({ stock_locations, limit, offset, count }) => { console.log(stock_locations.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminStockLocations } from "medusa-react" function StockLocations() { const { stock_locations, isLoading } = useAdminStockLocations() return (
{isLoading && Loading...} {stock_locations && !stock_locations.length && ( No Locations )} {stock_locations && stock_locations.length > 0 && ( )}
) } export default StockLocations - lang: Shell label: cURL source: | curl '{backend_url}/admin/stock-locations' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Stock Locations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminStockLocationsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Stock Location description: Create a Stock Location. x-authenticated: true parameters: - in: query name: expand description: Comma-separated relations that should be expanded in the returned stock location. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned stock location. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostStockLocationsReq' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.stockLocations.create({ name: "Main Warehouse", }) .then(({ stock_location }) => { console.log(stock_location.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateStockLocation } from "medusa-react" const CreateStockLocation = () => { const createStockLocation = useAdminCreateStockLocation() // ... const handleCreate = (name: string) => { createStockLocation.mutate({ name, }, { onSuccess: ({ stock_location }) => { console.log(stock_location.id) } }) } // ... } export default CreateStockLocation - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/stock-locations' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "App" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Stock Locations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminStockLocationsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/stock-locations/{id}: get: operationId: GetStockLocationsStockLocation summary: Get a Stock Location description: Retrieve a Stock Location's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Stock Location. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned stock location. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned stock location. schema: type: string x-codegen: method: retrieve queryParams: AdminGetStockLocationsLocationParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.stockLocations.retrieve(stockLocationId) .then(({ stock_location }) => { console.log(stock_location.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminStockLocation } from "medusa-react" type Props = { stockLocationId: string } const StockLocation = ({ stockLocationId }: Props) => { const { stock_location, isLoading } = useAdminStockLocation(stockLocationId) return (
{isLoading && Loading...} {stock_location && ( {stock_location.name} )}
) } export default StockLocation - lang: Shell label: cURL source: | curl '{backend_url}/admin/stock-locations/{id}' \ -H 'x-medusa-access-token: {api_token}' \ security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Stock Locations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminStockLocationsRes' post: operationId: PostStockLocationsStockLocation summary: Update a Stock Location description: Update a Stock Location's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Stock Location. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned stock location. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned stock location. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostStockLocationsLocationReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.stockLocations.update(stockLocationId, { name: 'Main Warehouse' }) .then(({ stock_location }) => { console.log(stock_location.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateStockLocation } from "medusa-react" type Props = { stockLocationId: string } const StockLocation = ({ stockLocationId }: Props) => { const updateLocation = useAdminUpdateStockLocation( stockLocationId ) // ... const handleUpdate = ( name: string ) => { updateLocation.mutate({ name }, { onSuccess: ({ stock_location }) => { console.log(stock_location.name) } }) } } export default StockLocation - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/stock-locations/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Main Warehouse" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Stock Locations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminStockLocationsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteStockLocationsStockLocation summary: Delete a Stock Location description: Delete a Stock Location. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Stock Location. schema: type: string x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.stockLocations.delete(stockLocationId) .then(({ id, object, deleted }) => { console.log(id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteStockLocation } from "medusa-react" type Props = { stockLocationId: string } const StockLocation = ({ stockLocationId }: Props) => { const deleteLocation = useAdminDeleteStockLocation( stockLocationId ) // ... const handleDelete = () => { deleteLocation.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } } export default StockLocation - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/stock-locations/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Stock Locations responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminStockLocationsDeleteRes' '400': $ref: '#/components/responses/400_error' /admin/store: get: operationId: GetStore summary: Get Store details description: Retrieve the Store's details. x-authenticated: true x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.store.retrieve() .then(({ store }) => { console.log(store.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminStore } from "medusa-react" const Store = () => { const { store, isLoading } = useAdminStore() return (
{isLoading && Loading...} {store && {store.name}}
) } export default Store - lang: Shell label: cURL source: | curl '{backend_url}/admin/store' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Store responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminExtendedStoresRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostStore summary: Update Store Details description: Update the Store's details. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostStoreReq' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.store.update({ name: "Medusa Store" }) .then(({ store }) => { console.log(store.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateStore } from "medusa-react" function Store() { const updateStore = useAdminUpdateStore() // ... const handleUpdate = ( name: string ) => { updateStore.mutate({ name }, { onSuccess: ({ store }) => { console.log(store.name) } }) } } export default Store - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/store' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "Medusa Store" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Store responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminStoresRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/store/currencies/{code}: post: operationId: PostStoreCurrenciesCode summary: Add a Currency Code description: Add a Currency Code to the available currencies in a store. This does not create new currencies, as currencies are defined within the Medusa backend. To create a currency, you can create a migration that inserts the currency into the database. x-authenticated: true parameters: - in: path name: code required: true description: The 3 character ISO currency code. schema: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. x-codegen: method: addCurrency x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.store.addCurrency("eur") .then(({ store }) => { console.log(store.currencies); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminAddStoreCurrency } from "medusa-react" const Store = () => { const addCurrency = useAdminAddStoreCurrency() // ... const handleAdd = (code: string) => { addCurrency.mutate(code, { onSuccess: ({ store }) => { console.log(store.currencies) } }) } // ... } export default Store - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/store/currencies/{currency_code}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Store responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminStoresRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteStoreCurrenciesCode summary: Remove a Currency description: Remove a Currency Code from the available currencies in a store. This does not completely delete the currency and it can be added again later to the store. x-authenticated: true parameters: - in: path name: code required: true description: The 3 character ISO currency code. schema: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. x-codegen: method: deleteCurrency x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.store.deleteCurrency("eur") .then(({ store }) => { console.log(store.currencies); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteStoreCurrency } from "medusa-react" const Store = () => { const deleteCurrency = useAdminDeleteStoreCurrency() // ... const handleAdd = (code: string) => { deleteCurrency.mutate(code, { onSuccess: ({ store }) => { console.log(store.currencies) } }) } // ... } export default Store - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/store/currencies/{currency_code}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Store responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminStoresRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/store/payment-providers: get: operationId: GetStorePaymentProviders summary: List Payment Providers description: Retrieve a list of available Payment Providers in a store. x-authenticated: true x-codegen: method: listPaymentProviders x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.store.listPaymentProviders() .then(({ payment_providers }) => { console.log(payment_providers.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminStorePaymentProviders } from "medusa-react" const PaymentProviders = () => { const { payment_providers, isLoading } = useAdminStorePaymentProviders() return (
{isLoading && Loading...} {payment_providers && !payment_providers.length && ( No Payment Providers )} {payment_providers && payment_providers.length > 0 &&( )}
) } export default PaymentProviders - lang: Shell label: cURL source: | curl '{backend_url}/admin/store/payment-providers' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Store responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminPaymentProvidersList' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/store/tax-providers: get: operationId: GetStoreTaxProviders summary: List Tax Providers description: Retrieve a list of available Tax Providers in a store. x-authenticated: true x-codegen: method: listTaxProviders x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.store.listTaxProviders() .then(({ tax_providers }) => { console.log(tax_providers.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminStoreTaxProviders } from "medusa-react" const TaxProviders = () => { const { tax_providers, isLoading } = useAdminStoreTaxProviders() return (
{isLoading && Loading...} {tax_providers && !tax_providers.length && ( No Tax Providers )} {tax_providers && tax_providers.length > 0 &&( )}
) } export default TaxProviders - lang: Shell label: cURL source: | curl '{backend_url}/admin/store/tax-providers' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Store responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxProvidersList' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/swaps: get: operationId: GetSwaps summary: List Swaps description: Retrieve a list of Swaps. The swaps can be paginated. parameters: - in: query name: limit description: Limit the number of swaps returned. schema: type: number default: '50' - in: query name: offset description: The number of swaps to skip when retrieving the swaps. schema: type: number default: '0' x-authenticated: true x-codegen: method: list queryParams: AdminGetSwapsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.swaps.list() .then(({ swaps }) => { console.log(swaps.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminSwaps } from "medusa-react" const Swaps = () => { const { swaps, isLoading } = useAdminSwaps() return (
{isLoading && Loading...} {swaps && !swaps.length && No Swaps} {swaps && swaps.length > 0 && ( )}
) } export default Swaps - lang: Shell label: cURL source: | curl '{backend_url}/admin/swaps' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Swaps responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSwapsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/swaps/{id}: get: operationId: GetSwapsSwap summary: Get a Swap description: Retrieve a Swap's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Swap. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.swaps.retrieve(swapId) .then(({ swap }) => { console.log(swap.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminSwap } from "medusa-react" type Props = { swapId: string } const Swap = ({ swapId }: Props) => { const { swap, isLoading } = useAdminSwap(swapId) return (
{isLoading && Loading...} {swap && {swap.id}}
) } export default Swap - lang: Shell label: cURL source: | curl '{backend_url}/admin/swaps/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Swaps responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminSwapsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/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 `name` or `rate`. The tax rates can also be paginated. x-authenticated: true parameters: - in: query name: name description: Filter by name. schema: type: string - in: query name: region_id style: form explode: false description: Filter by Region IDs schema: oneOf: - type: string - type: array items: type: string - in: query name: code description: Filter by code. schema: type: string - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: rate style: form explode: false description: Filter by Rate schema: oneOf: - type: number - type: object properties: lt: type: number description: filter by rates less than this number gt: type: number description: filter by rates greater than this number lte: type: number description: filter by rates less than or equal to this number gte: type: number description: filter by rates greater than or equal to this number - in: query name: q description: Term used to search tax rates by name. schema: type: string - in: query name: order description: A tax rate field to sort-order the retrieved tax rates by. schema: type: string - in: query name: offset description: The number of tax rates to skip when retrieving the tax rates. schema: type: integer default: 0 - in: query name: limit description: Limit the number of tax rates returned. schema: type: integer default: 50 - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-codegen: method: list queryParams: AdminGetTaxRatesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.list() .then(({ tax_rates, limit, offset, count }) => { console.log(tax_rates.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminTaxRates } from "medusa-react" const TaxRates = () => { const { tax_rates, isLoading } = useAdminTaxRates() return (
{isLoading && Loading...} {tax_rates && !tax_rates.length && ( No Tax Rates )} {tax_rates && tax_rates.length > 0 && ( )}
) } export default TaxRates - lang: Shell label: cURL source: | curl '{backend_url}/admin/tax-rates' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 a Tax Rate description: Create a Tax Rate. parameters: - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostTaxRatesReq' x-codegen: method: create queryParams: AdminPostTaxRatesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.create({ code: "TEST", name: "New Tax Rate", region_id }) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateTaxRate } from "medusa-react" type Props = { regionId: string } const CreateTaxRate = ({ regionId }: Props) => { const createTaxRate = useAdminCreateTaxRate() // ... const handleCreate = ( code: string, name: string, rate: number ) => { createTaxRate.mutate({ code, name, region_id: regionId, rate, }, { onSuccess: ({ tax_rate }) => { console.log(tax_rate.id) } }) } // ... } export default CreateTaxRate - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/tax-rates' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "code": "TEST", "name": "New Tax Rate", "region_id": "{region_id}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/tax-rates/{id}: get: operationId: GetTaxRatesTaxRate summary: Get a Tax Rate description: Retrieve a Tax Rate's details. parameters: - in: path name: id required: true description: ID of the tax rate. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true x-codegen: method: retrieve queryParams: AdminGetTaxRatesTaxRateParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.retrieve(taxRateId) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminTaxRate } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const { tax_rate, isLoading } = useAdminTaxRate(taxRateId) return (
{isLoading && Loading...} {tax_rate && {tax_rate.code}}
) } export default TaxRate - lang: Shell label: cURL source: | curl '{backend_url}/admin/tax-rates/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostTaxRatesTaxRate summary: Update a Tax Rate description: Update a Tax Rate's details. parameters: - in: path name: id required: true description: ID of the tax rate. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostTaxRatesTaxRateReq' x-codegen: method: update queryParams: AdminPostTaxRatesTaxRateParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.update(taxRateId, { name: "New Tax Rate" }) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateTaxRate } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const updateTaxRate = useAdminUpdateTaxRate(taxRateId) // ... const handleUpdate = ( name: string ) => { updateTaxRate.mutate({ name }, { onSuccess: ({ tax_rate }) => { console.log(tax_rate.name) } }) } // ... } export default TaxRate - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/tax-rates/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "name": "New Tax Rate" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteTaxRatesTaxRate summary: Delete a Tax Rate description: Delete a Tax Rate. Resources associated with the tax rate, such as products or product types, are not deleted. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the Shipping Option. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.delete(taxRateId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteTaxRate } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const deleteTaxRate = useAdminDeleteTaxRate(taxRateId) // ... const handleDelete = () => { deleteTaxRate.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default TaxRate - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/tax-rates/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesDeleteRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/tax-rates/{id}/product-types/batch: post: operationId: PostTaxRatesTaxRateProductTypes summary: Add to Product Types description: Add Product Types to a Tax Rate. parameters: - in: path name: id required: true description: ID of the tax rate. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostTaxRatesTaxRateProductTypesReq' x-codegen: method: addProductTypes queryParams: AdminPostTaxRatesTaxRateProductTypesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.addProductTypes(taxRateId, { product_types: [ productTypeId ] }) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateProductTypeTaxRates, } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const addProductTypes = useAdminCreateProductTypeTaxRates( taxRateId ) // ... const handleAddProductTypes = (productTypeIds: string[]) => { addProductTypes.mutate({ product_types: productTypeIds, }, { onSuccess: ({ tax_rate }) => { console.log(tax_rate.product_types) } }) } // ... } export default TaxRate - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/tax-rates/{id}/product-types/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_types": [ "{product_type_id}" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteTaxRatesTaxRateProductTypes summary: Remove Product Types from Rate description: Remove product types from a tax rate. This only removes the association between the product types and the tax rate. It does not delete the product types. parameters: - in: path name: id required: true description: ID of the tax rate. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteTaxRatesTaxRateProductTypesReq' x-codegen: method: removeProductTypes queryParams: AdminDeleteTaxRatesTaxRateProductTypesParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.removeProductTypes(taxRateId, { product_types: [ productTypeId ] }) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteProductTypeTaxRates, } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const removeProductTypes = useAdminDeleteProductTypeTaxRates( taxRateId ) // ... const handleRemoveProductTypes = ( productTypeIds: string[] ) => { removeProductTypes.mutate({ product_types: productTypeIds, }, { onSuccess: ({ tax_rate }) => { console.log(tax_rate.product_types) } }) } // ... } export default TaxRate - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/tax-rates/{id}/product-types/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "product_types": [ "{product_type_id}" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/tax-rates/{id}/products/batch: post: operationId: PostTaxRatesTaxRateProducts summary: Add to Products description: Add products to a tax rate. parameters: - in: path name: id required: true description: ID of the tax rate. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostTaxRatesTaxRateProductsReq' x-codegen: method: addProducts queryParams: AdminPostTaxRatesTaxRateProductsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.addProducts(taxRateId, { products: [ productId ] }) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateProductTaxRates } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const addProduct = useAdminCreateProductTaxRates(taxRateId) // ... const handleAddProduct = (productIds: string[]) => { addProduct.mutate({ products: productIds, }, { onSuccess: ({ tax_rate }) => { console.log(tax_rate.products) } }) } // ... } export default TaxRate - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/tax-rates/{id}/products/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "products": [ "{product_id}" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteTaxRatesTaxRateProducts summary: Remove Products from Rate description: Remove products from a tax rate. This only removes the association between the products and the tax rate. It does not delete the products. parameters: - in: path name: id required: true description: ID of the tax rate. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteTaxRatesTaxRateProductsReq' x-codegen: method: removeProducts queryParams: AdminDeleteTaxRatesTaxRateProductsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.removeProducts(taxRateId, { products: [ productId ] }) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteProductTaxRates } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const removeProduct = useAdminDeleteProductTaxRates(taxRateId) // ... const handleRemoveProduct = (productIds: string[]) => { removeProduct.mutate({ products: productIds, }, { onSuccess: ({ tax_rate }) => { console.log(tax_rate.products) } }) } // ... } export default TaxRate - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/tax-rates/{id}/products/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "products": [ "{product_id}" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/tax-rates/{id}/shipping-options/batch: post: operationId: PostTaxRatesTaxRateShippingOptions summary: Add to Shipping Options description: Add Shipping Options to a Tax Rate. parameters: - in: path name: id required: true description: ID of the tax rate. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostTaxRatesTaxRateShippingOptionsReq' x-codegen: method: addShippingOptions queryParams: AdminPostTaxRatesTaxRateShippingOptionsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.addShippingOptions(taxRateId, { shipping_options: [ shippingOptionId ] }) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateShippingTaxRates } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const addShippingOption = useAdminCreateShippingTaxRates( taxRateId ) // ... const handleAddShippingOptions = ( shippingOptionIds: string[] ) => { addShippingOption.mutate({ shipping_options: shippingOptionIds, }, { onSuccess: ({ tax_rate }) => { console.log(tax_rate.shipping_options) } }) } // ... } export default TaxRate - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/tax-rates/{id}/shipping-options/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "shipping_options": [ "{shipping_option_id}" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteTaxRatesTaxRateShippingOptions summary: Remove Shipping Options from Rate description: Remove shipping options from a tax rate. This only removes the association between the shipping options and the tax rate. It does not delete the shipping options. parameters: - in: path name: id required: true description: ID of the tax rate. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned tax rate. style: form explode: false schema: type: array items: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned tax rate. style: form explode: false schema: type: array items: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteTaxRatesTaxRateShippingOptionsReq' x-codegen: method: removeShippingOptions queryParams: AdminDeleteTaxRatesTaxRateShippingOptionsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.taxRates.removeShippingOptions(taxRateId, { shipping_options: [ shippingOptionId ] }) .then(({ tax_rate }) => { console.log(tax_rate.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteShippingTaxRates } from "medusa-react" type Props = { taxRateId: string } const TaxRate = ({ taxRateId }: Props) => { const removeShippingOptions = useAdminDeleteShippingTaxRates( taxRateId ) // ... const handleRemoveShippingOptions = ( shippingOptionIds: string[] ) => { removeShippingOptions.mutate({ shipping_options: shippingOptionIds, }, { onSuccess: ({ tax_rate }) => { console.log(tax_rate.shipping_options) } }) } // ... } export default TaxRate - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/tax-rates/{id}/shipping-options/batch' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "shipping_options": [ "{shipping_option_id}" ] }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Tax Rates responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminTaxRatesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: post: operationId: PostUploads summary: Upload Files description: Upload at least one file to a public bucket or storage. The file upload is handled by the file service installed on the Medusa backend. x-authenticated: true requestBody: content: multipart/form-data: schema: type: object properties: files: type: string format: binary x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.uploads.create(file) .then(({ uploads }) => { console.log(uploads.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUploadFile } from "medusa-react" const UploadFile = () => { const uploadFile = useAdminUploadFile() // ... const handleFileUpload = (file: File) => { uploadFile.mutate(file, { onSuccess: ({ uploads }) => { console.log(uploads[0].key) } }) } // ... } export default UploadFile - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/uploads' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: image/jpeg' \ --form 'files=@""' \ --form 'files=@""' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Uploads responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUploadsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteUploads summary: Delete an Uploaded File description: Delete an uploaded file from storage. The file is deleted using the installed file service on the Medusa backend. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminDeleteUploadsReq' x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.uploads.delete({ file_key }) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteFile } from "medusa-react" const Image = () => { const deleteFile = useAdminDeleteFile() // ... const handleDeleteFile = (fileKey: string) => { deleteFile.mutate({ file_key: fileKey }, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default Image - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/uploads' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "file_key": "{file_key}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Uploads responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDeleteUploadsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/download-url: post: operationId: PostUploadsDownloadUrl summary: Get a File's Download URL description: Create and retrieve a presigned or public download URL for a file. The URL creation is handled by the file service installed on the Medusa backend. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminPostUploadsDownloadUrlReq' x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.uploads.getPresignedDownloadUrl({ file_key }) .then(({ download_url }) => { console.log(download_url); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreatePresignedDownloadUrl } from "medusa-react" const Image = () => { const createPresignedUrl = useAdminCreatePresignedDownloadUrl() // ... const handlePresignedUrl = (fileKey: string) => { createPresignedUrl.mutate({ file_key: fileKey }, { onSuccess: ({ download_url }) => { console.log(download_url) } }) } // ... } export default Image - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/uploads/download-url' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "file_key": "{file_key}" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Uploads responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUploadsDownloadUrlRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/protected: post: operationId: PostUploadsProtected summary: Protected File Upload description: Upload at least one file to an ACL or a non-public bucket. The file upload is handled by the file service installed on the Medusa backend. x-authenticated: true requestBody: content: multipart/form-data: schema: type: object properties: files: type: string format: binary x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.uploads.createProtected(file) .then(({ uploads }) => { console.log(uploads.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUploadProtectedFile } from "medusa-react" const UploadFile = () => { const uploadFile = useAdminUploadProtectedFile() // ... const handleFileUpload = (file: File) => { uploadFile.mutate(file, { onSuccess: ({ uploads }) => { console.log(uploads[0].key) } }) } // ... } export default UploadFile - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/uploads/protected' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: image/jpeg' \ --form 'files=@""' \ --form 'files=@""' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Uploads responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUploadsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/users: get: operationId: GetUsers summary: List Users description: Retrieves a list of users. The users can be filtered by fields such as `q` or `email`. The users can also be sorted or paginated. x-authenticated: true parameters: - in: query name: email description: Filter by email. schema: type: string - in: query name: first_name description: Filter by first name. schema: type: string - in: query name: last_name description: Filter by last name. schema: type: string - in: query name: q description: Term used to search users' first name, last name, and email. schema: type: string - in: query name: order description: A user field to sort-order the retrieved users by. schema: type: string - in: query name: id style: form explode: false description: Filter by user IDs. schema: oneOf: - type: string description: ID of the user. - type: array items: type: string description: ID of a user. - in: query name: created_at description: Filter by a creation date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: updated_at description: Filter by an update date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: deleted_at description: Filter by a deletion date range. schema: type: object properties: lt: type: string description: filter by dates less than this date format: date gt: type: string description: filter by dates greater than this date format: date lte: type: string description: filter by dates less than or equal to this date format: date gte: type: string description: filter by dates greater than or equal to this date format: date - in: query name: offset description: The number of users to skip when retrieving the users. schema: type: integer default: 0 - in: query name: limit description: Limit the number of users returned. schema: type: integer default: 20 - in: query name: fields description: Comma-separated fields that should be included in the returned users. schema: type: string x-codegen: method: list queryParams: AdminGetUsersParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.users.list() .then(({ users, limit, offset, count }) => { console.log(users.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUsers } from "medusa-react" const Users = () => { const { users, isLoading } = useAdminUsers() return (
{isLoading && Loading...} {users && !users.length && No Users} {users && users.length > 0 && (
    {users.map((user) => (
  • {user.email}
  • ))}
)}
) } export default Users - lang: Shell label: cURL source: | curl '{backend_url}/admin/users' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Users responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUsersListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostUsers summary: Create a User description: Create an admin User. The user has the same privileges as all admin users, and will be able to authenticate and perform admin functionalities right after creation. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminCreateUserRequest' x-codegen: method: create x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.users.create({ email: "user@example.com", password: "supersecret" }) .then(({ user }) => { console.log(user.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminCreateUser } from "medusa-react" const CreateUser = () => { const createUser = useAdminCreateUser() // ... const handleCreateUser = () => { createUser.mutate({ email: "user@example.com", password: "supersecret", }, { onSuccess: ({ user }) => { console.log(user.id) } }) } // ... } export default CreateUser - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/users' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com", "password": "supersecret" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Users responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUserRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/users/password-token: post: operationId: PostUsersUserPasswordToken summary: Request Password Reset description: Generate a password token for an admin user with a given email. This also triggers the `user.password_reset` event. So, if you have a Notification Service installed that can handle this event, a notification, such as an email, will be sent to the user. The token is triggered as part of the `user.password_reset` event's payload. That token must be used later to reset the password using the [Reset Password](https://docs.medusajs.com/api/admin#users_postusersuserpassword) API Route. externalDocs: description: How to reset a user's password url: https://docs.medusajs.com/modules/users/admin/manage-profile#reset-password requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminResetPasswordTokenRequest' x-codegen: method: sendResetPasswordToken x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.users.sendResetPasswordToken({ email: "user@example.com" }) .then(() => { // successful }) .catch(() => { // error occurred }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminSendResetPasswordToken } from "medusa-react" const Login = () => { const requestPasswordReset = useAdminSendResetPasswordToken() // ... const handleResetPassword = ( email: string ) => { requestPasswordReset.mutate({ email }, { onSuccess: () => { // successful } }) } // ... } export default Login - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/users/password-token' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Users responses: '204': 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' /admin/users/reset-password: post: operationId: PostUsersUserPassword summary: Reset Password description: Reset the password of an admin User using their reset password token. A user must request to reset their password first before attempting to reset their password with this request. externalDocs: description: How to reset a user's password url: https://docs.medusajs.com/modules/users/admin/manage-profile#reset-password requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminResetPasswordRequest' x-codegen: method: resetPassword x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.users.resetPassword({ token: "supersecrettoken", password: "supersecret" }) .then(({ user }) => { console.log(user.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminResetPassword } from "medusa-react" const ResetPassword = () => { const resetPassword = useAdminResetPassword() // ... const handleResetPassword = ( token: string, password: string ) => { resetPassword.mutate({ token, password, }, { onSuccess: ({ user }) => { console.log(user.id) } }) } // ... } export default ResetPassword - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/users/reset-password' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "token": "supersecrettoken", "password": "supersecret" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Users responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUserRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/users/{id}: get: operationId: GetUsersUser summary: Get a User description: Retrieve an admin user's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the User. schema: type: string x-codegen: method: retrieve x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.users.retrieve(userId) .then(({ user }) => { console.log(user.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUser } from "medusa-react" type Props = { userId: string } const User = ({ userId }: Props) => { const { user, isLoading } = useAdminUser( userId ) return (
{isLoading && Loading...} {user && {user.first_name} {user.last_name}}
) } export default User - lang: Shell label: cURL source: | curl '{backend_url}/admin/users/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Users responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUserRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: PostUsersUser summary: Update a User description: Update an admin user's details. parameters: - in: path name: id required: true description: The ID of the User. schema: type: string x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminUpdateUserRequest' x-codegen: method: update x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.users.update(userId, { first_name: "Marcellus" }) .then(({ user }) => { console.log(user.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminUpdateUser } from "medusa-react" type Props = { userId: string } const User = ({ userId }: Props) => { const updateUser = useAdminUpdateUser(userId) // ... const handleUpdateUser = ( firstName: string ) => { updateUser.mutate({ first_name: firstName, }, { onSuccess: ({ user }) => { console.log(user.first_name) } }) } // ... } export default User - lang: Shell label: cURL source: | curl -X POST '{backend_url}/admin/users/{id}' \ -H 'x-medusa-access-token: {api_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "first_name": "Marcellus" }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Users responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUserRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteUsersUser summary: Delete a User description: Delete a User. Once deleted, the user will not be able to authenticate or perform admin functionalities. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the User. schema: type: string x-codegen: method: delete x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.users.delete(userId) .then(({ id, object, deleted }) => { console.log(id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminDeleteUser } from "medusa-react" type Props = { userId: string } const User = ({ userId }: Props) => { const deleteUser = useAdminDeleteUser(userId) // ... const handleDeleteUser = () => { deleteUser.mutate(void 0, { onSuccess: ({ id, object, deleted }) => { console.log(id) } }) } // ... } export default User - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/admin/users/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Users responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminDeleteUserRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/variants: get: operationId: GetVariants summary: List Product Variants description: Retrieve a list of Product Variants. The product variant can be filtered by fields such as `id` or `title`. The product variant can also be paginated. x-authenticated: true parameters: - in: query name: id style: form explode: false description: Filter by product variant IDs. schema: oneOf: - type: string description: A product variant ID. - type: array description: An array of product variant IDs. items: type: string - in: query name: expand description: '"Comma-separated relations that should be expanded in the returned product variants."' schema: type: string - in: query name: fields description: '"Comma-separated fields that should be included in the returned product variants."' schema: type: string - in: query name: offset description: The number of product variants to skip when retrieving the product variants. schema: type: number default: '0' - in: query name: limit description: Limit the number of product variants returned. schema: type: number default: '100' - in: query name: cart_id style: form explode: false description: The ID of the cart to use for the price selection context. schema: type: string - in: query name: region_id style: form explode: false description: The ID of the region to use for the price selection context. schema: type: string externalDocs: description: Price selection context overview url: https://docs.medusajs.com/modules/price-lists/price-selection-strategy#context-object - in: query name: currency_code style: form explode: false description: The 3 character ISO currency code to use for the price selection context. schema: type: string externalDocs: description: Price selection context overview url: https://docs.medusajs.com/modules/price-lists/price-selection-strategy#context-object - in: query name: customer_id style: form explode: false description: The ID of the customer to use for the price selection context. schema: type: string externalDocs: description: Price selection context overview url: https://docs.medusajs.com/modules/price-lists/price-selection-strategy#context-object - in: query name: title style: form explode: false description: Filter by title. schema: oneOf: - type: string description: a single title to filter by - type: array description: multiple titles to filter by items: type: string - in: query name: inventory_quantity description: Filter by available inventory quantity schema: oneOf: - type: number description: a specific number to filter by. - type: object description: filter using less and greater than comparisons. properties: lt: type: number description: filter by inventory quantity less than this number gt: type: number description: filter by inventory quantity greater than this number lte: type: number description: filter by inventory quantity less than or equal to this number gte: type: number description: filter by inventory quantity greater than or equal to this number x-codegen: method: list queryParams: AdminGetVariantsParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.variants.list() .then(({ variants, limit, offset, count }) => { console.log(variants.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminVariants } from "medusa-react" const Variants = () => { const { variants, isLoading } = useAdminVariants() return (
{isLoading && Loading...} {variants && !variants.length && ( No Variants )} {variants && variants.length > 0 && (
    {variants.map((variant) => (
  • {variant.title}
  • ))}
)}
) } export default Variants - lang: Shell label: cURL source: | curl '{backend_url}/admin/variants' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Variants responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminVariantsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/variants/{id}: get: operationId: GetVariantsVariant summary: Get a Product variant description: Retrieve a product variant's details. x-authenticated: true parameters: - in: path name: id required: true description: The ID of the product variant. schema: type: string - in: query name: expand description: '"Comma-separated relations that should be expanded in the returned product variant."' schema: type: string - in: query name: fields description: '"Comma-separated fields that should be included in the returned product variant."' schema: type: string x-codegen: method: retrieve queryParams: AdminGetVariantParams x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.variants.retrieve(variantId) .then(({ variant }) => { console.log(variant.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminVariant } from "medusa-react" type Props = { variantId: string } const Variant = ({ variantId }: Props) => { const { variant, isLoading } = useAdminVariant( variantId ) return (
{isLoading && Loading...} {variant && {variant.title}}
) } export default Variant - lang: Shell label: cURL source: | curl '{backend_url}/admin/variants/{id}' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Variants responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminVariantsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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/variants/{id}/inventory: get: operationId: GetVariantsVariantInventory summary: Get Variant's Inventory description: Retrieve the available inventory of a Product Variant. x-authenticated: true parameters: - in: path name: id required: true description: The Product Variant ID. schema: type: string x-codegen: method: getInventory x-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.variants.getInventory(variantId) .then(({ variant }) => { console.log(variant.inventory, variant.sales_channel_availability) }) - lang: tsx label: Medusa React source: | import React from "react" import { useAdminVariantsInventory } from "medusa-react" type Props = { variantId: string } const VariantInventory = ({ variantId }: Props) => { const { variant, isLoading } = useAdminVariantsInventory( variantId ) return (
{isLoading && Loading...} {variant && variant.inventory.length === 0 && ( Variant doesn't have inventory details )} {variant && variant.inventory.length > 0 && (
    {variant.inventory.map((inventory) => (
  • {inventory.title}
  • ))}
)}
) } export default VariantInventory - lang: Shell label: cURL source: | curl '{backend_url}/admin/variants/{id}/inventory' \ -H 'x-medusa-access-token: {api_token}' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Variants responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminGetVariantsVariantInventoryRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: 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 or Multiple Errors content: application/json: schema: oneOf: - $ref: '#/components/schemas/Error' - $ref: '#/components/schemas/MultipleErrors' examples: not_allowed: $ref: '#/components/examples/not_allowed_error' invalid_data: $ref: '#/components/examples/invalid_data_error' MultipleErrors: $ref: '#/components/examples/multiple_errors' 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: apiKey x-displayName: API Token in: header name: x-medusa-access-token jwt_token: type: http x-displayName: JWT Token scheme: bearer cookie_auth: type: apiKey in: cookie name: connect.sid x-displayName: Cookie Session ID schemas: Address: title: Address description: An address is used across the Medusa backend within other schemas and object types. For example, a customer's billing and shipping addresses both use the Address entity. type: object required: - address_1 - address_2 - city - company - country_code - created_at - customer_id - deleted_at - first_name - id - last_name - metadata - phone - postal_code - province - updated_at properties: id: type: string description: ID of the address example: addr_01G8ZC9VS1XVE149MGH2J7QSSH customer_id: description: ID of the customer this address belongs to nullable: true type: string example: cus_01G2SG30J8C85S4A5CHM2S1NS2 customer: description: Available if the relation `customer` is expanded. nullable: true type: object company: description: Company name nullable: true type: string example: Acme first_name: description: First name nullable: true type: string example: Arno last_name: description: Last name nullable: true type: string example: Willms address_1: description: Address line 1 nullable: true type: string example: 14433 Kemmer Court address_2: description: Address line 2 nullable: true type: string example: Suite 369 city: description: City nullable: true type: string example: South Geoffreyview country_code: description: The 2 character ISO code of the country in lower case nullable: true type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. example: st country: description: A country object. x-expandable: country nullable: true $ref: '#/components/schemas/Country' province: description: Province nullable: true type: string example: Kentucky postal_code: description: Postal Code nullable: true type: string example: 72093 phone: description: Phone Number nullable: true type: string example: 16128234334802 created_at: type: string description: The date with timezone at which the resource was created. format: date-time updated_at: type: string description: The date with timezone at which the resource was updated. format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AddressCreatePayload: type: object description: Address fields used when creating an address. required: - first_name - last_name - address_1 - city - country_code - postal_code properties: first_name: description: First name type: string example: Arno last_name: description: Last name type: string example: Willms phone: type: string description: Phone Number example: 16128234334802 company: type: string address_1: description: Address line 1 type: string example: 14433 Kemmer Court address_2: description: Address line 2 type: string example: Suite 369 city: description: City type: string example: South Geoffreyview country_code: description: The 2 character ISO code of the country in lower case type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. example: st province: description: Province type: string example: Kentucky postal_code: description: Postal Code type: string example: 72093 metadata: type: object example: car: white description: An optional key-value map with additional details AddressPayload: type: object description: Address fields used when creating/updating an address. properties: first_name: description: First name type: string example: Arno last_name: description: Last name type: string example: Willms phone: type: string description: Phone Number example: 16128234334802 company: type: string description: Company address_1: description: Address line 1 type: string example: 14433 Kemmer Court address_2: description: Address line 2 type: string example: Suite 369 city: description: City type: string example: South Geoffreyview country_code: description: The 2 character ISO code of the country in lower case type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. example: st province: description: Province type: string example: Kentucky postal_code: description: Postal Code type: string example: 72093 metadata: type: object example: car: white description: An optional key-value map with additional details AdminAppsListRes: type: object required: - apps properties: apps: type: array description: An array of app details. items: $ref: '#/components/schemas/OAuth' AdminAppsRes: type: object required: - apps properties: apps: description: App details. $ref: '#/components/schemas/OAuth' AdminAuthRes: type: object description: The user's details. required: - user properties: user: description: User details. $ref: '#/components/schemas/User' AdminBatchJobListRes: type: object required: - batch_jobs - count - offset - limit properties: batch_jobs: type: array description: An array of batch job details. items: $ref: '#/components/schemas/BatchJob' count: type: integer description: The total number of items available offset: type: integer description: The number of batch jobs skipped when retrieving the batch jobs. limit: type: integer description: The number of items per page AdminBatchJobRes: type: object description: The batch job's details. required: - batch_job properties: batch_job: description: Batch job details. $ref: '#/components/schemas/BatchJob' AdminBearerAuthRes: type: object description: The access token of the user, if they're authenticated successfully. properties: access_token: description: Access token that can be used to send authenticated requests. type: string AdminCollectionsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Collection object: type: string description: The type of the object that was deleted. default: product-collection deleted: type: boolean description: Whether the collection was deleted successfully or not. default: true AdminCollectionsListRes: type: object required: - collections - count - offset - limit properties: collections: type: array description: an array of collection details items: $ref: '#/components/schemas/ProductCollection' count: type: integer description: The total number of items available offset: type: integer description: The number of product collections skipped when retrieving the product collections. limit: type: integer description: The number of items per page AdminCollectionsRes: type: object description: The collection's details. x-expanded-relations: field: collection relations: - products required: - collection properties: collection: description: Product Collection details. $ref: '#/components/schemas/ProductCollection' AdminCreateUserRequest: type: object required: - email - password properties: email: description: The User's email. type: string format: email first_name: description: The first name of the User. type: string last_name: description: The last name of the User. type: string role: description: The role assigned to the user. These roles don't provide any different privileges. type: string enum: - admin - member - developer password: description: The User's password. type: string format: password AdminCurrenciesListRes: type: object description: List of currencies with pagination fields. required: - currencies - count - offset - limit properties: currencies: type: array description: An array of currency details. items: $ref: '#/components/schemas/Currency' count: type: integer description: The total number of items available offset: type: integer description: The number of currencies skipped when retrieving the currencies. limit: type: integer description: The number of items per page AdminCurrenciesRes: type: object description: A currency's details. required: - currency properties: currency: description: Currency details. $ref: '#/components/schemas/Currency' AdminCustomerGroupsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted customer group. object: type: string description: The type of the object that was deleted. default: customer_group deleted: type: boolean description: Whether the customer group was deleted successfully or not. default: true AdminCustomerGroupsListRes: type: object required: - customer_groups - count - offset - limit properties: customer_groups: type: array description: An array of customer group details. items: $ref: '#/components/schemas/CustomerGroup' count: type: integer description: The total number of items available offset: type: integer description: The number of customer groups skipped when retrieving the customer groups. limit: type: integer description: The number of items per page AdminCustomerGroupsRes: type: object description: The customer group's details. required: - customer_group properties: customer_group: description: Customer group details. $ref: '#/components/schemas/CustomerGroup' AdminCustomersListRes: description: The list of customers with pagination fields. type: object required: - customers - count - offset - limit properties: customers: type: array description: An array of customer details. items: $ref: '#/components/schemas/Customer' count: type: integer description: The total number of items available offset: type: integer description: The number of customers skipped when retrieving the customers. limit: type: integer description: The number of items per page AdminCustomersRes: type: object description: The customer's details. x-expanded-relations: field: customer relations: - orders - shipping_addresses required: - customer properties: customer: description: Customer details. $ref: '#/components/schemas/Customer' AdminDeleteCustomerGroupsGroupCustomerBatchReq: type: object description: The customers to remove from the customer group. required: - customer_ids properties: customer_ids: description: The ids of the customers to remove type: array items: type: object required: - id properties: id: description: ID of the customer type: string AdminDeleteDiscountsDiscountConditionsConditionBatchReq: type: object description: The resources to remove. required: - resources properties: resources: description: The resources to be removed from the discount condition type: array items: type: object required: - id properties: id: description: The id of the item type: string AdminDeletePriceListPricesPricesReq: type: object description: The details of the prices to delete. properties: price_ids: description: The IDs of the prices to delete. type: array items: type: string AdminDeletePriceListsPriceListProductsPricesBatchReq: type: object description: The details of the products' prices to delete. properties: product_ids: description: The IDs of the products to delete their associated prices. type: array items: type: string AdminDeleteProductCategoriesCategoryProductsBatchReq: type: object description: The details of the products to delete from the product category. required: - product_ids properties: product_ids: description: The IDs of the products to delete from the product category. type: array items: type: object required: - id properties: id: description: The ID of a product type: string AdminDeleteProductsFromCollectionReq: type: object description: The details of the products to remove from the collection. required: - product_ids properties: product_ids: description: An array of Product IDs to remove from the Product Collection. type: array items: description: The ID of a Product to add to the Product Collection. type: string AdminDeleteProductsFromCollectionRes: type: object description: Deletion operation details required: - id - object - removed_products properties: id: type: string description: The ID of the collection object: type: string description: The type of object the removal was executed on default: product-collection removed_products: description: The IDs of the products removed from the collection type: array items: description: The ID of the Product removed from the Product Collection. type: string AdminDeletePublishableApiKeySalesChannelsBatchReq: type: object description: The details of the sales channels to remove from the publishable API key. required: - sales_channel_ids properties: sales_channel_ids: description: The IDs of the sales channels to remove from the publishable API key type: array items: type: object required: - id properties: id: type: string description: The ID of the sales channel AdminDeleteSalesChannelsChannelProductsBatchReq: type: object description: The details of the products to delete from the sales channel. required: - product_ids properties: product_ids: description: The IDs of the products to remove from the sales channel. type: array items: type: object required: - id properties: id: description: The ID of a product type: string AdminDeleteSalesChannelsChannelStockLocationsReq: type: object required: - location_id properties: location_id: description: The ID of the stock location type: string AdminDeleteShippingProfileRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Shipping Profile. object: type: string description: The type of the object that was deleted. default: shipping_profile deleted: type: boolean description: Whether or not the items were deleted. default: true AdminDeleteTaxRatesTaxRateProductTypesReq: type: object description: Product types to remove from the tax rates. required: - product_types properties: product_types: type: array description: The IDs of the product types to remove their association with this tax rate. items: type: string AdminDeleteTaxRatesTaxRateProductsReq: type: object description: The details of the products to remove their associated with the tax rate. required: - products properties: products: type: array description: The IDs of the products to remove their association with this tax rate. items: type: string AdminDeleteTaxRatesTaxRateShippingOptionsReq: type: object description: The details of the shipping options to remove their associate with the tax rate. required: - shipping_options properties: shipping_options: type: array description: The IDs of the shipping options to remove their association with this tax rate. items: type: string AdminDeleteUploadsReq: type: object description: The details of the file to delete. required: - file_key properties: file_key: description: key of the file to delete. This is obtained when you first uploaded the file, or by the file service if you used it directly. type: string AdminDeleteUploadsRes: type: object required: - id - object - deleted properties: id: type: string description: The file key of the upload deleted object: type: string description: The type of the object that was deleted. default: file deleted: type: boolean description: Whether or not the items were deleted. default: true AdminDeleteUserRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted user. object: type: string description: The type of the object that was deleted. default: user deleted: type: boolean description: Whether or not the items were deleted. default: true AdminDiscountConditionsDeleteRes: type: object required: - id - object - deleted - discount properties: id: type: string description: The ID of the deleted Discount Condition object: type: string description: The type of the object that was deleted. default: discount-condition deleted: type: boolean description: Whether the discount condition was deleted successfully. default: true discount: description: The Discount to which the condition used to belong to. $ref: '#/components/schemas/Discount' AdminDiscountConditionsRes: type: object x-expanded-relations: field: discount_condition relations: - discount_rule required: - discount_condition properties: discount_condition: description: Discount condition details. $ref: '#/components/schemas/DiscountCondition' AdminDiscountsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Discount object: type: string description: The type of the object that was deleted. default: discount deleted: type: boolean description: Whether the discount was deleted successfully. default: true AdminDiscountsListRes: type: object description: The list of discounts with pagination fields. x-expanded-relations: field: discounts relations: - parent_discount - regions - rule - rule.conditions required: - discounts - count - offset - limit properties: discounts: type: array description: The list of discounts. items: $ref: '#/components/schemas/Discount' count: type: integer description: The total number of items available offset: type: integer description: The number of discounts skipped when retrieving the discounts. limit: type: integer description: The number of items per page AdminDiscountsRes: type: object description: The discount's details. x-expanded-relations: field: discount relations: - parent_discount - regions - rule - rule.conditions eager: - regions.fulfillment_providers - regions.payment_providers required: - discount properties: discount: description: Discount details. $ref: '#/components/schemas/Discount' AdminDraftOrdersDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Draft Order. object: type: string description: The type of the object that was deleted. default: draft-order deleted: type: boolean description: Whether the draft order was deleted successfully. default: true AdminDraftOrdersListRes: description: The list of draft orders with pagination fields. type: object x-expanded-relations: field: draft_orders relations: - order - cart - cart.items - cart.items.adjustments required: - draft_orders - count - offset - limit properties: draft_orders: type: array description: An array of draft order's details. items: $ref: '#/components/schemas/DraftOrder' count: type: integer description: The total number of items available offset: type: integer description: The number of draft orders skipped when retrieving the draft orders. limit: type: integer description: The number of items per page AdminDraftOrdersRes: type: object description: The list of draft orders. x-expanded-relations: field: draft_order relations: - order - cart - cart.items - cart.items.adjustments - cart.billing_address - cart.customer - cart.discounts - cart.discounts.rule - cart.items - cart.items.adjustments - cart.payment - cart.payment_sessions - cart.region - cart.region.payment_providers - cart.shipping_address - cart.shipping_methods - cart.shipping_methods.shipping_option eager: - cart.region.fulfillment_providers - cart.region.payment_providers - cart.shipping_methods.shipping_option implicit: - cart.discounts - cart.discounts.rule - cart.gift_cards - cart.items - cart.items.adjustments - cart.items.tax_lines - cart.items.variant - cart.items.variant.product - cart.items.variant.product.profiles - cart.region - cart.region.tax_rates - cart.shipping_address - cart.shipping_methods - cart.shipping_methods.tax_lines totals: - cart.discount_total - cart.gift_card_tax_total - cart.gift_card_total - cart.item_tax_total - cart.refundable_amount - cart.refunded_total - cart.shipping_tax_total - cart.shipping_total - cart.subtotal - cart.tax_total - cart.total - cart.items.discount_total - cart.items.gift_card_total - cart.items.original_tax_total - cart.items.original_total - cart.items.refundable - cart.items.subtotal - cart.items.tax_total - cart.items.total required: - draft_order properties: draft_order: description: Draft order's details. $ref: '#/components/schemas/DraftOrder' AdminExtendedStoresRes: type: object description: The store's details with additional details like payment and tax providers. x-expanded-relations: field: store relations: - currencies - default_currency required: - store properties: store: description: Store details. $ref: '#/components/schemas/ExtendedStoreDTO' AdminGetRegionsRegionFulfillmentOptionsRes: type: object description: The list of fulfillment options in a region. required: - fulfillment_options properties: fulfillment_options: type: array description: Fulfillment providers details. items: type: object required: - provider_id - options properties: provider_id: description: ID of the fulfillment provider type: string options: description: fulfillment provider options type: array items: type: object example: - id: manual-fulfillment - id: manual-fulfillment-return is_return: true AdminGetVariantsVariantInventoryRes: type: object description: The variant's inventory details. properties: variant: type: object description: The product variant's inventory details. $ref: '#/components/schemas/VariantInventory' AdminGiftCardsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Gift Card object: type: string description: The type of the object that was deleted. default: gift-card deleted: type: boolean description: Whether the gift card was deleted successfully. default: true AdminGiftCardsListRes: type: object description: The list of gift cards with pagination fields. x-expanded-relations: field: gift_cards relations: - order - region eager: - region.fulfillment_providers - region.payment_providers required: - gift_cards - count - offset - limit properties: gift_cards: type: array description: The list of gift cards. items: $ref: '#/components/schemas/GiftCard' count: type: integer description: The total number of items available offset: type: integer description: The number of gift cards skipped when retrieving the gift cards. limit: type: integer description: The number of items per page AdminGiftCardsRes: type: object description: The gift card's details. x-expanded-relations: field: gift_card relations: - order - region eager: - region.fulfillment_providers - region.payment_providers required: - gift_card properties: gift_card: description: A gift card's details. $ref: '#/components/schemas/GiftCard' AdminInventoryItemsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Inventory Item. object: type: string description: The type of the object that was deleted. format: inventory_item deleted: type: boolean description: Whether or not the Inventory Item was deleted. default: true AdminInventoryItemsListRes: type: object required: - inventory_items - count - offset - limit properties: inventory_items: type: array description: an array of Inventory Item details items: $ref: '#/components/schemas/InventoryItemDTO' count: type: integer description: The total number of items available offset: type: integer description: The number of inventory items skipped when retrieving the inventory items. limit: type: integer description: The number of items per page AdminInventoryItemsListWithVariantsAndLocationLevelsRes: type: object required: - inventory_items - count - offset - limit properties: inventory_items: type: array description: an array of Inventory Item details items: $ref: '#/components/schemas/DecoratedInventoryItemDTO' count: type: integer description: The total number of items available offset: type: integer description: The number of inventory items skipped when retrieving the inventory items. limit: type: integer description: The number of items per page AdminInventoryItemsLocationLevelsRes: type: object description: Details of inventory items and their associated location levels. required: - inventory_item properties: inventory_item: type: object description: An inventory item's ID and associated location levels. required: - id - location_levels properties: id: description: The id of the location type: string location_levels: description: List of stock levels at a given location type: array items: $ref: '#/components/schemas/InventoryLevelDTO' AdminInventoryItemsRes: type: object description: The inventory item's details. required: - inventory_item properties: inventory_item: description: Inventory Item details $ref: '#/components/schemas/InventoryItemDTO' AdminInviteDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Invite. object: type: string description: The type of the object that was deleted. default: invite deleted: type: boolean description: Whether or not the invite was deleted. default: true AdminListInvitesRes: description: The list of invites. type: object required: - invites properties: invites: type: array description: An array of invites items: $ref: '#/components/schemas/Invite' AdminNotesDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Note. object: type: string description: The type of the object that was deleted. default: note deleted: type: boolean description: Whether or not the Note was deleted. default: true AdminNotesListRes: type: object description: The list of notes with pagination fields. required: - notes - count - offset - limit properties: notes: type: array description: An array of notes items: $ref: '#/components/schemas/Note' count: type: integer description: The total number of items available offset: type: integer description: The number of notes skipped when retrieving the notes. limit: type: integer description: The number of items per page AdminNotesRes: type: object description: The note's details. required: - note properties: note: description: Note details. $ref: '#/components/schemas/Note' AdminNotificationsListRes: type: object x-expanded-relations: field: notifications relations: - resends required: - notifications properties: notifications: type: array description: an array of notifications items: $ref: '#/components/schemas/Notification' count: type: integer description: The total number of notifications offset: type: integer description: The number of notifications skipped when retrieving the notifications. limit: type: integer description: The number of notifications per page AdminNotificationsRes: type: object description: The notification's details. x-expanded-relations: field: notification relations: - resends required: - notification properties: notification: description: Notification details $ref: '#/components/schemas/Notification' AdminOrderEditDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Order Edit. object: type: string description: The type of the object that was deleted. default: order_edit deleted: type: boolean description: Whether or not the Order Edit was deleted. default: true AdminOrderEditItemChangeDeleteRes: type: object description: The details of deleting order edit item changes. required: - id - object - deleted properties: id: type: string description: The ID of the deleted Order Edit Item Change. object: type: string description: The type of the object that was deleted. default: item_change deleted: type: boolean description: Whether or not the Order Edit Item Change was deleted. default: true AdminOrderEditsListRes: type: object description: The list of order edits with pagination fields. x-expanded-relations: field: order_edits relations: - changes - changes.line_item - changes.line_item.variant - changes.original_line_item - changes.original_line_item.variant - items - items.adjustments - items.tax_lines - items.variant - payment_collection implicit: - items - items.tax_lines - items.adjustments - items.variant totals: - difference_due - discount_total - gift_card_tax_total - gift_card_total - shipping_total - subtotal - tax_total - total - items.discount_total - items.gift_card_total - items.original_tax_total - items.original_total - items.refundable - items.subtotal - items.tax_total - items.total required: - order_edits - count - offset - limit properties: order_edits: type: array description: An array of order edit details items: $ref: '#/components/schemas/OrderEdit' count: type: integer description: The total number of items available offset: type: integer description: The number of order edits skipped when retrieving the order edits. limit: type: integer description: The number of items per page AdminOrderEditsRes: type: object description: The order edit details. x-expanded-relations: field: order_edit relations: - changes - changes.line_item - changes.line_item.variant - changes.original_line_item - changes.original_line_item.variant - items - items.adjustments - items.tax_lines - items.variant - payment_collection implicit: - items - items.tax_lines - items.adjustments - items.variant totals: - difference_due - discount_total - gift_card_tax_total - gift_card_total - shipping_total - subtotal - tax_total - total - items.discount_total - items.gift_card_total - items.original_tax_total - items.original_total - items.refundable - items.subtotal - items.tax_total - items.total required: - order_edit properties: order_edit: description: Order edit details $ref: '#/components/schemas/OrderEdit' AdminOrdersListRes: type: object description: The list of orders with pagination fields. x-expanded-relations: field: orders relations: - billing_address - claims - claims.additional_items - claims.additional_items.variant - claims.claim_items - claims.claim_items.images - claims.claim_items.item - claims.fulfillments - claims.fulfillments.tracking_links - claims.return_order - claims.return_order.shipping_method - claims.return_order.shipping_method.tax_lines - claims.shipping_address - claims.shipping_methods - customer - discounts - discounts.rule - fulfillments - fulfillments.items - fulfillments.tracking_links - gift_card_transactions - gift_cards - items - payments - refunds - region - returns - returns.items - returns.items.reason - returns.shipping_method - returns.shipping_method.tax_lines - shipping_address - shipping_methods eager: - fulfillments.items - region.fulfillment_providers - region.payment_providers - returns.items - shipping_methods.shipping_option implicit: - claims - claims.additional_items - claims.additional_items.adjustments - claims.additional_items.refundable - claims.additional_items.tax_lines - discounts - discounts.rule - gift_card_transactions - gift_card_transactions.gift_card - gift_cards - items - items.adjustments - items.refundable - items.tax_lines - items.variant - items.variant.product - items.variant.product.profiles - refunds - region - shipping_methods - shipping_methods.tax_lines - swaps - swaps.additional_items - swaps.additional_items.adjustments - swaps.additional_items.refundable - swaps.additional_items.tax_lines totals: - discount_total - gift_card_tax_total - gift_card_total - paid_total - refundable_amount - refunded_total - shipping_total - subtotal - tax_total - total - claims.additional_items.discount_total - claims.additional_items.gift_card_total - claims.additional_items.original_tax_total - claims.additional_items.original_total - claims.additional_items.refundable - claims.additional_items.subtotal - claims.additional_items.tax_total - claims.additional_items.total - items.discount_total - items.gift_card_total - items.original_tax_total - items.original_total - items.refundable - items.subtotal - items.tax_total - items.total - swaps.additional_items.discount_total - swaps.additional_items.gift_card_total - swaps.additional_items.original_tax_total - swaps.additional_items.original_total - swaps.additional_items.refundable - swaps.additional_items.subtotal - swaps.additional_items.tax_total - swaps.additional_items.total required: - orders - count - offset - limit properties: orders: type: array description: An array of order details. items: $ref: '#/components/schemas/Order' count: type: integer description: The total number of items available offset: type: integer description: The number of orders skipped when retrieving the orders. limit: type: integer description: The number of items per page AdminOrdersOrderLineItemReservationReq: type: object required: - location_id properties: location_id: description: The ID of the location of the reservation type: string quantity: description: The quantity to reserve type: number AdminOrdersRes: type: object description: The order's details. x-expanded-relations: field: order relations: - billing_address - claims - claims.additional_items - claims.additional_items.variant - claims.claim_items - claims.claim_items.images - claims.claim_items.item - claims.fulfillments - claims.fulfillments.tracking_links - claims.return_order - claims.return_order.shipping_method - claims.return_order.shipping_method.tax_lines - claims.shipping_address - claims.shipping_methods - customer - discounts - discounts.rule - fulfillments - fulfillments.items - fulfillments.tracking_links - gift_card_transactions - gift_cards - items - payments - refunds - region - returns - returns.items - returns.items.reason - returns.shipping_method - returns.shipping_method.tax_lines - shipping_address - shipping_methods eager: - fulfillments.items - region.fulfillment_providers - region.payment_providers - returns.items - shipping_methods.shipping_option implicit: - claims - claims.additional_items - claims.additional_items.adjustments - claims.additional_items.refundable - claims.additional_items.tax_lines - discounts - discounts.rule - gift_card_transactions - gift_card_transactions.gift_card - gift_cards - items - items.adjustments - items.refundable - items.tax_lines - items.variant - items.variant.product - items.variant.product.profiles - refunds - region - shipping_methods - shipping_methods.tax_lines - swaps - swaps.additional_items - swaps.additional_items.adjustments - swaps.additional_items.refundable - swaps.additional_items.tax_lines totals: - discount_total - gift_card_tax_total - gift_card_total - paid_total - refundable_amount - refunded_total - shipping_total - subtotal - tax_total - total - claims.additional_items.discount_total - claims.additional_items.gift_card_total - claims.additional_items.original_tax_total - claims.additional_items.original_total - claims.additional_items.refundable - claims.additional_items.subtotal - claims.additional_items.tax_total - claims.additional_items.total - items.discount_total - items.gift_card_total - items.original_tax_total - items.original_total - items.refundable - items.subtotal - items.tax_total - items.total - swaps.additional_items.discount_total - swaps.additional_items.gift_card_total - swaps.additional_items.original_tax_total - swaps.additional_items.original_total - swaps.additional_items.refundable - swaps.additional_items.subtotal - swaps.additional_items.tax_total - swaps.additional_items.total required: - order properties: order: description: Order details. $ref: '#/components/schemas/Order' AdminPaymentCollectionDeleteRes: type: object description: The details of deleting a payment collection. required: - id - object - deleted properties: id: type: string description: The ID of the deleted Payment Collection. object: type: string description: The type of the object that was deleted. default: payment_collection deleted: type: boolean description: Whether or not the Payment Collection was deleted. default: true AdminPaymentCollectionsRes: type: object description: The payment collection's details. x-expanded-relations: field: payment_collection relations: - payment_sessions - payments - region eager: - region.fulfillment_providers - region.payment_providers required: - payment_collection properties: payment_collection: description: Payment Collection details. $ref: '#/components/schemas/PaymentCollection' AdminPaymentProvidersList: type: object description: The list of payment providers in a store. required: - payment_providers properties: payment_providers: type: array description: An array of payment providers details. items: $ref: '#/components/schemas/PaymentProvider' AdminPaymentRes: type: object description: The payment's details. required: - payment properties: payment: description: Payment details $ref: '#/components/schemas/Payment' AdminPostAppsReq: type: object required: - application_name - state - code properties: application_name: type: string description: Name of the application for to generate the token for. state: type: string description: State of the application. code: type: string description: The code for the generated token. AdminPostAuthReq: type: object description: The admin's credentials used to log in. required: - email - password properties: email: type: string description: The user's email. format: email password: type: string description: The user's password. format: password AdminPostBatchesReq: type: object description: The details of the batch job to create. required: - type - context properties: type: type: string description: The type of batch job to start, which is defined by the `batchType` property of the associated batch job strategy. example: product-export context: type: object description: Additional infomration regarding the batch to be used for processing. example: shape: prices: - region: null currency_code: eur dynamicImageColumnCount: 4 dynamicOptionColumnCount: 2 list_config: skip: 0 take: 50 order: created_at: DESC relations: - variants - variant.prices - images dry_run: type: boolean description: Set a batch job in dry_run mode, which would delay executing the batch job until it's confirmed. default: false AdminPostCollectionsCollectionReq: type: object description: The product collection's details to update. properties: title: type: string description: The title of the collection. handle: type: string description: An optional handle to be used in slugs. If none is provided, the kebab-case version of the title will be used. metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostCollectionsReq: type: object description: The product collection's details. required: - title properties: title: type: string description: The title of the collection. handle: type: string description: An optional handle to be used in slugs. If none is provided, the kebab-case version of the title will be used. metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostCurrenciesCurrencyReq: type: object description: The details to update in the currency properties: includes_tax: type: boolean x-featureFlag: tax_inclusive_pricing description: Tax included in prices of currency. AdminPostCustomerGroupsGroupCustomersBatchReq: type: object description: The customers to add to the customer group. required: - customer_ids properties: customer_ids: description: The ids of the customers to add type: array items: type: object required: - id properties: id: description: ID of the customer type: string AdminPostCustomerGroupsGroupReq: type: object description: The details to update in the customer group. properties: name: description: Name of the customer group type: string metadata: description: Metadata of the customer group. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostCustomerGroupsReq: type: object description: The details of the customer group to create. required: - name properties: name: type: string description: Name of the customer group metadata: type: object description: Metadata of the customer group. externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostCustomersCustomerReq: type: object description: The details of the customer to update. properties: email: type: string description: The Customer's email. You can't update the email of a registered customer. format: email first_name: type: string description: The Customer's first name. last_name: type: string description: The Customer's last name. phone: type: string description: The Customer's phone number. password: type: string description: The Customer's password. format: password groups: type: array description: A list of customer groups to which the customer belongs. items: type: object required: - id properties: id: description: The ID of a customer group type: string metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostCustomersReq: type: object description: The details of the customer to create. required: - email - first_name - last_name - password properties: email: type: string description: The customer's email. format: email first_name: type: string description: The customer's first name. last_name: type: string description: The customer's last name. password: type: string description: The customer's password. format: password phone: type: string description: The customer's phone number. metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostDiscountsDiscountConditions: type: object required: - operator properties: operator: description: Operator of the condition. `in` indicates that discountable resources are within the specified resources. `not_in` indicates that discountable resources are everything but the specified resources. type: string enum: - in - not_in products: type: array description: list of product IDs if the condition's type is `products`. items: type: string product_types: type: array description: list of product type IDs if the condition's type is `product_types`. items: type: string product_collections: type: array description: list of product collection IDs if the condition's type is `product_collections`. items: type: string product_tags: type: array description: list of product tag IDs if the condition's type is `product_tags`. items: type: string customer_groups: type: array description: list of customer group IDs if the condition's type is `customer_groups`. items: type: string AdminPostDiscountsDiscountConditionsCondition: type: object properties: products: type: array description: list of product IDs if the condition's type is `products`. items: type: string product_types: type: array description: list of product type IDs if the condition's type is `product_types`. items: type: string product_collections: type: array description: list of product collection IDs if the condition's type is `product_collections`. items: type: string product_tags: type: array description: list of product tag IDs if the condition's type is `product_tags` items: type: string customer_groups: type: array description: list of customer group IDs if the condition's type is `customer_groups`. items: type: string AdminPostDiscountsDiscountConditionsConditionBatchReq: type: object description: The details of the resources to add. required: - resources properties: resources: description: The resources to be added to the discount condition type: array items: type: object required: - id properties: id: description: The ID of the item type: string AdminPostDiscountsDiscountDynamicCodesReq: type: object description: The details of the dynamic discount to create. required: - code properties: code: type: string description: A unique code that will be used to redeem the Discount usage_limit: type: number description: Maximum number of times the discount code can be used default: 1 metadata: type: object description: An optional set of key-value pairs to hold additional information. externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostDiscountsDiscountReq: type: object description: The details of the discount to update. properties: code: type: string description: A unique code that will be used to redeem the discount rule: description: The discount rule that defines how discounts are calculated type: object required: - id properties: id: type: string description: The ID of the Rule description: type: string description: A short description of the discount value: type: number description: The value that the discount represents. This will depend on the type of the discount. allocation: type: string description: The scope that the discount should apply to. `total` indicates that the discount should be applied on the cart total, and `item` indicates that the discount should be applied to each discountable item in the cart. enum: - total - item conditions: type: array description: A set of conditions that can be used to limit when the discount can be used. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided based on the discount condition's type. items: type: object required: - operator properties: id: type: string description: The ID of the condition operator: type: string description: Operator of the condition. `in` indicates that discountable resources are within the specified resources. `not_in` indicates that discountable resources are everything but the specified resources. enum: - in - not_in products: type: array description: list of product IDs if the condition's type is `products`. items: type: string product_types: type: array description: list of product type IDs if the condition's type is `product_types`. items: type: string product_collections: type: array description: list of product collection IDs if the condition's type is `product_collections`. items: type: string product_tags: type: array description: list of product tag IDs if the condition's type is `product_tags`. items: type: string customer_groups: type: array description: list of customer group IDs if the condition's type is `customer_groups`. items: type: string is_disabled: type: boolean description: Whether the discount code is disabled on creation. If set to `true`, it will not be available for customers. starts_at: type: string format: date-time description: The date and time at which the discount should be available. ends_at: type: string format: date-time description: The date and time at which the discount should no longer be available. valid_duration: type: string description: The duration the discount runs between example: P3Y6M4DT12H30M5S usage_limit: type: number description: Maximum number of times the discount can be used regions: description: A list of region IDs representing the Regions in which the Discount can be used. type: array items: type: string metadata: description: An object containing metadata of the discount type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostDiscountsReq: type: object description: The details of the discount to create. required: - code - rule - regions properties: code: type: string description: A unique code that will be used to redeem the discount is_dynamic: type: boolean description: Whether the discount should have multiple instances of itself, each with a different code. This can be useful for automatically generated discount codes that all have to follow a common set of rules. default: false rule: description: The discount rule that defines how discounts are calculated type: object required: - type - value - allocation properties: description: type: string description: A short description of the discount type: type: string description: The type of the discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers. enum: - fixed - percentage - free_shipping value: type: number description: The value that the discount represents. This will depend on the type of the discount. allocation: type: string description: The scope that the discount should apply to. `total` indicates that the discount should be applied on the cart total, and `item` indicates that the discount should be applied to each discountable item in the cart. enum: - total - item conditions: type: array description: A set of conditions that can be used to limit when the discount can be used. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided based on the discount condition's type. items: type: object required: - operator properties: operator: type: string description: Operator of the condition. `in` indicates that discountable resources are within the specified resources. `not_in` indicates that discountable resources are everything but the specified resources. enum: - in - not_in products: type: array description: list of product IDs if the condition's type is `products`. items: type: string product_types: type: array description: list of product type IDs if the condition's type is `product_types`. items: type: string product_collections: type: array description: list of product collection IDs if the condition's type is `product_collections`. items: type: string product_tags: type: array description: list of product tag IDs if the condition's type is `product_tags`. items: type: string customer_groups: type: array description: list of customer group IDs if the condition's type is `customer_groups`. items: type: string is_disabled: type: boolean description: Whether the discount code is disabled on creation. If set to `true`, it will not be available for customers. default: false starts_at: type: string format: date-time description: The date and time at which the discount should be available. ends_at: type: string format: date-time description: The date and time at which the discount should no longer be available. valid_duration: type: string description: The duration the discount runs between example: P3Y6M4DT12H30M5S regions: description: A list of region IDs representing the Regions in which the Discount can be used. type: array items: type: string usage_limit: type: number description: Maximum number of times the discount can be used metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostDraftOrdersDraftOrderLineItemsItemReq: type: object description: The details to update of the line item. properties: unit_price: description: The custom price of the line item. If a `variant_id` is supplied, the price provided here will override the variant's price. type: integer title: description: The title of the line item if `variant_id` is not provided. type: string quantity: description: The quantity of the line item. type: integer metadata: description: The optional key-value map with additional details about the Line Item. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostDraftOrdersDraftOrderLineItemsReq: type: object description: The details of the line item to create. required: - quantity properties: variant_id: description: The ID of the Product Variant associated with the line item. If the line item is custom, the `variant_id` should be omitted. type: string unit_price: description: The custom price of the line item. If a `variant_id` is supplied, the price provided here will override the variant's price. type: integer title: description: The title of the line item if `variant_id` is not provided. type: string default: Custom item quantity: description: The quantity of the line item. type: integer metadata: description: The optional key-value map with additional details about the Line Item. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostDraftOrdersDraftOrderRegisterPaymentRes: type: object description: The order's details. required: - order properties: order: description: Order's details. $ref: '#/components/schemas/Order' AdminPostDraftOrdersDraftOrderReq: type: object description: The details of the draft order to update. properties: region_id: type: string description: The ID of the Region to create the Draft Order in. country_code: type: string description: The 2 character ISO code for the Country. externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. email: type: string description: An email to be used in the Draft Order. format: email billing_address: description: The Address to be used for billing purposes. anyOf: - $ref: '#/components/schemas/AddressPayload' - type: string shipping_address: description: The Address to be used for shipping purposes. anyOf: - $ref: '#/components/schemas/AddressPayload' - type: string discounts: description: An array of Discount codes to add to the Draft Order. type: array items: type: object required: - code properties: code: description: The code that a Discount is identifed by. type: string no_notification_order: description: An optional flag passed to the resulting order that indicates whether the customer should receive notifications about order updates. type: boolean customer_id: description: The ID of the customer this draft order is associated with. type: string AdminPostDraftOrdersReq: type: object description: The details of the draft order to create. required: - email - region_id - shipping_methods properties: status: description: The status of the draft order. The draft order's default status is `open`. It's changed to `completed` when its payment is marked as paid. type: string enum: - open - completed email: description: The email of the customer of the draft order type: string format: email billing_address: description: The Address to be used for billing purposes. anyOf: - $ref: '#/components/schemas/AddressPayload' - type: string shipping_address: description: The Address to be used for shipping purposes. anyOf: - $ref: '#/components/schemas/AddressPayload' - type: string items: description: The draft order's line items. type: array items: type: object required: - quantity properties: variant_id: description: The ID of the Product Variant associated with the line item. If the line item is custom, the `variant_id` should be omitted. type: string unit_price: description: The custom price of the line item. If a `variant_id` is supplied, the price provided here will override the variant's price. type: integer title: description: The title of the line item if `variant_id` is not provided. type: string quantity: description: The quantity of the line item. type: integer metadata: description: The optional key-value map with additional details about the line item. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute region_id: description: The ID of the region for the draft order type: string discounts: description: The discounts to add to the draft order type: array items: type: object required: - code properties: code: description: The code of the discount to apply type: string customer_id: description: The ID of the customer this draft order is associated with. type: string no_notification_order: description: An optional flag passed to the resulting order that indicates whether the customer should receive notifications about order updates. type: boolean shipping_methods: description: The shipping methods for the draft order type: array items: type: object required: - option_id properties: option_id: description: The ID of the shipping option in use type: string data: description: The optional additional data needed for the shipping method type: object price: description: The price of the shipping method. type: integer metadata: description: The optional key-value map with additional details about the Draft Order. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostGiftCardsGiftCardReq: type: object description: The details to update of the gift card. properties: balance: type: integer description: The value (excluding VAT) that the Gift Card should represent. is_disabled: type: boolean description: Whether the Gift Card is disabled on creation. If set to `true`, the gift card will not be available for customers. ends_at: type: string format: date-time description: The date and time at which the Gift Card should no longer be available. region_id: description: The ID of the Region in which the Gift Card can be used. type: string metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostGiftCardsReq: type: object description: The details of the gift card to create. required: - region_id properties: value: type: integer description: The value (excluding VAT) that the Gift Card should represent. is_disabled: type: boolean description: Whether the Gift Card is disabled on creation. If set to `true`, the gift card will not be available for customers. ends_at: type: string format: date-time description: The date and time at which the Gift Card should no longer be available. region_id: description: The ID of the Region in which the Gift Card can be used. type: string metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostInventoryItemsInventoryItemReq: type: object description: The attributes to update in an inventory item. properties: hs_code: description: The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string origin_country: description: The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string mid_code: description: The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string material: description: The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string weight: description: The weight of the Inventory Item. May be used in shipping rate calculations. type: number height: description: The height of the Inventory Item. May be used in shipping rate calculations. type: number width: description: The width of the Inventory Item. May be used in shipping rate calculations. type: number length: description: The length of the Inventory Item. May be used in shipping rate calculations. type: number title: description: The inventory item's title. type: string description: description: The inventory item's description. type: string thumbnail: description: The inventory item's thumbnail. type: string requires_shipping: description: Whether the item requires shipping. type: boolean AdminPostInventoryItemsItemLocationLevelsLevelReq: type: object properties: stocked_quantity: description: the total stock quantity of an inventory item at the given location ID type: number incoming_quantity: description: the incoming stock quantity of an inventory item at the given location ID type: number AdminPostInventoryItemsItemLocationLevelsReq: type: object description: The details of the location level to create. required: - location_id - stocked_quantity properties: location_id: description: the ID of the stock location type: string stocked_quantity: description: the stock quantity of the inventory item at this location type: number incoming_quantity: description: the incoming stock quantity of the inventory item at this location type: number AdminPostInventoryItemsReq: type: object description: The details of the inventory item to create. required: - variant_id properties: variant_id: description: The ID of the variant to create the inventory item for. type: string sku: description: The unique SKU of the associated Product Variant. type: string ean: description: The EAN number of the item. type: string upc: description: The UPC number of the item. type: string barcode: description: A generic GTIN field for the Product Variant. type: string hs_code: description: The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string inventory_quantity: description: The amount of stock kept of the associated Product Variant. type: integer default: 0 allow_backorder: description: Whether the associated Product Variant can be purchased when out of stock. type: boolean manage_inventory: description: Whether Medusa should keep track of the inventory for the associated Product Variant. type: boolean default: true weight: description: The weight of the Inventory Item. May be used in shipping rate calculations. type: number length: description: The length of the Inventory Item. May be used in shipping rate calculations. type: number height: description: The height of the Inventory Item. May be used in shipping rate calculations. type: number width: description: The width of the Inventory Item. May be used in shipping rate calculations. type: number origin_country: description: The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string mid_code: description: The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string material: description: The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string title: description: The inventory item's title. type: string description: description: The inventory item's description. type: string thumbnail: description: The inventory item's thumbnail. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostInvitesInviteAcceptReq: type: object description: The details of the invite to be accepted. required: - token - user properties: token: description: The token of the invite to accept. This is a unique token generated when the invite was created or resent. type: string user: description: The details of the user to create. type: object required: - first_name - last_name - password properties: first_name: type: string description: the first name of the User last_name: type: string description: the last name of the User password: description: The password for the User type: string format: password AdminPostInvitesReq: type: object required: - user - role properties: user: description: The email associated with the invite. Once the invite is accepted, the email will be associated with the created user. type: string format: email role: description: The role of the user to be created. This does not actually change the privileges of the user that is eventually created. type: string enum: - admin - member - developer AdminPostNotesNoteReq: type: object description: The details to update of the note. required: - value properties: value: type: string description: The description of the Note. AdminPostNotesReq: type: object description: The details of the note to be created. required: - resource_id - resource_type - value properties: resource_id: type: string description: The ID of the resource which the Note relates to. For example, an order ID. resource_type: type: string description: The type of resource which the Note relates to. For example, `order`. value: type: string description: The content of the Note to create. AdminPostNotificationsNotificationResendReq: type: object description: The resend details. properties: to: description: A new address or user identifier that the Notification should be sent to. If not provided, the previous `to` field of the notification will be used. type: string AdminPostOrderEditsEditLineItemsLineItemReq: type: object description: The details to create or update of the line item change. required: - quantity properties: quantity: description: The quantity to update type: number AdminPostOrderEditsEditLineItemsReq: type: object description: The details of the line item change to create. required: - variant_id - quantity properties: variant_id: description: The ID of the product variant associated with the item. type: string quantity: description: The quantity of the item. type: number metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostOrderEditsOrderEditReq: type: object description: The details to update of the order edit. properties: internal_note: description: An optional note to create or update in the order edit. type: string AdminPostOrderEditsReq: type: object description: The details of the order edit to create. required: - order_id properties: order_id: description: The ID of the order to create the edit for. type: string internal_note: description: An optional note to associate with the order edit. type: string AdminPostOrdersOrderClaimsClaimFulfillmentsReq: type: object properties: metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute no_notification: description: If set to `true`, no notification will be sent to the customer related to this Claim. type: boolean location_id: description: The ID of the fulfillment's location. type: string AdminPostOrdersOrderClaimsClaimReq: type: object properties: claim_items: description: The Claim Items that the Claim will consist of. type: array items: type: object required: - id - images - tags properties: id: description: The ID of the Claim Item. type: string item_id: description: The ID of the Line Item that will be claimed. type: string quantity: description: The number of items that will be returned type: integer note: description: Short text describing the Claim Item in further detail. type: string reason: description: The reason for the Claim type: string enum: - missing_item - wrong_item - production_failure - other tags: description: A list o tags to add to the Claim Item type: array items: type: object properties: id: type: string description: Tag ID value: type: string description: Tag value images: description: A list of image URL's that will be associated with the Claim type: array items: type: object properties: id: type: string description: Image ID url: type: string description: Image URL metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute shipping_methods: description: The Shipping Methods to send the additional Line Items with. type: array items: type: object properties: id: description: The ID of an existing Shipping Method type: string option_id: description: The ID of the Shipping Option to create a Shipping Method from type: string price: description: The price to charge for the Shipping Method type: integer data: description: An optional set of key-value pairs to hold additional information. type: object no_notification: description: If set to true no notification will be send related to this Swap. type: boolean metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostOrdersOrderClaimsClaimShipmentsReq: type: object required: - fulfillment_id properties: fulfillment_id: description: The ID of the Fulfillment. type: string tracking_numbers: description: An array of tracking numbers for the shipment. type: array items: type: string AdminPostOrdersOrderClaimsReq: type: object description: The details of the claim to be created. required: - type - claim_items properties: type: description: 'The type of the Claim. This will determine how the Claim is treated: `replace` Claims will result in a Fulfillment with new items being created, while a `refund` Claim will refund the amount paid for the claimed items.' type: string enum: - replace - refund claim_items: description: The Claim Items that the Claim will consist of. type: array items: type: object required: - item_id - quantity properties: item_id: description: The ID of the Line Item that will be claimed. type: string quantity: description: The number of items that will be returned type: integer note: description: Short text describing the Claim Item in further detail. type: string reason: description: The reason for the Claim type: string enum: - missing_item - wrong_item - production_failure - other tags: description: A list of tags to add to the Claim Item type: array items: type: string images: description: A list of image URL's that will be associated with the Claim items: type: string return_shipping: description: Optional details for the Return Shipping Method, if the items are to be sent back. Providing this field will result in a return being created and associated with the claim. type: object properties: option_id: type: string description: The ID of the Shipping Option to create the Shipping Method from. price: type: integer description: The price to charge for the Shipping Method. additional_items: description: The new items to send to the Customer. This is only used if the claim's type is `replace`. type: array items: type: object required: - variant_id - quantity properties: variant_id: description: The ID of the Product Variant. type: string quantity: description: The quantity of the Product Variant. type: integer shipping_methods: description: The Shipping Methods to send the additional Line Items with. This is only used if the claim's type is `replace`. type: array items: type: object properties: id: description: The ID of an existing Shipping Method type: string option_id: description: The ID of the Shipping Option to create a Shipping Method from type: string price: description: The price to charge for the Shipping Method type: integer data: description: An optional set of key-value pairs to hold additional information. type: object shipping_address: description: An optional shipping address to send the claimed items to. If not provided, the parent order's shipping address will be used. $ref: '#/components/schemas/AddressPayload' refund_amount: description: The amount to refund the customer. This is used when the claim's type is `refund`. type: integer no_notification: description: If set to true no notification will be send related to this Claim. type: boolean return_location_id: description: The ID of the location used for the associated return. type: string metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostOrdersOrderFulfillmentsReq: type: object description: The details of the fulfillment to be created. required: - items properties: items: description: The Line Items to include in the Fulfillment. type: array items: type: object required: - item_id - quantity properties: item_id: description: The ID of the Line Item to fulfill. type: string quantity: description: The quantity of the Line Item to fulfill. type: integer location_id: type: string description: The ID of the location where the items will be fulfilled from. no_notification: description: If set to `true`, no notification will be sent to the customer related to this fulfillment. type: boolean metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostOrdersOrderRefundsReq: type: object description: The details of the order refund. required: - amount - reason properties: amount: description: The amount to refund. It should be less than or equal the `refundable_amount` of the order. type: integer reason: description: The reason for the Refund. type: string note: description: A note with additional details about the Refund. type: string no_notification: description: If set to `true`, no notification will be sent to the customer related to this Refund. type: boolean AdminPostOrdersOrderReq: type: object description: The details to update of the order. properties: email: description: The email associated with the order type: string billing_address: description: The order's billing address $ref: '#/components/schemas/AddressPayload' shipping_address: description: The order's shipping address $ref: '#/components/schemas/AddressPayload' items: description: The line items of the order type: array items: $ref: '#/components/schemas/LineItem' region: description: ID of the region that the order is associated with. type: string discounts: description: The discounts applied to the order type: array items: $ref: '#/components/schemas/Discount' customer_id: description: The ID of the customer associated with the order. type: string payment_method: description: The payment method chosen for the order. type: object properties: provider_id: type: string description: The ID of the payment provider. data: description: Any data relevant for the given payment method. type: object shipping_method: description: The Shipping Method used for shipping the order. type: object properties: provider_id: type: string description: The ID of the shipping provider. profile_id: type: string description: The ID of the shipping profile. price: type: integer description: The price of the shipping. data: type: object description: Any data relevant to the specific shipping method. items: type: array items: $ref: '#/components/schemas/LineItem' description: Items to ship no_notification: description: If set to `true`, no notification will be sent to the customer related to this order. type: boolean AdminPostOrdersOrderReturnsReq: type: object description: The details of the requested return. required: - items properties: items: description: The line items that will be returned. type: array items: type: object required: - item_id - quantity properties: item_id: description: The ID of the Line Item. type: string reason_id: description: The ID of the Return Reason to use. type: string note: description: An optional note with information about the Return. type: string quantity: description: The quantity of the Line Item. type: integer return_shipping: description: The Shipping Method to be used to handle the return shipment. type: object properties: option_id: type: string description: The ID of the Shipping Option to create the Shipping Method from. price: type: integer description: The price to charge for the Shipping Method. note: description: An optional note with information about the Return. type: string receive_now: description: A flag to indicate if the Return should be registerd as received immediately. type: boolean default: false no_notification: description: If set to `true`, no notification will be sent to the customer related to this Return. type: boolean refund: description: The amount to refund. type: integer location_id: description: The ID of the location used for the return. type: string AdminPostOrdersOrderShipmentReq: type: object description: The details of the shipment to create. required: - fulfillment_id properties: fulfillment_id: description: The ID of the Fulfillment. type: string tracking_numbers: description: The tracking numbers for the shipment. type: array items: type: string no_notification: description: If set to true no notification will be send related to this Shipment. type: boolean AdminPostOrdersOrderShippingMethodsReq: type: object description: The shipping method's details. required: - price - option_id properties: price: type: number description: The price (excluding VAT) that should be charged for the Shipping Method option_id: type: string description: The ID of the Shipping Option to create the Shipping Method from. data: type: object description: The data required for the Shipping Option to create a Shipping Method. This depends on the Fulfillment Provider. AdminPostOrdersOrderSwapsReq: type: object description: The details of the swap to create. required: - return_items properties: return_items: description: The Line Items to associate with the swap's return. type: array items: type: object required: - item_id - quantity properties: item_id: description: The ID of the Line Item that will be returned. type: string quantity: description: The number of items that will be returned type: integer reason_id: description: The ID of the Return Reason to use. type: string note: description: An optional note with information about the Return. type: string return_shipping: description: The shipping method associated with the swap's return. type: object required: - option_id properties: option_id: type: string description: The ID of the Shipping Option to create the Shipping Method from. price: type: integer description: The price to charge for the Shipping Method. additional_items: description: The new items to send to the Customer. type: array items: type: object required: - variant_id - quantity properties: variant_id: description: The ID of the Product Variant. type: string quantity: description: The quantity of the Product Variant. type: integer sales_channel_id: type: string description: The ID of the sales channel associated with the swap. custom_shipping_options: description: An array of custom shipping options to potentially create a Shipping Method from to send the additional items. type: array items: type: object required: - option_id - price properties: option_id: description: The ID of the Shipping Option. type: string price: description: The custom price of the Shipping Option. type: integer no_notification: description: If set to `true`, no notification will be sent to the customer related to this Swap. type: boolean return_location_id: type: string description: The ID of the location used for the associated return. allow_backorder: description: If set to `true`, swaps can be completed with items out of stock type: boolean default: true AdminPostOrdersOrderSwapsSwapFulfillmentsReq: type: object properties: metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute no_notification: description: If set to `true`, no notification will be sent to the customer related to this swap. type: boolean location_id: description: The ID of the fulfillment's location. type: string AdminPostOrdersOrderSwapsSwapShipmentsReq: type: object required: - fulfillment_id properties: fulfillment_id: description: The ID of the Fulfillment. type: string tracking_numbers: description: The tracking numbers for the shipment. type: array items: type: string no_notification: description: If set to true no notification will be sent related to this Claim. type: boolean AdminPostPaymentRefundsReq: type: object description: The details of the refund to create. required: - amount - reason properties: amount: description: The amount to refund. type: integer reason: description: The reason for the Refund. type: string note: description: A note with additional details about the Refund. type: string AdminPostPriceListPricesPricesReq: type: object description: The details of the prices to add. properties: prices: description: The prices to update or add. type: array items: type: object required: - amount - variant_id properties: id: description: The ID of the price. type: string region_id: description: The ID of the Region for which the price is used. This is only required if `currecny_code` is not provided. type: string currency_code: description: The 3 character ISO currency code for which the price will be used. This is only required if `region_id` is not provided. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. variant_id: description: The ID of the Variant for which the price is used. type: string amount: description: The amount to charge for the Product Variant. type: integer min_quantity: description: The minimum quantity for which the price will be used. type: integer max_quantity: description: The maximum quantity for which the price will be used. type: integer override: description: If set to `true`, the prices will replace all existing prices associated with the Price List. type: boolean AdminPostPriceListsPriceListPriceListReq: type: object description: The details to update of the payment collection. properties: name: description: The name of the Price List type: string description: description: The description of the Price List. type: string starts_at: description: The date with timezone that the Price List starts being valid. type: string format: date ends_at: description: The date with timezone that the Price List ends being valid. type: string format: date type: description: The type of the Price List. type: string enum: - sale - override status: description: The status of the Price List. If the status is set to `draft`, the prices created in the price list will not be available of the customer. type: string enum: - active - draft prices: description: The prices of the Price List. type: array items: type: object required: - amount - variant_id properties: id: description: The ID of the price. type: string region_id: description: The ID of the Region for which the price is used. This is only required if `currecny_code` is not provided. type: string currency_code: description: The 3 character ISO currency code for which the price will be used. This is only required if `region_id` is not provided. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. variant_id: description: The ID of the Variant for which the price is used. type: string amount: description: The amount to charge for the Product Variant. type: integer min_quantity: description: The minimum quantity for which the price will be used. type: integer max_quantity: description: The maximum quantity for which the price will be used. type: integer customer_groups: type: array description: An array of customer groups that the Price List applies to. items: type: object required: - id properties: id: description: The ID of a customer group type: string includes_tax: description: Tax included in prices of price list x-featureFlag: tax_inclusive_pricing type: boolean AdminPostPriceListsPriceListReq: type: object description: The details of the price list to create. required: - name - description - type - prices properties: name: description: The name of the Price List. type: string description: description: The description of the Price List. type: string starts_at: description: The date with timezone that the Price List starts being valid. type: string format: date ends_at: description: The date with timezone that the Price List ends being valid. type: string format: date type: description: The type of the Price List. type: string enum: - sale - override status: description: The status of the Price List. If the status is set to `draft`, the prices created in the price list will not be available of the customer. type: string enum: - active - draft prices: description: The prices of the Price List. type: array items: type: object required: - amount - variant_id properties: region_id: description: The ID of the Region for which the price is used. This is only required if `currecny_code` is not provided. type: string currency_code: description: The 3 character ISO currency code for which the price will be used. This is only required if `region_id` is not provided. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. amount: description: The amount to charge for the Product Variant. type: integer variant_id: description: The ID of the Variant for which the price is used. type: string min_quantity: description: The minimum quantity for which the price will be used. type: integer max_quantity: description: The maximum quantity for which the price will be used. type: integer customer_groups: type: array description: An array of customer groups that the Price List applies to. items: type: object required: - id properties: id: description: The ID of a customer group type: string includes_tax: description: Tax included in prices of price list x-featureFlag: tax_inclusive_pricing type: boolean AdminPostProductCategoriesCategoryProductsBatchReq: type: object description: The details of the products to add to the product category. required: - product_ids properties: product_ids: description: The IDs of the products to add to the product category type: array items: type: object required: - id properties: id: type: string description: The ID of the product AdminPostProductCategoriesCategoryReq: type: object description: The details to update of the product category. properties: name: type: string description: The name to identify the Product Category by. description: type: string description: An optional text field to describe the Product Category by. handle: type: string description: A handle to be used in slugs. is_internal: type: boolean description: A flag to make product category an internal category for admins is_active: type: boolean description: A flag to make product category visible/hidden in the store front parent_category_id: type: string description: The ID of the parent product category rank: type: number description: The rank of the category in the tree node (starting from 0) metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostProductCategoriesReq: type: object description: The details of the product category to create. required: - name properties: name: type: string description: The name of the product category description: type: string description: The description of the product category. handle: type: string description: The handle of the product category. If none is provided, the kebab-case version of the name will be used. This field can be used as a slug in URLs. is_internal: type: boolean description: If set to `true`, the product category will only be available to admins. is_active: type: boolean description: If set to `false`, the product category will not be available in the storefront. parent_category_id: type: string description: The ID of the parent product category metadata: description: An optional set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostProductsProductMetadataReq: type: object required: - key - value properties: key: description: The metadata key type: string value: description: The metadata value type: string AdminPostProductsProductOptionsOption: type: object required: - title properties: title: description: The title of the Product Option type: string AdminPostProductsProductOptionsReq: type: object description: The details of the product option to create. required: - title properties: title: description: The title the Product Option. type: string example: Size AdminPostProductsProductReq: type: object description: The details to update of the product. properties: title: description: The title of the Product type: string subtitle: description: The subtitle of the Product type: string description: description: The description of the Product. type: string discountable: description: A flag to indicate if discounts can be applied to the Line Items generated from this Product type: boolean images: description: An array of images of the Product. Each value in the array is a URL to the image. You can use the upload API Routes to upload the image and obtain a URL. type: array items: type: string thumbnail: description: The thumbnail to use for the Product. The value is a URL to the thumbnail. You can use the upload API Routes to upload the thumbnail and obtain a URL. type: string handle: description: A unique handle to identify the Product by. If not provided, the kebab-case version of the product title will be used. This can be used as a slug in URLs. type: string status: description: The status of the product. The product is shown to the customer only if its status is `published`. type: string enum: - draft - proposed - published - rejected type: description: The Product Type to associate the Product with. type: object required: - value properties: id: description: The ID of an existing Product Type. If not provided, a new product type will be created. type: string value: description: The value of the Product Type. type: string collection_id: description: The ID of the Product Collection the Product belongs to. type: string tags: description: Product Tags to associate the Product with. type: array items: type: object required: - value properties: id: description: The ID of an existing Product Tag. If not provided, a new product tag will be created. type: string value: description: The value of the Tag. If the `id` is provided, the value of the existing tag will be updated. type: string sales_channels: description: Sales channels to associate the Product with. type: array items: type: object required: - id properties: id: description: The ID of an existing Sales channel. type: string categories: description: Product categories to add the Product to. x-featureFlag: product_categories type: array items: required: - id properties: id: description: The ID of a Product Category. type: string variants: description: An array of Product Variants to create with the Product. Each product variant must have a unique combination of Product Option values. type: array items: type: object properties: id: description: The id of an existing product variant. If provided, the details of the product variant will be updated. If not, a new product variant will be created. type: string title: description: The title of the product variant. type: string sku: description: The unique SKU of the product variant. type: string ean: description: The EAN number of the product variant. type: string upc: description: The UPC number of the product variant. type: string barcode: description: A generic GTIN field of the product variant. type: string hs_code: description: The Harmonized System code of the product variant. type: string inventory_quantity: description: The amount of stock kept of the product variant. type: integer allow_backorder: description: Whether the product variant can be purchased when out of stock. type: boolean manage_inventory: description: Whether Medusa should keep track of the inventory of this product variant. type: boolean weight: description: The weight of the product variant. type: number length: description: The length of the product variant. type: number height: description: The height of the product variant. type: number width: description: The width of the product variant. type: number origin_country: description: The country of origin of the product variant. type: string mid_code: description: The Manufacturer Identification code of the product variant. type: string material: description: The material composition of the product variant. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute prices: type: array description: An array of product variant prices. A product variant can have different prices for each region or currency code. externalDocs: url: https://docs.medusajs.com/modules/products/admin/manage-products#product-variant-prices description: Product variant pricing. items: type: object required: - amount properties: id: description: The ID of the Price. If provided, the existing price will be updated. Otherwise, a new price will be created. type: string region_id: description: The ID of the Region the price will be used in. This is only required if `currency_code` is not provided. type: string currency_code: description: The 3 character ISO currency code the price will be used in. This is only required if `region_id` is not provided. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. amount: description: The price amount. type: integer min_quantity: description: The minimum quantity required to be added to the cart for the price to be used. type: integer max_quantity: description: The maximum quantity required to be added to the cart for the price to be used. type: integer options: type: array description: An array of Product Option values that the variant corresponds to. items: type: object required: - option_id - value properties: option_id: description: The ID of the Option. type: string value: description: The value of the Product Option. type: string weight: description: The weight of the Product. type: number length: description: The length of the Product. type: number height: description: The height of the Product. type: number width: description: The width of the Product. type: number hs_code: description: The Harmonized System code of the product variant. type: string origin_country: description: The country of origin of the Product. type: string mid_code: description: The Manufacturer Identification code of the Product. type: string material: description: The material composition of the Product. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostProductsProductVariantsReq: type: object description: The details of the product variant to create. required: - title - prices - options properties: title: description: The title of the product variant. type: string sku: description: The unique SKU of the product variant. type: string ean: description: The EAN number of the product variant. type: string upc: description: The UPC number of the product variant. type: string barcode: description: A generic GTIN field of the product variant. type: string hs_code: description: The Harmonized System code of the product variant. type: string inventory_quantity: description: The amount of stock kept of the product variant. type: integer default: 0 allow_backorder: description: Whether the product variant can be purchased when out of stock. type: boolean manage_inventory: description: Whether Medusa should keep track of the inventory of this product variant. type: boolean default: true weight: description: The wieght of the product variant. type: number length: description: The length of the product variant. type: number height: description: The height of the product variant. type: number width: description: The width of the product variant. type: number origin_country: description: The country of origin of the product variant. type: string mid_code: description: The Manufacturer Identification code of the product variant. type: string material: description: The material composition of the product variant. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute prices: type: array description: An array of product variant prices. A product variant can have different prices for each region or currency code. externalDocs: url: https://docs.medusajs.com/modules/products/admin/manage-products#product-variant-prices description: Product variant pricing. items: type: object required: - amount properties: region_id: description: The ID of the Region the price will be used in. This is only required if `currency_code` is not provided. type: string currency_code: description: The 3 character ISO currency code the price will be used in. This is only required if `region_id` is not provided. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. amount: description: The price amount. type: integer min_quantity: description: The minimum quantity required to be added to the cart for the price to be used. type: integer max_quantity: description: The maximum quantity required to be added to the cart for the price to be used. type: integer options: type: array description: An array of Product Option values that the variant corresponds to. items: type: object required: - option_id - value properties: option_id: description: The ID of the Product Option. type: string value: description: A value to give to the Product Option. type: string AdminPostProductsProductVariantsVariantReq: type: object properties: title: description: The title of the product variant. type: string sku: description: The unique SKU of the product variant. type: string ean: description: The EAN number of the item. type: string upc: description: The UPC number of the item. type: string barcode: description: A generic GTIN field of the product variant. type: string hs_code: description: The Harmonized System code of the product variant. type: string inventory_quantity: description: The amount of stock kept of the product variant. type: integer allow_backorder: description: Whether the product variant can be purchased when out of stock. type: boolean manage_inventory: description: Whether Medusa should keep track of the inventory of this product variant. type: boolean weight: description: The weight of the product variant. type: number length: description: The length of the product variant. type: number height: description: The height of the product variant. type: number width: description: The width of the product variant. type: number origin_country: description: The country of origin of the product variant. type: string mid_code: description: The Manufacturer Identification code of the product variant. type: string material: description: The material composition of the product variant. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute prices: type: array description: An array of product variant prices. A product variant can have different prices for each region or currency code. externalDocs: url: https://docs.medusajs.com/modules/products/admin/manage-products#product-variant-prices description: Product variant pricing. items: type: object required: - amount properties: id: description: The ID of the price. If provided, the existing price will be updated. Otherwise, a new price will be created. type: string region_id: description: The ID of the Region the price will be used in. This is only required if `currency_code` is not provided. type: string currency_code: description: The 3 character ISO currency code the price will be used in. This is only required if `region_id` is not provided. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. amount: description: The price amount. type: integer min_quantity: description: The minimum quantity required to be added to the cart for the price to be used. type: integer max_quantity: description: The maximum quantity required to be added to the cart for the price to be used. type: integer options: type: array description: An array of Product Option values that the variant corresponds to. items: type: object required: - option_id - value properties: option_id: description: The ID of the Product Option. type: string value: description: The value of the Product Option. type: string AdminPostProductsReq: type: object description: The details of the product to create. required: - title properties: title: description: The title of the Product type: string subtitle: description: The subtitle of the Product type: string description: description: The description of the Product. type: string is_giftcard: description: A flag to indicate if the Product represents a Gift Card. Purchasing Products with this flag set to `true` will result in a Gift Card being created. type: boolean default: false discountable: description: A flag to indicate if discounts can be applied to the Line Items generated from this Product type: boolean default: true images: description: An array of images of the Product. Each value in the array is a URL to the image. You can use the upload API Routes to upload the image and obtain a URL. type: array items: type: string thumbnail: description: The thumbnail to use for the Product. The value is a URL to the thumbnail. You can use the upload API Routes to upload the thumbnail and obtain a URL. type: string handle: description: A unique handle to identify the Product by. If not provided, the kebab-case version of the product title will be used. This can be used as a slug in URLs. type: string status: description: The status of the product. The product is shown to the customer only if its status is `published`. type: string enum: - draft - proposed - published - rejected default: draft type: description: The Product Type to associate the Product with. type: object required: - value properties: id: description: The ID of an existing Product Type. If not provided, a new product type will be created. type: string value: description: The value of the Product Type. type: string collection_id: description: The ID of the Product Collection the Product belongs to. type: string tags: description: Product Tags to associate the Product with. type: array items: type: object required: - value properties: id: description: The ID of an existing Product Tag. If not provided, a new product tag will be created. type: string value: description: The value of the Tag. If the `id` is provided, the value of the existing tag will be updated. type: string sales_channels: description: Sales channels to associate the Product with. type: array items: type: object required: - id properties: id: description: The ID of an existing Sales channel. type: string categories: description: Product categories to add the Product to. x-featureFlag: product_categories type: array items: type: object required: - id properties: id: description: The ID of a Product Category. type: string options: description: The Options that the Product should have. A new product option will be created for every item in the array. type: array items: type: object required: - title properties: title: description: The title of the Product Option. type: string variants: description: An array of Product Variants to create with the Product. Each product variant must have a unique combination of Product Option values. type: array items: type: object required: - title properties: title: description: The title of the Product Variant. type: string sku: description: The unique SKU of the Product Variant. type: string ean: description: The EAN number of the item. type: string upc: description: The UPC number of the item. type: string barcode: description: A generic GTIN field of the Product Variant. type: string hs_code: description: The Harmonized System code of the Product Variant. type: string inventory_quantity: description: The amount of stock kept of the Product Variant. type: integer default: 0 allow_backorder: description: Whether the Product Variant can be purchased when out of stock. type: boolean manage_inventory: description: Whether Medusa should keep track of the inventory of this Product Variant. type: boolean weight: description: The wieght of the Product Variant. type: number length: description: The length of the Product Variant. type: number height: description: The height of the Product Variant. type: number width: description: The width of the Product Variant. type: number origin_country: description: The country of origin of the Product Variant. type: string mid_code: description: The Manufacturer Identification code of the Product Variant. type: string material: description: The material composition of the Product Variant. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute prices: type: array description: An array of product variant prices. A product variant can have different prices for each region or currency code. externalDocs: url: https://docs.medusajs.com/modules/products/admin/manage-products#product-variant-prices description: Product variant pricing. items: type: object required: - amount properties: region_id: description: The ID of the Region the price will be used in. This is only required if `currency_code` is not provided. type: string currency_code: description: The 3 character ISO currency code the price will be used in. This is only required if `region_id` is not provided. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. amount: description: The price amount. type: integer min_quantity: description: The minimum quantity required to be added to the cart for the price to be used. type: integer max_quantity: description: The maximum quantity required to be added to the cart for the price to be used. type: integer options: type: array description: An array of Product Option values that the variant corresponds to. The option values should be added into the array in the same index as in the `options` field of the product. externalDocs: url: https://docs.medusajs.com/modules/products/admin/manage-products#create-a-product description: Example of how to create a product with options and variants items: type: object required: - value properties: value: description: The value to give for the Product Option at the same index in the Product's `options` field. type: string weight: description: The weight of the Product. type: number length: description: The length of the Product. type: number height: description: The height of the Product. type: number width: description: The width of the Product. type: number hs_code: description: The Harmonized System code of the Product. type: string origin_country: description: The country of origin of the Product. type: string mid_code: description: The Manufacturer Identification code of the Product. type: string material: description: The material composition of the Product. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostProductsToCollectionReq: type: object description: The details of the products to add to the collection. required: - product_ids properties: product_ids: description: An array of Product IDs to add to the Product Collection. type: array items: description: The ID of a Product to add to the Product Collection. type: string AdminPostPublishableApiKeySalesChannelsBatchReq: type: object description: The details of the sales channels to add to the publishable API key. required: - sales_channel_ids properties: sales_channel_ids: description: The IDs of the sales channels to add to the publishable API key type: array items: type: object required: - id properties: id: type: string description: The ID of the sales channel AdminPostPublishableApiKeysPublishableApiKeyReq: type: object description: The details to update of the publishable API key. properties: title: description: The title of the Publishable API Key. type: string AdminPostPublishableApiKeysReq: type: object description: The details of the publishable API key to create. required: - title properties: title: description: The title of the publishable API key type: string AdminPostRegionsRegionCountriesReq: type: object description: The details of the country to add to the region. required: - country_code properties: country_code: description: The 2 character ISO code for the Country. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. AdminPostRegionsRegionFulfillmentProvidersReq: type: object description: The details of the fulfillment provider to add to the region. required: - provider_id properties: provider_id: description: The ID of the Fulfillment Provider. type: string AdminPostRegionsRegionPaymentProvidersReq: type: object description: The details of the payment provider to add to the region. required: - provider_id properties: provider_id: description: The ID of the Payment Provider. type: string AdminPostRegionsRegionReq: type: object description: The details to update of the regions. properties: name: description: The name of the Region type: string currency_code: description: The 3 character ISO currency code to use in the Region. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. automatic_taxes: description: If set to `true`, the Medusa backend will automatically calculate taxes for carts in this region. If set to `false`, the taxes must be calculated manually. externalDocs: url: https://docs.medusajs.com/modules/taxes/storefront/manual-calculation description: How to calculate taxes in a storefront. type: boolean gift_cards_taxable: description: If set to `true`, taxes will be applied on gift cards. type: boolean tax_provider_id: description: The ID of the tax provider to use. If none provided, the system tax provider is used. type: string tax_code: description: The tax code of the Region. type: string tax_rate: description: The tax rate to use in the Region. type: number includes_tax: x-featureFlag: tax_inclusive_pricing description: Whether taxes are included in the prices of the region. type: boolean payment_providers: description: A list of Payment Provider IDs that can be used in the Region type: array items: type: string fulfillment_providers: description: A list of Fulfillment Provider IDs that can be used in the Region type: array items: type: string countries: description: A list of countries' 2 ISO characters that should be included in the Region. type: array items: type: string AdminPostRegionsReq: type: object description: The details of the region to create. required: - name - currency_code - tax_rate - payment_providers - fulfillment_providers - countries properties: name: description: The name of the Region type: string currency_code: description: The 3 character ISO currency code to use in the Region. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. tax_code: description: The tax code of the Region. type: string tax_rate: description: The tax rate to use in the Region. type: number payment_providers: description: A list of Payment Provider IDs that can be used in the Region type: array items: type: string fulfillment_providers: description: A list of Fulfillment Provider IDs that can be used in the Region type: array items: type: string countries: description: A list of countries' 2 ISO characters that should be included in the Region. example: - US type: array items: type: string includes_tax: x-featureFlag: tax_inclusive_pricing description: Whether taxes are included in the prices of the region. type: boolean AdminPostReservationsReq: type: object description: The details of the reservation to create. required: - location_id - inventory_item_id - quantity properties: line_item_id: description: The ID of the line item of the reservation. type: string location_id: description: The ID of the location of the reservation. type: string inventory_item_id: description: The ID of the inventory item the reservation is associated with. type: string quantity: description: The quantity to reserve. type: number description: description: The reservation's description. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostReservationsReservationReq: type: object description: The details to update of the reservation. properties: location_id: description: The ID of the location associated with the reservation. type: string quantity: description: The quantity to reserve. type: number description: description: The reservation's description. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostReturnReasonsReasonReq: type: object description: The details to update of the return reason. properties: label: description: The label to display to the Customer. type: string value: description: A unique value of the return reason. type: string description: description: The description of the Reason. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostReturnReasonsReq: type: object description: The details of the return reason to create. required: - label - value properties: label: description: The label to display to the Customer. type: string value: description: A unique value of the return reason. type: string parent_return_reason_id: description: The ID of the parent return reason. type: string description: description: The description of the Reason. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostReturnsReturnReceiveReq: type: object description: The details of the received return. required: - items properties: items: description: The Line Items that have been received. type: array items: type: object required: - item_id - quantity properties: item_id: description: The ID of the Line Item. type: string quantity: description: The quantity of the Line Item. type: integer refund: description: The amount to refund. type: number location_id: description: The ID of the location to return items from. type: string AdminPostSalesChannelsChannelProductsBatchReq: type: object description: The details of the products to add to the sales channel. required: - product_ids properties: product_ids: description: The IDs of the products to add to the sales channel type: array items: type: object required: - id properties: id: type: string description: The ID of the product AdminPostSalesChannelsChannelStockLocationsReq: type: object required: - location_id properties: location_id: description: The ID of the stock location type: string AdminPostSalesChannelsReq: type: object description: The details of the sales channel to create. required: - name properties: name: description: The name of the Sales Channel type: string description: description: The description of the Sales Channel type: string is_disabled: description: Whether the Sales Channel is disabled. type: boolean AdminPostSalesChannelsSalesChannelReq: type: object description: The details to update of the sales channel. properties: name: type: string description: The name of the sales channel description: type: string description: The description of the sales channel. is_disabled: type: boolean description: Whether the Sales Channel is disabled. AdminPostShippingOptionsOptionReq: type: object description: The details to update of the shipping option. required: - requirements properties: name: description: The name of the Shipping Option type: string amount: description: The amount to charge for the Shipping Option. If the `price_type` of the shipping option is `calculated`, this amount will not actually be used. type: integer admin_only: description: If set to `true`, the shipping option can only be used when creating draft orders. type: boolean metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute requirements: description: The requirements that must be satisfied for the Shipping Option to be available. type: array items: type: object required: - type - amount properties: id: description: The ID of an existing requirement. If an ID is passed, the existing requirement's details are updated. Otherwise, a new requirement is created. type: string type: description: The type of the requirement type: string enum: - max_subtotal - min_subtotal amount: description: The amount to compare with. type: integer includes_tax: description: Tax included in prices of shipping option x-featureFlag: tax_inclusive_pricing type: boolean AdminPostShippingOptionsReq: type: object description: The details of the shipping option to create. required: - name - region_id - provider_id - data - price_type properties: name: description: The name of the Shipping Option type: string region_id: description: The ID of the Region in which the Shipping Option will be available. type: string provider_id: description: The ID of the Fulfillment Provider that handles the Shipping Option. type: string profile_id: description: The ID of the Shipping Profile to add the Shipping Option to. type: number data: description: The data needed for the Fulfillment Provider to handle shipping with this Shipping Option. type: object price_type: description: The type of the Shipping Option price. `flat_rate` indicates fixed pricing, whereas `calculated` indicates that the price will be calculated each time by the fulfillment provider. type: string enum: - flat_rate - calculated amount: description: The amount to charge for the Shipping Option. If the `price_type` is set to `calculated`, this amount will not actually be used. type: integer requirements: description: The requirements that must be satisfied for the Shipping Option to be available. type: array items: type: object required: - type - amount properties: type: description: The type of the requirement type: string enum: - max_subtotal - min_subtotal amount: description: The amount to compare with. type: integer is_return: description: Whether the Shipping Option can be used for returns or during checkout. type: boolean default: false admin_only: description: If set to `true`, the shipping option can only be used when creating draft orders. type: boolean default: false metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute includes_tax: description: Tax included in prices of shipping option x-featureFlag: tax_inclusive_pricing type: boolean AdminPostShippingProfilesProfileReq: type: object description: The detail to update of the shipping profile. properties: name: description: The name of the Shipping Profile type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute type: description: The type of the Shipping Profile type: string enum: - default - gift_card - custom products: description: product IDs to associate with the Shipping Profile type: array shipping_options: description: Shipping option IDs to associate with the Shipping Profile type: array AdminPostShippingProfilesReq: type: object description: The details of the shipping profile to create. required: - name - type properties: name: description: The name of the Shipping Profile type: string type: description: The type of the Shipping Profile type: string enum: - default - gift_card - custom metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostStockLocationsLocationReq: type: object description: The details to update of the stock location. properties: name: description: the name of the stock location type: string address_id: description: the stock location address ID type: string metadata: type: object description: An optional key-value map with additional details example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute address: description: The data of an associated address to create or update. $ref: '#/components/schemas/StockLocationAddressInput' AdminPostStockLocationsReq: type: object description: The details of the stock location to create. required: - name properties: name: description: the name of the stock location type: string address_id: description: the ID of an existing stock location address to associate with the stock location. Only required if `address` is not provided. type: string metadata: type: object description: An optional key-value map with additional details example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute address: description: A new stock location address to create and associate with the stock location. Only required if `address_id` is not provided. $ref: '#/components/schemas/StockLocationAddressInput' AdminPostStockLocationsReqAddress: type: object required: - address_1 - country_code properties: address_1: type: string description: Stock location address example: 35, Jhon Doe Ave address_2: type: string description: Stock location address' complement example: apartment 4432 company: type: string description: Stock location address' company city: type: string description: Stock location address' city example: Mexico city country_code: description: The two character ISO code for the country. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. phone: type: string description: Stock location address' phone number example: +1 555 61646 postal_code: type: string description: Stock location address' postal code example: HD3-1G8 province: type: string description: Stock location address' province example: Sinaloa AdminPostStoreReq: type: object description: The details to update of the store. properties: name: description: The name of the Store type: string swap_link_template: description: A template for Swap links - use `{{cart_id}}` to insert the Swap Cart ID type: string example: http://example.com/swaps/{{cart_id}} payment_link_template: description: A template for payment links - use `{{cart_id}}` to insert the Cart ID example: http://example.com/payments/{{cart_id}} type: string invite_link_template: description: A template for invite links - use `{{invite_token}}` to insert the invite token example: http://example.com/invite?token={{invite_token}} type: string default_currency_code: description: The default currency code of the Store. type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. currencies: description: Array of available currencies in the store. Each currency is in 3 character ISO code format. type: array items: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminPostTaxRatesReq: type: object description: The details of the tax rate to create. required: - code - name - region_id properties: code: type: string description: The code of the tax rate. name: type: string description: The name of the tax rate. region_id: type: string description: The ID of the Region that the tax rate belongs to. rate: type: number description: The numeric rate to charge. products: type: array description: The IDs of the products associated with this tax rate. items: type: string shipping_options: type: array description: The IDs of the shipping options associated with this tax rate items: type: string product_types: type: array description: The IDs of the types of products associated with this tax rate items: type: string AdminPostTaxRatesTaxRateProductTypesReq: type: object description: The product types to add to the tax rate. required: - product_types properties: product_types: type: array description: The IDs of the types of products to associate with this tax rate items: type: string AdminPostTaxRatesTaxRateProductsReq: type: object description: The details of the products to associat with the tax rate. required: - products properties: products: type: array description: The IDs of the products to associate with this tax rate items: type: string AdminPostTaxRatesTaxRateReq: type: object description: The details to update of the tax rate. properties: code: type: string description: The code of the tax rate. name: type: string description: The name of the tax rate. region_id: type: string description: The ID of the Region that the tax rate belongs to. rate: type: number description: The numeric rate to charge. products: type: array description: The IDs of the products associated with this tax rate items: type: string shipping_options: type: array description: The IDs of the shipping options associated with this tax rate items: type: string product_types: type: array description: The IDs of the types of product types associated with this tax rate items: type: string AdminPostTaxRatesTaxRateShippingOptionsReq: type: object description: The details of the shipping options to associate with the tax rate. required: - shipping_options properties: shipping_options: type: array description: The IDs of the shipping options to associate with this tax rate items: type: string AdminPostUploadsDownloadUrlReq: type: object description: The details of the file to retrieve its download URL. required: - file_key properties: file_key: description: key of the file to obtain the download link for. This is obtained when you first uploaded the file, or by the file service if you used it directly. type: string AdminPriceListDeleteBatchRes: type: object description: The details of deleting a price list. required: - ids - object - deleted properties: ids: type: array description: The IDs of the deleted prices. items: type: string description: The ID of a deleted price. object: type: string description: The type of the object that was deleted. A price is also named `money-amount`. default: money-amount deleted: type: boolean description: Whether or not the items were deleted. default: true AdminPriceListDeleteProductPricesRes: type: object required: - ids - object - deleted properties: ids: type: array description: The IDs of the deleted prices. items: type: string object: type: string description: The type of the object that was deleted. A price is also named `money-amount`. default: money-amount deleted: type: boolean description: Whether or not the items were deleted. default: true AdminPriceListDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Price List. object: type: string description: The type of the object that was deleted. default: price-list deleted: type: boolean description: Whether or not the items were deleted. default: true AdminPriceListDeleteVariantPricesRes: type: object required: - ids - object - deleted properties: ids: type: array description: The IDs of the deleted prices. items: type: string object: type: string description: The type of the object that was deleted. A price is also named `money-amount`. default: money-amount deleted: type: boolean description: Whether or not the items were deleted. default: true AdminPriceListRes: type: object description: The price list's details. x-expanded-relations: field: price_list relations: - customer_groups - prices required: - price_list properties: price_list: description: Price List details. $ref: '#/components/schemas/PriceList' AdminPriceListsListRes: type: object description: The list of price lists with pagination fields. required: - price_lists - count - offset - limit properties: price_lists: type: array description: An array of price lists details. items: $ref: '#/components/schemas/PriceList' count: type: integer description: The total number of items available offset: type: integer description: The number of price lists skipped when retrieving the price lists. limit: type: integer description: The number of items per page AdminPriceListsProductsListRes: type: object description: The list of products with pagination fields. x-expanded-relations: field: products relations: - categories - collection - images - options - tags - type - variants - variants.options required: - products - count - offset - limit properties: products: type: array description: An array of products details. items: $ref: '#/components/schemas/Product' count: type: integer description: The total number of items available offset: type: integer description: The number of price lists skipped when retrieving the price lists. limit: type: integer description: The number of items per page AdminProductCategoriesCategoryDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted product category object: type: string description: The type of the object that was deleted. default: product-category deleted: type: boolean description: Whether or not the items were deleted. default: true AdminProductCategoriesCategoryRes: type: object description: The product category's details. x-expanded-relations: field: product_category relations: - category_children - parent_category required: - product_category properties: product_category: description: Product category details. $ref: '#/components/schemas/ProductCategory' AdminProductCategoriesListRes: type: object description: The list of product categories with pagination fields. x-expanded-relations: field: product_categories relations: - category_children - parent_category required: - product_categories - count - offset - limit properties: product_categories: type: array description: An array of product category details. items: $ref: '#/components/schemas/ProductCategory' count: type: integer description: The total number of items available offset: type: integer description: The number of product categories skipped when retrieving the product categories. limit: type: integer description: The number of items per page AdminProductTagsListRes: type: object description: The list of product tags with pagination fields. required: - product_tags - count - offset - limit properties: product_tags: type: array description: An array of product tag details. items: $ref: '#/components/schemas/ProductTag' count: type: integer description: The total number of items available offset: type: integer description: The number of product tags skipped when retrieving the product tags. limit: type: integer description: The number of items per page AdminProductTypesListRes: type: object description: The list of product types with pagination fields. required: - product_types - count - offset - limit properties: product_types: type: array description: An array of product types details. items: $ref: '#/components/schemas/ProductType' count: type: integer description: The total number of items available offset: type: integer description: The number of product types skipped when retrieving the product types. limit: type: integer description: The number of items per page AdminProductsDeleteOptionRes: type: object description: The details of deleting a product's option. x-expanded-relations: field: product relations: - collection - images - options - tags - type - variants - variants.options - variants.prices required: - option_id - object - deleted - product properties: option_id: type: string description: The ID of the deleted Product Option object: type: string description: The type of the object that was deleted. default: option deleted: type: boolean description: Whether or not the items were deleted. default: true product: description: Product details. $ref: '#/components/schemas/PricedProduct' AdminProductsDeleteRes: type: object description: The details of deleting a product. required: - id - object - deleted properties: id: type: string description: The ID of the deleted Product. object: type: string description: The type of the object that was deleted. default: product deleted: type: boolean description: Whether or not the items were deleted. default: true AdminProductsDeleteVariantRes: type: object description: The details of deleting a product's variant. x-expanded-relations: field: product relations: - collection - images - options - tags - type - variants - variants.options - variants.prices required: - variant_id - object - deleted - product properties: variant_id: type: string description: The ID of the deleted Product Variant. object: type: string description: The type of the object that was deleted. default: product-variant deleted: type: boolean description: Whether or not the items were deleted. default: true product: description: Product details. $ref: '#/components/schemas/PricedProduct' AdminProductsListRes: type: object description: The list of products with pagination fields. x-expanded-relations: field: products relations: - collection - images - options - tags - type - variants - variants.options - variants.prices totals: - variants.purchasable required: - products - count - offset - limit properties: products: type: array description: An array of products details. items: $ref: '#/components/schemas/PricedProduct' count: type: integer description: The total number of items available offset: type: integer description: The number of products skipped when retrieving the products. limit: type: integer description: The number of items per page AdminProductsListTagsRes: type: object description: The usage details of product tags. required: - tags properties: tags: description: An array of product tags details. type: array items: type: object required: - id - usage_count - value properties: id: description: The ID of the tag. type: string usage_count: description: The number of products that use this tag. type: string value: description: The value of the tag. type: string AdminProductsListTypesRes: type: object required: - types properties: types: type: array description: An array of product types details. items: $ref: '#/components/schemas/ProductType' AdminProductsListVariantsRes: type: object required: - variants - count - offset - limit properties: variants: type: array description: An array of product variants details. items: $ref: '#/components/schemas/ProductVariant' count: type: integer description: The total number of items available offset: type: integer description: The number of product variants skipped when retrieving the product variants. limit: type: integer description: The number of items per page AdminProductsRes: type: object description: The product's details. x-expanded-relations: field: product relations: - collection - images - options - tags - type - variants - variants.options - variants.prices required: - product properties: product: description: Product details. $ref: '#/components/schemas/PricedProduct' AdminPublishableApiKeyDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted publishable API key. object: type: string description: The type of the object that was deleted. default: publishable_api_key deleted: type: boolean description: Whether the publishable API key was deleted. default: true AdminPublishableApiKeysListRes: type: object description: The list of publishable API keys with pagination fields. required: - publishable_api_keys - count - offset - limit properties: publishable_api_keys: type: array description: An array of publishable API keys details. items: $ref: '#/components/schemas/PublishableApiKey' count: type: integer description: The total number of items available offset: type: integer description: The number of publishable API keys skipped when retrieving the publishable API keys. limit: type: integer description: The number of items per page AdminPublishableApiKeysListSalesChannelsRes: type: object description: The list of sales channel. required: - sales_channels properties: sales_channels: description: An array of sales channels details. type: array items: $ref: '#/components/schemas/SalesChannel' AdminPublishableApiKeysRes: type: object description: The publishable API key's details. required: - publishable_api_key properties: publishable_api_key: description: Publishable API key details. $ref: '#/components/schemas/PublishableApiKey' AdminRefundRes: type: object description: The refund's details. required: - refund properties: refund: description: Refund details. $ref: '#/components/schemas/Refund' AdminRegionsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Region. object: type: string description: The type of the object that was deleted. default: region deleted: type: boolean description: Whether or not the items were deleted. default: true AdminRegionsListRes: type: object description: The list of regions with pagination fields. x-expanded-relations: field: regions relations: - countries - fulfillment_providers - payment_providers eager: - fulfillment_providers - payment_providers required: - regions - count - offset - limit properties: regions: type: array description: An array of regions details. items: $ref: '#/components/schemas/Region' count: type: integer description: The total number of items available offset: type: integer description: The number of regions skipped when retrieving the regions. limit: type: integer description: The number of items per page AdminRegionsRes: type: object description: The region's details. x-expanded-relations: field: region relations: - countries - fulfillment_providers - payment_providers eager: - fulfillment_providers - payment_providers required: - region properties: region: description: Region details. $ref: '#/components/schemas/Region' AdminReservationsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Reservation. object: type: string description: The type of the object that was deleted. default: reservation deleted: type: boolean description: Whether or not the Reservation was deleted. default: true AdminReservationsListRes: type: object description: The list of reservations with pagination fields. required: - reservations - count - offset - limit properties: reservations: type: array description: An array of reservations details. items: $ref: '#/components/schemas/ExtendedReservationItem' count: type: integer description: The total number of items available offset: type: integer description: The number of reservations skipped when retrieving the reservations. limit: type: integer description: The number of items per page AdminReservationsRes: type: object description: The reservation's details. required: - reservation properties: reservation: description: Reservation details. $ref: '#/components/schemas/ReservationItemDTO' AdminResetPasswordRequest: type: object description: The details of the password reset request. required: - token - password properties: email: description: The User's email. type: string format: email token: description: The password-reset token generated when the password reset was requested. type: string password: description: The User's new password. type: string format: password AdminResetPasswordTokenRequest: type: object description: The details of the password reset token request. required: - email properties: email: description: The User's email. type: string format: email AdminReturnReasonsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted return reason object: type: string description: The type of the object that was deleted. default: return_reason deleted: type: boolean description: Whether or not the items were deleted. default: true AdminReturnReasonsListRes: type: object description: The list of return reasons. x-expanded-relations: field: return_reasons relations: - parent_return_reason - return_reason_children required: - return_reasons properties: return_reasons: type: array description: The list of return reasons. items: $ref: '#/components/schemas/ReturnReason' AdminReturnReasonsRes: type: object description: The return reason's details. x-expanded-relations: field: return_reason relations: - parent_return_reason - return_reason_children required: - return_reason properties: return_reason: description: The return reason's details. $ref: '#/components/schemas/ReturnReason' AdminReturnsCancelRes: type: object description: The associated order's details. x-expanded-relations: field: order relations: - billing_address - claims - claims.additional_items - claims.additional_items.variant - claims.claim_items - claims.claim_items.images - claims.claim_items.item - claims.fulfillments - claims.fulfillments.tracking_links - claims.return_order - claims.return_order.shipping_method - claims.return_order.shipping_method.tax_lines - claims.shipping_address - claims.shipping_methods - customer - discounts - discounts.rule - fulfillments - fulfillments.items - fulfillments.tracking_links - gift_card_transactions - gift_cards - items - payments - refunds - region - returns - returns.items - returns.items.reason - returns.shipping_method - returns.shipping_method.tax_lines - shipping_address - shipping_methods - swaps - swaps.additional_items - swaps.additional_items.variant - swaps.fulfillments - swaps.fulfillments.tracking_links - swaps.payment - swaps.return_order - swaps.return_order.shipping_method - swaps.return_order.shipping_method.tax_lines - swaps.shipping_address - swaps.shipping_methods - swaps.shipping_methods.tax_lines required: - order properties: order: description: Order details. $ref: '#/components/schemas/Order' AdminReturnsListRes: type: object description: The list of returns with pagination fields. x-expanded-relation: field: returns relations: - order - swap required: - returns - count - offset - limit properties: returns: type: array description: An array of returns details. items: $ref: '#/components/schemas/Return' count: type: integer description: The total number of items available offset: type: integer description: The number of returns skipped when retrieving the returns. limit: type: integer description: The number of items per page AdminReturnsRes: type: object description: The return's details. x-expanded-relation: field: return relations: - swap required: - return properties: return: description: Return details. $ref: '#/components/schemas/Return' AdminSalesChannelsDeleteLocationRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the removed stock location from a sales channel object: type: string description: The type of the object that was removed. default: stock-location deleted: type: boolean description: Whether or not the items were deleted. default: true AdminSalesChannelsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted sales channel object: type: string description: The type of the object that was deleted. default: sales-channel deleted: type: boolean description: Whether or not the items were deleted. default: true AdminSalesChannelsListRes: type: object description: The list of sales channels with pagination fields. required: - sales_channels - count - offset - limit properties: sales_channels: type: array description: An array of sales channels details. items: $ref: '#/components/schemas/SalesChannel' count: type: integer description: The total number of items available offset: type: integer description: The number of items skipped before the returned results limit: type: integer description: The number of items per page AdminSalesChannelsRes: type: object description: The sales channel's details. required: - sales_channel properties: sales_channel: description: Sales Channel's details. $ref: '#/components/schemas/SalesChannel' AdminShippingOptionsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Shipping Option. object: type: string description: The type of the object that was deleted. default: shipping-option deleted: type: boolean description: Whether or not the items were deleted. default: true AdminShippingOptionsListRes: type: object description: The list of shipping options with pagination fields. x-expanded-relations: field: shipping_options relations: - profile - region - requirements eager: - region.fulfillment_providers - region.payment_providers required: - shipping_options - count - offset - limit properties: shipping_options: type: array description: An array of shipping options details. items: $ref: '#/components/schemas/ShippingOption' count: type: integer description: The total number of items available offset: type: integer description: The number of shipping options skipped when retrieving the shipping options. limit: type: integer description: The number of items per page AdminShippingOptionsRes: type: object description: The shipping option's details. x-expanded-relations: field: shipping_option relations: - profile - region - requirements eager: - region.fulfillment_providers - region.payment_providers required: - shipping_option properties: shipping_option: description: Shipping option details. $ref: '#/components/schemas/ShippingOption' AdminShippingProfilesListRes: type: object description: The list of shipping profiles. required: - shipping_profiles properties: shipping_profiles: type: array description: An array of shipping profiles details. items: $ref: '#/components/schemas/ShippingProfile' AdminShippingProfilesRes: type: object description: The shipping profile's details. x-expanded-relations: field: shipping_profile relations: - products - shipping_options required: - shipping_profile properties: shipping_profile: description: Shipping profile details. $ref: '#/components/schemas/ShippingProfile' AdminStockLocationsDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Stock Location. object: type: string description: The type of the object that was deleted. default: stock_location deleted: type: boolean description: Whether or not the items were deleted. default: true AdminStockLocationsListRes: type: object description: The list of stock locations with pagination fields. required: - stock_locations - count - offset - limit properties: stock_locations: type: array description: The list of stock locations. items: $ref: '#/components/schemas/StockLocationExpandedDTO' count: type: integer description: The total number of items available offset: type: integer description: The number of stock locations skipped when retrieving the stock locations. limit: type: integer description: The number of items per page AdminStockLocationsRes: type: object description: The stock location's details. required: - stock_location properties: stock_location: description: Stock location details. $ref: '#/components/schemas/StockLocationExpandedDTO' AdminStoresRes: type: object description: The store's details. required: - store properties: store: description: Store details. $ref: '#/components/schemas/Store' AdminSwapsListRes: type: object description: The list of swaps with pagination fields. required: - swaps - count - offset - limit properties: swaps: type: array description: An array of swaps details. items: $ref: '#/components/schemas/Swap' count: type: integer description: The total number of items available offset: type: integer description: The number of swaps skipped when retrieving the swaps. limit: type: integer description: The number of items per page AdminSwapsRes: type: object description: The swap's details. x-expanded-relations: field: swap relations: - additional_items - additional_items.adjustments - cart - cart.items - cart.items.adjustments - cart.items.variant - fulfillments - order - payment - return_order - shipping_address - shipping_methods eager: - fulfillments.items - shipping_methods.shipping_option required: - swap properties: swap: description: Swap details. $ref: '#/components/schemas/Swap' AdminTaxProvidersList: type: object description: The list of tax providers in a store. required: - tax_providers properties: tax_providers: type: array description: An array of tax providers details. items: $ref: '#/components/schemas/TaxProvider' AdminTaxRatesDeleteRes: type: object required: - id - object - deleted properties: id: type: string description: The ID of the deleted Shipping Option. object: type: string description: The type of the object that was deleted. default: tax-rate deleted: type: boolean description: Whether or not the items were deleted. default: true AdminTaxRatesListRes: type: object description: The list of tax rates with pagination fields. required: - tax_rates - count - offset - limit properties: tax_rates: type: array description: An array of tax rate details. items: $ref: '#/components/schemas/TaxRate' count: type: integer description: The total number of items available offset: type: integer description: The number of tax rates to skip when retrieving the tax rates. limit: type: integer description: The number of items per page AdminTaxRatesRes: type: object description: The tax rate's details. required: - tax_rate properties: tax_rate: description: Tax rate details. $ref: '#/components/schemas/TaxRate' AdminUpdatePaymentCollectionsReq: type: object description: The details to update of the payment collection. properties: description: description: A description to create or update the payment collection. type: string metadata: description: A set of key-value pairs to hold additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminUpdateUserRequest: type: object properties: first_name: description: The first name of the User. type: string last_name: description: The last name of the User. type: string role: description: The role assigned to the user. These roles don't provide any different privileges. type: string enum: - admin - member - developer api_token: description: The API token of the User. type: string metadata: description: An optional set of key-value pairs with additional information. type: object externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute AdminUploadsDownloadUrlRes: type: object description: The download URL details. required: - download_url properties: download_url: description: The Download URL of the file type: string AdminUploadsRes: type: object description: The list of uploaded files. required: - uploads properties: uploads: type: array description: Uploaded files details. items: type: object required: - url - key properties: url: description: The URL of the uploaded file. type: string format: uri key: description: The key of the file that is identifiable by the file service. It can be used later to retrieve or manipulate the file. type: string AdminUserRes: type: object description: The user's details. required: - user properties: user: description: User details. $ref: '#/components/schemas/User' AdminUsersListRes: type: object description: The list of users. required: - users - count - offset - limit properties: users: type: array description: An array of users details. items: $ref: '#/components/schemas/User' count: type: integer description: The total number of items available offset: type: integer description: The number of users skipped when retrieving the users. limit: type: integer description: The number of items per page AdminVariantsListRes: type: object description: The list of variants with pagination fields. x-expanded-relations: field: variants relations: - options - prices - product totals: - purchasable required: - variants - count - offset - limit properties: variants: type: array description: An array of product variant details. items: $ref: '#/components/schemas/PricedVariant' count: type: integer description: The total number of items available offset: type: integer description: The number of product variants skipped when retrieving the product variants. limit: type: integer description: The number of items per page AdminVariantsRes: type: object description: The product variant's details. x-expanded-relations: field: variant relations: - options - prices - product required: - variant properties: variant: description: Product variant's details. $ref: '#/components/schemas/PricedVariant' BatchJob: title: Batch Job description: A Batch Job indicates an asynchronus task stored in the Medusa backend. Its status determines whether it has been executed or not. type: object required: - canceled_at - completed_at - confirmed_at - context - created_at - created_by - deleted_at - dry_run - failed_at - id - pre_processed_at - processing_at - result - status - type - updated_at properties: id: description: The unique identifier for the batch job. type: string example: batch_01G8T782965PYFG0751G0Z38B4 type: description: The type of batch job. type: string enum: - product-import - product-export status: description: The status of the batch job. type: string enum: - created - pre_processed - confirmed - processing - completed - canceled - failed default: created created_by: description: The unique identifier of the user that created the batch job. nullable: true type: string example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V created_by_user: description: The details of the user that created the batch job. x-expandable: created_by_user nullable: true $ref: '#/components/schemas/User' context: description: The context of the batch job, the type of the batch job determines what the context should contain. nullable: true type: object example: shape: prices: - region: null currency_code: eur dynamicImageColumnCount: 4 dynamicOptionColumnCount: 2 list_config: skip: 0 take: 50 order: created_at: DESC relations: - variants - variant.prices - images dry_run: description: Specify if the job must apply the modifications or not. type: boolean default: false result: description: The result of the batch job. nullable: true allOf: - type: object example: {} - type: object properties: count: type: number advancement_count: type: number progress: type: number errors: type: object properties: message: type: string code: oneOf: - type: string - type: number err: type: array stat_descriptors: type: object properties: key: type: string name: type: string message: type: string file_key: type: string file_size: type: number example: errors: - err: [] code: unknown message: Method not implemented. stat_descriptors: - key: product-export-count name: Product count to export message: There will be 8 products exported by this action pre_processed_at: description: The date from which the job has been pre-processed. nullable: true type: string format: date-time processing_at: description: The date the job is processing at. nullable: true type: string format: date-time confirmed_at: description: The date when the confirmation has been done. nullable: true type: string format: date-time completed_at: description: The date of the completion. nullable: true type: string format: date-time canceled_at: description: The date of the concellation. nullable: true type: string format: date-time failed_at: description: The date when the job failed. nullable: true type: string format: date-time created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was last updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time Cart: title: Cart description: A cart represents a virtual shopping bag. It can be used to complete an order, a swap, or a claim. type: object required: - billing_address_id - completed_at - context - created_at - customer_id - deleted_at - email - id - idempotency_key - metadata - payment_authorized_at - payment_id - payment_session - region_id - shipping_address_id - type - updated_at properties: id: description: The cart's ID type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 email: description: The email associated with the cart nullable: true type: string format: email billing_address_id: description: The billing address's ID nullable: true type: string example: addr_01G8ZH853YPY9B94857DY91YGW billing_address: description: The details of the billing address associated with the cart. x-expandable: billing_address nullable: true $ref: '#/components/schemas/Address' shipping_address_id: description: The shipping address's ID nullable: true type: string example: addr_01G8ZH853YPY9B94857DY91YGW shipping_address: description: The details of the shipping address associated with the cart. x-expandable: shipping_address nullable: true $ref: '#/components/schemas/Address' items: description: The line items added to the cart. type: array x-expandable: items items: $ref: '#/components/schemas/LineItem' region_id: description: The region's ID type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G region: description: The details of the region associated with the cart. x-expandable: region nullable: true $ref: '#/components/schemas/Region' discounts: description: An array of details of all discounts applied to the cart. type: array x-expandable: discounts items: $ref: '#/components/schemas/Discount' gift_cards: description: An array of details of all gift cards applied to the cart. type: array x-expandable: gift_cards items: $ref: '#/components/schemas/GiftCard' customer_id: description: The customer's ID nullable: true type: string example: cus_01G2SG30J8C85S4A5CHM2S1NS2 customer: description: The details of the customer the cart belongs to. x-expandable: customer nullable: true type: object payment_session: description: The details of the selected payment session in the cart. x-expandable: payment_session nullable: true type: object payment_sessions: description: The details of all payment sessions created on the cart. type: array x-expandable: payment_sessions items: type: object payment_id: description: The payment's ID if available nullable: true type: string example: pay_01G8ZCC5W42ZNY842124G7P5R9 payment: description: The details of the payment associated with the cart. nullable: true x-expandable: payment type: object shipping_methods: description: The details of the shipping methods added to the cart. type: array x-expandable: shipping_methods items: $ref: '#/components/schemas/ShippingMethod' type: description: The cart's type. type: string enum: - default - swap - draft_order - payment_link - claim default: default completed_at: description: The date with timezone at which the cart was completed. nullable: true type: string format: date-time payment_authorized_at: description: The date with timezone at which the payment was authorized. nullable: true type: string format: date-time idempotency_key: description: Randomly generated key used to continue the completion of a cart in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. context: description: The context of the cart which can include info like IP or user agent. nullable: true type: object example: ip: '::1' user_agent: PostmanRuntime/7.29.2 sales_channel_id: description: The sales channel ID the cart is associated with. nullable: true type: string example: null sales_channel: description: The details of the sales channel associated with the cart. nullable: true x-expandable: sales_channel $ref: '#/components/schemas/SalesChannel' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute shipping_total: description: The total of shipping type: integer example: 1000 discount_total: description: The total of discount rounded type: integer example: 800 raw_discount_total: description: The total of discount type: integer example: 800 item_tax_total: description: The total of items with taxes type: integer example: 8000 shipping_tax_total: description: The total of shipping with taxes type: integer example: 1000 tax_total: description: The total of tax type: integer example: 0 refunded_total: description: The total amount refunded if the order associated with this cart is returned. type: integer example: 0 total: description: The total amount of the cart type: integer example: 8200 subtotal: description: The subtotal of the cart type: integer example: 8000 refundable_amount: description: The amount that can be refunded type: integer example: 8200 gift_card_total: description: The total of gift cards type: integer example: 0 gift_card_tax_total: description: The total of gift cards with taxes type: integer example: 0 sales_channels: description: The associated sales channels. type: array nullable: true x-expandable: sales_channels items: $ref: '#/components/schemas/SalesChannel' ClaimImage: title: Claim Image description: The details of an image attached to a claim. type: object required: - claim_item_id - created_at - deleted_at - id - metadata - updated_at - url properties: id: description: The claim image's ID type: string example: cimg_01G8ZH853Y6TFXWPG5EYE81X63 claim_item_id: description: The ID of the claim item associated with the image type: string claim_item: description: The details of the claim item this image is associated with. nullable: true x-expandable: claim_item type: object url: description: The URL of the image type: string format: uri created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ClaimItem: title: Claim Item description: A claim item is an item created as part of a claim. It references an item in the order that should be exchanged or refunded. type: object required: - claim_order_id - created_at - deleted_at - id - item_id - metadata - note - quantity - reason - updated_at - variant_id properties: id: description: The claim item's ID type: string example: citm_01G8ZH853Y6TFXWPG5EYE81X63 images: description: The claim images that are attached to the claim item. type: array x-expandable: images items: $ref: '#/components/schemas/ClaimImage' claim_order_id: description: The ID of the claim this item is associated with. type: string claim_order: description: The details of the claim this item belongs to. x-expandable: claim_order nullable: true type: object item_id: description: The ID of the line item that the claim item refers to. type: string example: item_01G8ZM25TN49YV9EQBE2NC27KC item: description: The details of the line item in the original order that this claim item refers to. x-expandable: item nullable: true $ref: '#/components/schemas/LineItem' variant_id: description: The ID of the product variant that is claimed. type: string example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 variant: description: The details of the product variant to potentially replace the item in the original order. x-expandable: variant nullable: true $ref: '#/components/schemas/ProductVariant' reason: description: The reason for the claim type: string enum: - missing_item - wrong_item - production_failure - other note: description: An optional note about the claim, for additional information nullable: true type: string example: I don't like it. quantity: description: The quantity of the item that is being claimed; must be less than or equal to the amount purchased in the original order. type: integer example: 1 tags: description: User defined tags for easy filtering and grouping. type: array x-expandable: tags items: $ref: '#/components/schemas/ClaimTag' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ClaimOrder: title: Claim description: A Claim represents a group of faulty or missing items. It consists of claim items that refer to items in the original order that should be replaced or refunded. It also includes details related to shipping and fulfillment. type: object required: - canceled_at - created_at - deleted_at - fulfillment_status - id - idempotency_key - metadata - no_notification - order_id - payment_status - refund_amount - shipping_address_id - type - updated_at properties: id: description: The claim's ID type: string example: claim_01G8ZH853Y6TFXWPG5EYE81X63 type: description: The claim's type type: string enum: - refund - replace payment_status: description: The status of the claim's payment type: string enum: - na - not_refunded - refunded default: na fulfillment_status: description: The claim's fulfillment status type: string enum: - not_fulfilled - partially_fulfilled - fulfilled - partially_shipped - shipped - partially_returned - returned - canceled - requires_action default: not_fulfilled claim_items: description: The details of the items that should be replaced or refunded. type: array x-expandable: claim_items items: $ref: '#/components/schemas/ClaimItem' additional_items: description: The details of the new items to be shipped when the claim's type is `replace` type: array x-expandable: additional_items items: $ref: '#/components/schemas/LineItem' order_id: description: The ID of the order that the claim comes from. type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that this claim was created for. x-expandable: order nullable: true type: object return_order: description: The details of the return associated with the claim if the claim's type is `replace`. x-expandable: return_order nullable: true type: object shipping_address_id: description: The ID of the address that the new items should be shipped to nullable: true type: string example: addr_01G8ZH853YPY9B94857DY91YGW shipping_address: description: The details of the address that new items should be shipped to. x-expandable: shipping_address nullable: true $ref: '#/components/schemas/Address' shipping_methods: description: The details of the shipping methods that the claim order will be shipped with. type: array x-expandable: shipping_methods items: $ref: '#/components/schemas/ShippingMethod' fulfillments: description: The fulfillments of the new items to be shipped type: array x-expandable: fulfillments items: type: object refund_amount: description: The amount that will be refunded in conjunction with the claim nullable: true type: integer example: 1000 canceled_at: description: The date with timezone at which the claim was canceled. nullable: true type: string format: date-time created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute no_notification: description: Flag for describing whether or not notifications related to this should be send. nullable: true type: boolean example: false idempotency_key: description: Randomly generated key used to continue the completion of the cart associated with the claim in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. ClaimTag: title: Claim Tag description: Claim Tags are user defined tags that can be assigned to claim items for easy filtering and grouping. type: object required: - created_at - deleted_at - id - metadata - updated_at - value properties: id: description: The claim tag's ID type: string example: ctag_01G8ZCC5Y63B95V6B5SHBZ91S4 value: description: The value that the claim tag holds type: string example: Damaged created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute Country: title: Country description: Country details type: object required: - display_name - id - iso_2 - iso_3 - name - num_code - region_id properties: id: description: The country's ID type: string example: 109 iso_2: description: The 2 character ISO code of the country in lower case type: string example: it externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. iso_3: description: The 2 character ISO code of the country in lower case type: string example: ita externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements description: See a list of codes. num_code: description: The numerical ISO code for the country. type: string example: 380 externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_numeric#Officially_assigned_code_elements description: See a list of codes. name: description: The normalized country name in upper case. type: string example: ITALY display_name: description: The country name appropriate for display. type: string example: Italy region_id: description: The region ID this country is associated with. nullable: true type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G region: description: The details of the region the country is associated with. x-expandable: region nullable: true type: object CreateStockLocationInput: title: Create Stock Location Input description: Represents the Input to create a Stock Location type: object required: - name properties: name: type: string description: The stock location name address_id: type: string description: The Stock location address ID address: description: Stock location address object allOf: - $ref: '#/components/schemas/StockLocationAddressInput' - type: object metadata: type: object description: An optional key-value map with additional details example: car: white Currency: title: Currency description: Currency type: object required: - code - name - symbol - symbol_native properties: code: description: The 3 character ISO code for the currency. type: string example: usd externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. symbol: description: The symbol used to indicate the currency. type: string example: $ symbol_native: description: The native symbol used to indicate the currency. type: string example: $ name: description: The written name of the currency type: string example: US Dollar includes_tax: description: Whether the currency prices include tax type: boolean x-featureFlag: tax_inclusive_pricing default: false CustomShippingOption: title: Custom Shipping Option description: Custom Shipping Options are overridden Shipping Options. Admins can attach a Custom Shipping Option to a cart in order to set a custom price for a particular Shipping Option. type: object required: - cart_id - created_at - deleted_at - id - metadata - price - shipping_option_id - updated_at properties: id: description: The custom shipping option's ID type: string example: cso_01G8X99XNB77DMFBJFWX6DN9V9 price: description: The custom price set that will override the shipping option's original price type: integer example: 1000 shipping_option_id: description: The ID of the Shipping Option that the custom shipping option overrides type: string example: so_01G1G5V27GYX4QXNARRQCW1N8T shipping_option: description: The details of the overridden shipping options. x-expandable: shipping_option nullable: true $ref: '#/components/schemas/ShippingOption' cart_id: description: The ID of the Cart that the custom shipping option is attached to nullable: true type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 cart: description: The details of the cart this shipping option belongs to. x-expandable: cart nullable: true $ref: '#/components/schemas/Cart' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute Customer: title: Customer description: A customer can make purchases in your store and manage their profile. type: object required: - billing_address_id - created_at - deleted_at - email - first_name - has_account - id - last_name - metadata - phone - updated_at properties: id: description: The customer's ID type: string example: cus_01G2SG30J8C85S4A5CHM2S1NS2 email: description: The customer's email type: string format: email first_name: description: The customer's first name nullable: true type: string example: Arno last_name: description: The customer's last name nullable: true type: string example: Willms billing_address_id: description: The customer's billing address ID nullable: true type: string example: addr_01G8ZH853YPY9B94857DY91YGW billing_address: description: The details of the billing address associated with the customer. x-expandable: billing_address nullable: true $ref: '#/components/schemas/Address' shipping_addresses: description: The details of the shipping addresses associated with the customer. type: array x-expandable: shipping_addresses items: $ref: '#/components/schemas/Address' phone: description: The customer's phone number nullable: true type: string example: 16128234334802 has_account: description: Whether the customer has an account or not type: boolean default: false orders: description: The details of the orders this customer placed. type: array x-expandable: orders items: type: object groups: description: The customer groups the customer belongs to. type: array x-expandable: groups items: $ref: '#/components/schemas/CustomerGroup' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute CustomerGroup: title: Customer Group description: A customer group that can be used to organize customers into groups of similar traits. type: object required: - created_at - deleted_at - id - metadata - name - updated_at properties: id: description: The customer group's ID type: string example: cgrp_01G8ZH853Y6TFXWPG5EYE81X63 name: description: The name of the customer group type: string example: VIP customers: description: The details of the customers that belong to the customer group. type: array x-expandable: customers items: type: object price_lists: description: The price lists that are associated with the customer group. type: array x-expandable: price_lists items: type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DecoratedInventoryItemDTO: type: object allOf: - $ref: '#/components/schemas/InventoryItemDTO' - type: object required: - stocked_quantity - reserved_quantity properties: location_levels: type: array description: An array of location level details items: $ref: '#/components/schemas/InventoryLevelDTO' variants: type: array description: An array of product variant details items: $ref: '#/components/schemas/ProductVariant' stocked_quantity: type: number description: The total quantity of the item in stock across levels reserved_quantity: type: number description: The total quantity of the item available across levels Discount: title: Discount description: A discount can be applied to a cart for promotional purposes. type: object required: - code - created_at - deleted_at - ends_at - id - is_disabled - is_dynamic - metadata - parent_discount_id - rule_id - starts_at - updated_at - usage_count - usage_limit - valid_duration properties: id: description: The discount's ID type: string example: disc_01F0YESMW10MGHWJKZSDDMN0VN code: description: A unique code for the discount - this will be used by the customer to apply the discount type: string example: 10DISC is_dynamic: description: A flag to indicate if multiple instances of the discount can be generated. I.e. for newsletter discounts type: boolean example: false rule_id: description: The ID of the discount rule that defines how the discount will be applied to a cart. nullable: true type: string example: dru_01F0YESMVK96HVX7N419E3CJ7C rule: description: The details of the discount rule that defines how the discount will be applied to a cart.. x-expandable: rule nullable: true $ref: '#/components/schemas/DiscountRule' is_disabled: description: Whether the Discount has been disabled. Disabled discounts cannot be applied to carts type: boolean example: false parent_discount_id: description: The Discount that the discount was created from. This will always be a dynamic discount nullable: true type: string example: disc_01G8ZH853YPY9B94857DY91YGW parent_discount: description: The details of the parent discount that this discount was created from. x-expandable: parent_discount nullable: true type: object starts_at: description: The time at which the discount can be used. type: string format: date-time ends_at: description: The time at which the discount can no longer be used. nullable: true type: string format: date-time valid_duration: description: Duration the discount runs between nullable: true type: string example: P3Y6M4DT12H30M5S regions: description: The details of the regions in which the Discount can be used. type: array x-expandable: regions items: $ref: '#/components/schemas/Region' usage_limit: description: The maximum number of times that a discount can be used. nullable: true type: integer example: 100 usage_count: description: The number of times a discount has been used. type: integer example: 50 default: 0 created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DiscountCondition: title: Discount Condition description: Holds rule conditions for when a discount is applicable type: object required: - created_at - deleted_at - discount_rule_id - id - metadata - operator - type - updated_at properties: id: description: The discount condition's ID type: string example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A type: description: The type of the condition. The type affects the available resources associated with the condition. For example, if the type is `products`, that means the `products` relation will hold the products associated with this condition and other relations will be empty. type: string enum: - products - product_types - product_collections - product_tags - customer_groups operator: description: The operator of the condition. `in` indicates that discountable resources are within the specified resources. `not_in` indicates that discountable resources are everything but the specified resources. type: string enum: - in - not_in discount_rule_id: description: The ID of the discount rule associated with the condition type: string example: dru_01F0YESMVK96HVX7N419E3CJ7C discount_rule: description: The details of the discount rule associated with the condition. x-expandable: discount_rule nullable: true $ref: '#/components/schemas/DiscountRule' products: description: products associated with this condition if `type` is `products`. type: array x-expandable: products items: $ref: '#/components/schemas/Product' product_types: description: Product types associated with this condition if `type` is `product_types`. type: array x-expandable: product_types items: $ref: '#/components/schemas/ProductType' product_tags: description: Product tags associated with this condition if `type` is `product_tags`. type: array x-expandable: product_tags items: $ref: '#/components/schemas/ProductTag' product_collections: description: Product collections associated with this condition if `type` is `product_collections`. type: array x-expandable: product_collections items: $ref: '#/components/schemas/ProductCollection' customer_groups: description: Customer groups associated with this condition if `type` is `customer_groups`. type: array x-expandable: customer_groups items: $ref: '#/components/schemas/CustomerGroup' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DiscountConditionCustomerGroup: title: Product Tag Discount Condition description: Associates a discount condition with a customer group type: object required: - condition_id - created_at - customer_group_id - metadata - updated_at properties: customer_group_id: description: The ID of the Product Tag type: string example: cgrp_01G8ZH853Y6TFXWPG5EYE81X63 condition_id: description: The ID of the Discount Condition type: string example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A customer_group: description: Available if the relation `customer_group` is expanded. nullable: true $ref: '#/components/schemas/CustomerGroup' discount_condition: description: Available if the relation `discount_condition` is expanded. nullable: true $ref: '#/components/schemas/DiscountCondition' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DiscountConditionProduct: title: Product Discount Condition description: This represents the association between a discount condition and a product type: object required: - condition_id - created_at - metadata - product_id - updated_at properties: product_id: description: The ID of the Product Tag type: string example: prod_01G1G5V2MBA328390B5AXJ610F condition_id: description: The ID of the Discount Condition type: string example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A product: description: The details of the product. x-expandable: product nullable: true $ref: '#/components/schemas/Product' discount_condition: description: The details of the discount condition. x-expandable: discount_condition nullable: true $ref: '#/components/schemas/DiscountCondition' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DiscountConditionProductCollection: title: Product Collection Discount Condition description: This represents the association between a discount condition and a product collection type: object required: - condition_id - created_at - metadata - product_collection_id - updated_at properties: product_collection_id: description: The ID of the Product Collection type: string example: pcol_01F0YESBFAZ0DV6V831JXWH0BG condition_id: description: The ID of the Discount Condition type: string example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A product_collection: description: The details of the product collection. x-expandable: product_collection nullable: true $ref: '#/components/schemas/ProductCollection' discount_condition: description: The details of the discount condition. x-expandable: discount_condition nullable: true $ref: '#/components/schemas/DiscountCondition' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DiscountConditionProductTag: title: Product Tag Discount Condition description: This represents the association between a discount condition and a product tag type: object required: - condition_id - created_at - metadata - product_tag_id - updated_at properties: product_tag_id: description: The ID of the Product Tag type: string example: ptag_01F0YESHPZYY3H4SJ3A5918SBN condition_id: description: The ID of the Discount Condition type: string example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A product_tag: description: The details of the product tag. x-expandable: product_tag nullable: true $ref: '#/components/schemas/ProductTag' discount_condition: description: The details of the discount condition. x-expandable: discount_condition nullable: true $ref: '#/components/schemas/DiscountCondition' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DiscountConditionProductType: title: Product Type Discount Condition description: This represents the association between a discount condition and a product type type: object required: - condition_id - created_at - metadata - product_type_id - updated_at properties: product_type_id: description: The ID of the Product Tag type: string example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A condition_id: description: The ID of the Discount Condition type: string example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A product_type: description: The details of the product type. x-expandable: product_type nullable: true $ref: '#/components/schemas/ProductType' discount_condition: description: The details of the discount condition. x-expandable: discount_condition nullable: true $ref: '#/components/schemas/DiscountCondition' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DiscountRule: title: Discount Rule description: A discount rule defines how a Discount is calculated when applied to a Cart. type: object required: - allocation - created_at - deleted_at - description - id - metadata - type - updated_at - value properties: id: description: The discount rule's ID type: string example: dru_01F0YESMVK96HVX7N419E3CJ7C type: description: The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers. type: string enum: - fixed - percentage - free_shipping example: percentage description: description: A short description of the discount nullable: true type: string example: 10 Percent value: description: The value that the discount represents; this will depend on the type of the discount type: integer example: 10 allocation: description: The scope that the discount should apply to. nullable: true type: string enum: - total - item example: total conditions: description: The details of the discount conditions associated with the rule. They can be used to limit when the discount can be used. type: array x-expandable: conditions items: type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute DraftOrder: title: DraftOrder description: A draft order is created by an admin without direct involvement of the customer. Once its payment is marked as captured, it is transformed into an order. type: object required: - canceled_at - cart_id - completed_at - created_at - display_id - id - idempotency_key - metadata - no_notification_order - order_id - status - updated_at properties: id: description: The draft order's ID type: string example: dorder_01G8TJFKBG38YYFQ035MSVG03C status: description: The status of the draft order. It's changed to `completed` when it's transformed to an order. type: string enum: - open - completed default: open display_id: description: The draft order's display ID type: string example: 2 cart_id: description: The ID of the cart associated with the draft order. nullable: true type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 cart: description: The details of the cart associated with the draft order. x-expandable: cart nullable: true type: object order_id: description: The ID of the order created from the draft order when its payment is captured. nullable: true type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order created from the draft order when its payment is captured. x-expandable: order nullable: true type: object canceled_at: description: The date the draft order was canceled at. nullable: true type: string format: date-time completed_at: description: The date the draft order was completed at. nullable: true type: string format: date-time no_notification_order: description: Whether to send the customer notifications regarding order updates. nullable: true type: boolean example: false idempotency_key: description: Randomly generated key used to continue the completion of the cart associated with the draft order in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute 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 ExtendedReservationItem: type: object allOf: - $ref: '#/components/schemas/ReservationItemDTO' - type: object properties: line_item: description: The line item associated with the reservation. $ref: '#/components/schemas/LineItem' inventory_item: description: The inventory item associated with the reservation. $ref: '#/components/schemas/InventoryItemDTO' ExtendedStoreDTO: allOf: - $ref: '#/components/schemas/Store' - type: object required: - payment_providers - fulfillment_providers - feature_flags - modules properties: payment_providers: description: The store's payment providers. $ref: '#/components/schemas/PaymentProvider' fulfillment_providers: description: The store's fulfillment providers. $ref: '#/components/schemas/FulfillmentProvider' feature_flags: description: The feature flags enabled in the store's backend. $ref: '#/components/schemas/FeatureFlagsResponse' modules: description: The modules installed in the store's backend. $ref: '#/components/schemas/ModulesResponse' FeatureFlagsResponse: type: array items: type: object required: - key - value properties: key: description: The key of the feature flag. type: string value: description: The value of the feature flag. type: boolean Fulfillment: title: Fulfillment description: A Fulfillment is created once an admin can prepare the purchased goods. Fulfillments will eventually be shipped and hold information about how to track shipments. Fulfillments are created through a fulfillment provider, which typically integrates a third-party shipping service. Fulfillments can be associated with orders, claims, swaps, and returns. type: object required: - canceled_at - claim_order_id - created_at - data - id - idempotency_key - location_id - metadata - no_notification - order_id - provider_id - shipped_at - swap_id - tracking_numbers - updated_at properties: id: description: The fulfillment's ID type: string example: ful_01G8ZRTMQCA76TXNAT81KPJZRF claim_order_id: description: The ID of the Claim that the Fulfillment belongs to. nullable: true type: string example: null claim_order: description: The details of the claim that the fulfillment may belong to. x-expandable: claim_order nullable: true type: object swap_id: description: The ID of the Swap that the Fulfillment belongs to. nullable: true type: string example: null swap: description: The details of the swap that the fulfillment may belong to. x-expandable: swap nullable: true type: object order_id: description: The ID of the Order that the Fulfillment belongs to. nullable: true type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that the fulfillment may belong to. x-expandable: order nullable: true type: object provider_id: description: The ID of the Fulfillment Provider responsible for handling the fulfillment. type: string example: manual provider: description: The details of the fulfillment provider responsible for handling the fulfillment. x-expandable: provider nullable: true $ref: '#/components/schemas/FulfillmentProvider' location_id: description: The ID of the stock location the fulfillment will be shipped from nullable: true type: string example: sloc_01G8TJSYT9M6AVS5N4EMNFS1EK items: description: The Fulfillment Items in the Fulfillment. These hold information about how many of each Line Item has been fulfilled. type: array x-expandable: items items: $ref: '#/components/schemas/FulfillmentItem' tracking_links: description: The Tracking Links that can be used to track the status of the Fulfillment. These will usually be provided by the Fulfillment Provider. type: array x-expandable: tracking_links items: $ref: '#/components/schemas/TrackingLink' tracking_numbers: description: The tracking numbers that can be used to track the status of the fulfillment. deprecated: true type: array items: type: string data: description: This contains all the data necessary for the Fulfillment provider to handle the fulfillment. type: object example: {} shipped_at: description: The date with timezone at which the Fulfillment was shipped. nullable: true type: string format: date-time no_notification: description: Flag for describing whether or not notifications related to this should be sent. nullable: true type: boolean example: false canceled_at: description: The date with timezone at which the Fulfillment was canceled. nullable: true type: string format: date-time idempotency_key: description: Randomly generated key used to continue the completion of the fulfillment in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute FulfillmentItem: title: Fulfillment Item description: This represents the association between a Line Item and a Fulfillment. type: object required: - fulfillment_id - item_id - quantity properties: fulfillment_id: description: The ID of the Fulfillment that the Fulfillment Item belongs to. type: string example: ful_01G8ZRTMQCA76TXNAT81KPJZRF item_id: description: The ID of the Line Item that the Fulfillment Item references. type: string example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN fulfillment: description: The details of the fulfillment. x-expandable: fulfillment nullable: true type: object item: description: The details of the line item. x-expandable: item nullable: true $ref: '#/components/schemas/LineItem' quantity: description: The quantity of the Line Item that is included in the Fulfillment. type: integer example: 1 FulfillmentProvider: title: Fulfillment Provider description: A fulfillment provider represents a fulfillment service installed in the Medusa backend, either through a plugin or backend customizations. It holds the fulfillment service's installation status. type: object required: - id - is_installed properties: id: description: The ID of the fulfillment provider as given by the fulfillment service. type: string example: manual is_installed: description: Whether the fulfillment service is installed in the current version. If a fulfillment service is no longer installed, the `is_installed` attribute is set to `false`. type: boolean default: true GiftCard: title: Gift Card description: Gift Cards are redeemable and represent a value that can be used towards the payment of an Order. type: object required: - balance - code - created_at - deleted_at - ends_at - id - is_disabled - metadata - order_id - region_id - tax_rate - updated_at - value properties: id: description: The gift card's ID type: string example: gift_01G8XKBPBQY2R7RBET4J7E0XQZ code: description: The unique code that identifies the Gift Card. This is used by the Customer to redeem the value of the Gift Card. type: string example: 3RFT-MH2C-Y4YZ-XMN4 value: description: The value that the Gift Card represents. type: integer example: 10 balance: description: The remaining value on the Gift Card. type: integer example: 10 region_id: description: The ID of the region this gift card is available in. type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G region: description: The details of the region this gift card is available in. x-expandable: region nullable: true $ref: '#/components/schemas/Region' order_id: description: The ID of the order that the gift card was purchased in. nullable: true type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that the gift card was purchased in. x-expandable: region nullable: true type: object is_disabled: description: Whether the Gift Card has been disabled. Disabled Gift Cards cannot be applied to carts. type: boolean default: false ends_at: description: The time at which the Gift Card can no longer be used. nullable: true type: string format: date-time tax_rate: description: The gift card's tax rate that will be applied on calculating totals nullable: true type: number example: 0 created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute GiftCardTransaction: title: Gift Card Transaction description: Gift Card Transactions are created once a Customer uses a Gift Card to pay for their Order. type: object required: - amount - created_at - gift_card_id - id - is_taxable - order_id - tax_rate properties: id: description: The gift card transaction's ID type: string example: gct_01G8X9A7ESKAJXG2H0E6F1MW7A gift_card_id: description: The ID of the Gift Card that was used in the transaction. type: string example: gift_01G8XKBPBQY2R7RBET4J7E0XQZ gift_card: description: The details of the gift card associated used in this transaction. x-expandable: gift_card nullable: true type: object order_id: description: The ID of the order that the gift card was used for payment. type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that the gift card was used for payment. x-expandable: order nullable: true type: object amount: description: The amount that was used from the Gift Card. type: integer example: 10 created_at: description: The date with timezone at which the resource was created. type: string format: date-time is_taxable: description: Whether the transaction is taxable or not. nullable: true type: boolean example: false tax_rate: description: The tax rate of the transaction nullable: true type: number example: 0 IdempotencyKey: title: Idempotency Key description: Idempotency Key is used to continue a process in case of any failure that might occur. type: object required: - created_at - id - idempotency_key - locked_at - recovery_point - response_code - response_body - request_method - request_params - request_path properties: id: description: The idempotency key's ID type: string example: ikey_01G8X9A7ESKAJXG2H0E6F1MW7A idempotency_key: description: The unique randomly generated key used to determine the state of a process. type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. created_at: description: Date which the idempotency key was locked. type: string format: date-time locked_at: description: Date which the idempotency key was locked. nullable: true type: string format: date-time request_method: description: The method of the request nullable: true type: string example: POST request_params: description: The parameters passed to the request nullable: true type: object example: id: cart_01G8ZH853Y6TFXWPG5EYE81X63 request_path: description: The request's path nullable: true type: string example: /store/carts/cart_01G8ZH853Y6TFXWPG5EYE81X63/complete response_code: description: The response's code. nullable: true type: string example: 200 response_body: description: The response's body nullable: true type: object example: id: cart_01G8ZH853Y6TFXWPG5EYE81X63 recovery_point: description: Where to continue from. type: string default: started Image: title: Image description: An Image is used to store details about uploaded images. Images are uploaded by the File Service, and the URL is provided by the File Service. type: object required: - created_at - deleted_at - id - metadata - updated_at - url properties: id: type: string description: The image's ID example: img_01G749BFYR6T8JTVW6SGW3K3E6 url: description: The URL at which the image file can be found. type: string format: uri created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute InventoryItemDTO: type: object required: - sku properties: id: description: The inventory item's ID. type: string example: iitem_12334 sku: description: The Stock Keeping Unit (SKU) code of the Inventory Item. type: string hs_code: description: The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string origin_country: description: The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string mid_code: description: The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string title: description: Title of the inventory item type: string description: description: Description of the inventory item type: string thumbnail: description: Thumbnail for the inventory item type: string material: description: The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. type: string weight: description: The weight of the Inventory Item. May be used in shipping rate calculations. type: number height: description: The height of the Inventory Item. May be used in shipping rate calculations. type: number width: description: The width of the Inventory Item. May be used in shipping rate calculations. type: number length: description: The length of the Inventory Item. May be used in shipping rate calculations. type: number requires_shipping: description: Whether the item requires shipping. type: boolean metadata: type: object description: An optional key-value map with additional details example: car: white created_at: type: string description: The date with timezone at which the resource was created. format: date-time updated_at: type: string description: The date with timezone at which the resource was updated. format: date-time deleted_at: type: string description: The date with timezone at which the resource was deleted. format: date-time InventoryLevelDTO: type: object required: - inventory_item_id - location_id - stocked_quantity - reserved_quantity - incoming_quantity properties: location_id: description: the item location ID type: string stocked_quantity: description: the total stock quantity of an inventory item at the given location ID type: number reserved_quantity: description: the reserved stock quantity of an inventory item at the given location ID type: number incoming_quantity: description: the incoming stock quantity of an inventory item at the given location ID type: number metadata: type: object description: An optional key-value map with additional details example: car: white created_at: type: string description: The date with timezone at which the resource was created. format: date-time updated_at: type: string description: The date with timezone at which the resource was updated. format: date-time deleted_at: type: string description: The date with timezone at which the resource was deleted. format: date-time Invite: title: Invite description: An invite is created when an admin user invites a new user to join the store's team. Once the invite is accepted, it's deleted. type: object required: - accepted - created_at - deleted_at - expires_at - id - metadata - role - token - updated_at - user_email properties: id: type: string description: The invite's ID example: invite_01G8TKE4XYCTHSCK2GDEP47RE1 user_email: description: The email of the user being invited. type: string format: email role: description: The user's role. These roles don't change the privileges of the user. nullable: true type: string enum: - admin - member - developer default: member accepted: description: Whether the invite was accepted or not. type: boolean default: false token: description: The token used to accept the invite. type: string expires_at: description: The date the invite expires at. type: string format: date-time created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute LineItem: title: Line Item description: Line Items are created when a product is added to a Cart. When Line Items are purchased they will get copied to the resulting order, swap, or claim, and can eventually be referenced in Fulfillments and Returns. Line items may also be used for order edits. type: object required: - allow_discounts - cart_id - claim_order_id - created_at - description - fulfilled_quantity - has_shipping - id - is_giftcard - is_return - metadata - order_edit_id - order_id - original_item_id - quantity - returned_quantity - shipped_quantity - should_merge - swap_id - thumbnail - title - unit_price - updated_at - variant_id properties: id: description: The line item's ID type: string example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN cart_id: description: The ID of the cart that the line item may belongs to. nullable: true type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 cart: description: The details of the cart that the line item may belongs to. x-expandable: cart nullable: true type: object order_id: description: The ID of the order that the line item may belongs to. nullable: true type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that the line item may belongs to. x-expandable: order nullable: true type: object swap_id: description: The ID of the swap that the line item may belong to. nullable: true type: string example: null swap: description: The details of the swap that the line item may belong to. x-expandable: swap nullable: true type: object claim_order_id: description: The ID of the claim that the line item may belong to. nullable: true type: string example: null claim_order: description: The details of the claim that the line item may belong to. x-expandable: claim_order nullable: true type: object tax_lines: description: The details of the item's tax lines. x-expandable: tax_lines type: array items: $ref: '#/components/schemas/LineItemTaxLine' adjustments: description: The details of the item's adjustments, which are available when a discount is applied on the item. x-expandable: adjustments type: array items: $ref: '#/components/schemas/LineItemAdjustment' original_item_id: description: The ID of the original line item. This is useful if the line item belongs to a resource that references an order, such as a return or an order edit. nullable: true type: string order_edit_id: description: The ID of the order edit that the item may belong to. nullable: true type: string order_edit: description: The details of the order edit. x-expandable: order_edit nullable: true type: object title: description: The title of the Line Item. type: string example: Medusa Coffee Mug description: description: A more detailed description of the contents of the Line Item. nullable: true type: string example: One Size thumbnail: description: A URL string to a small image of the contents of the Line Item. nullable: true type: string format: uri example: https://medusa-public-images.s3.eu-west-1.amazonaws.com/coffee-mug.png is_return: description: Is the item being returned type: boolean default: false is_giftcard: description: Flag to indicate if the Line Item is a Gift Card. type: boolean default: false should_merge: description: Flag to indicate if new Line Items with the same variant should be merged or added as an additional Line Item. type: boolean default: true allow_discounts: description: Flag to indicate if the Line Item should be included when doing discount calculations. type: boolean default: true has_shipping: description: Flag to indicate if the Line Item has fulfillment associated with it. nullable: true type: boolean example: false unit_price: description: The price of one unit of the content in the Line Item. This should be in the currency defined by the Cart/Order/Swap/Claim that the Line Item belongs to. type: integer example: 8000 variant_id: description: The id of the Product Variant contained in the Line Item. nullable: true type: string example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 variant: description: The details of the product variant that this item was created from. x-expandable: variant nullable: true $ref: '#/components/schemas/ProductVariant' quantity: description: The quantity of the content in the Line Item. type: integer example: 1 fulfilled_quantity: description: The quantity of the Line Item that has been fulfilled. nullable: true type: integer example: 0 returned_quantity: description: The quantity of the Line Item that has been returned. nullable: true type: integer example: 0 shipped_quantity: description: The quantity of the Line Item that has been shipped. nullable: true type: integer example: 0 refundable: description: The amount that can be refunded from the given Line Item. Takes taxes and discounts into consideration. type: integer example: 0 subtotal: description: The subtotal of the line item type: integer example: 8000 tax_total: description: The total of tax of the line item type: integer example: 0 total: description: The total amount of the line item type: integer example: 8000 original_total: description: The original total amount of the line item type: integer example: 8000 original_tax_total: description: The original tax total amount of the line item type: integer example: 0 discount_total: description: The total of discount of the line item rounded type: integer example: 0 raw_discount_total: description: The total of discount of the line item type: integer example: 0 gift_card_total: description: The total of the gift card of the line item type: integer example: 0 includes_tax: description: Indicates if the line item unit_price include tax x-featureFlag: tax_inclusive_pricing type: boolean default: false created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute LineItemAdjustment: title: Line Item Adjustment description: A Line Item Adjustment includes details on discounts applied on a line item. type: object required: - amount - description - discount_id - id - item_id - metadata properties: id: description: The Line Item Adjustment's ID type: string example: lia_01G8TKE4XYCTHSCK2GDEP47RE1 item_id: description: The ID of the line item type: string example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN item: description: The details of the line item. x-expandable: item nullable: true type: object description: description: The line item's adjustment description type: string example: Adjusted item's price. discount_id: description: The ID of the discount associated with the adjustment nullable: true type: string example: disc_01F0YESMW10MGHWJKZSDDMN0VN discount: description: The details of the discount associated with the adjustment. x-expandable: discount nullable: true $ref: '#/components/schemas/Discount' amount: description: The adjustment amount type: number example: 1000 metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute LineItemTaxLine: title: Line Item Tax Line description: A Line Item Tax Line represents the taxes applied on a line item. type: object required: - code - created_at - id - item_id - metadata - name - rate - updated_at properties: id: description: The line item tax line's ID type: string example: litl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 code: description: A code to identify the tax type by nullable: true type: string example: tax01 name: description: A human friendly name for the tax type: string example: Tax Example rate: description: The numeric rate to charge tax by type: number example: 10 item_id: description: The ID of the line item type: string example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN item: description: The details of the line item. x-expandable: item nullable: true type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ModulesResponse: type: array items: type: object required: - module - resolution properties: module: description: The key of the module. type: string resolution: description: The resolution path of the module or false if module is not installed. type: string MoneyAmount: title: Money Amount description: A Money Amount represent a price amount, for example, a product variant's price or a price in a price list. Each Money Amount either has a Currency or Region associated with it to indicate the pricing in a given Currency or, for fully region-based pricing, the given price in a specific Region. If region-based pricing is used, the amount will be in the currency defined for the Region. type: object required: - amount - created_at - currency_code - deleted_at - id - max_quantity - min_quantity - price_list_id - region_id - updated_at - variant_id properties: id: description: The money amount's ID type: string example: ma_01F0YESHRFQNH5S8Q0PK84YYZN currency_code: description: The 3 character currency code that the money amount may belong to. type: string example: usd externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. currency: description: The details of the currency that the money amount may belong to. x-expandable: currency nullable: true $ref: '#/components/schemas/Currency' amount: description: The amount in the smallest currecny unit (e.g. cents 100 cents to charge $1) that the Product Variant will cost. type: integer example: 100 min_quantity: description: The minimum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities. nullable: true type: integer example: 1 max_quantity: description: The maximum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities. nullable: true type: integer example: 1 price_list_id: description: The ID of the price list that the money amount may belong to. nullable: true type: string example: pl_01G8X3CKJXCG5VXVZ87H9KC09W price_list: description: The details of the price list that the money amount may belong to. x-expandable: price_list nullable: true type: object variant_id: description: The ID of the Product Variant contained in the Line Item. nullable: true type: string example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 variant: description: The details of the product variant that the money amount may belong to. x-expandable: variant nullable: true type: object region_id: description: The region's ID nullable: true type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G region: description: The details of the region that the money amount may belong to. x-expandable: region nullable: true type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time MultipleErrors: title: Multiple Errors type: object properties: errors: type: array description: Array of errors items: $ref: '#/components/schemas/Error' message: type: string default: Provided request body contains errors. Please check the data and retry the request Note: title: Note description: A Note is an element that can be used in association with different resources to allow admin users to describe additional information. For example, they can be used to add additional information about orders. type: object required: - author_id - created_at - deleted_at - id - metadata - resource_id - resource_type - updated_at - value properties: id: description: The note's ID type: string example: note_01G8TM8ENBMC7R90XRR1G6H26Q resource_type: description: The type of resource that the Note refers to. type: string example: order resource_id: description: The ID of the resource that the Note refers to. type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK value: description: The contents of the note. type: string example: This order must be fulfilled on Monday author_id: description: The ID of the user that created the note. nullable: true type: string example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V author: description: The details of the user that created the note. x-expandable: author nullable: true $ref: '#/components/schemas/User' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white Notification: title: Notification description: A notification is an alert sent, typically to customers, using the installed Notification Provider as a reaction to internal events such as `order.placed`. Notifications can be resent. type: object required: - created_at - customer_id - data - event_name - id - parent_id - provider_id - resource_type - resource_id - to - updated_at properties: id: description: The notification's ID type: string example: noti_01G53V9Y6CKMCGBM1P0X7C28RX event_name: description: The name of the event that the notification was sent for. nullable: true type: string example: order.placed resource_type: description: The type of resource that the Notification refers to. type: string example: order resource_id: description: The ID of the resource that the Notification refers to. type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK customer_id: description: The ID of the customer that this notification was sent to. nullable: true type: string example: cus_01G2SG30J8C85S4A5CHM2S1NS2 customer: description: The details of the customer that this notification was sent to. x-expandable: customer nullable: true $ref: '#/components/schemas/Customer' to: description: The address that the Notification was sent to. This will usually be an email address, but can represent other addresses such as a chat bot user ID. type: string example: user@example.com data: description: The data that the Notification was sent with. This contains all the data necessary for the Notification Provider to initiate a resend. type: object example: {} parent_id: description: The notification's parent ID nullable: true type: string example: noti_01G53V9Y6CKMCGBM1P0X7C28RX parent_notification: description: The details of the parent notification. x-expandable: parent_notification nullable: true type: object resends: description: The details of all resends of the notification. type: array x-expandable: resends items: type: object provider_id: description: The ID of the notification provider used to send the notification. nullable: true type: string example: sengrid provider: description: The notification provider used to send the notification. x-expandable: provider nullable: true $ref: '#/components/schemas/NotificationProvider' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time NotificationProvider: title: Notification Provider description: A notification provider represents a notification service installed in the Medusa backend, either through a plugin or backend customizations. It holds the notification service's installation status. type: object required: - id - is_installed properties: id: description: The ID of the notification provider as given by the notification service. type: string example: sendgrid is_installed: description: Whether the notification service is installed in the current version. If a notification service is no longer installed, the `is_installed` attribute is set to `false`. type: boolean default: true OAuth: title: OAuth description: An Oauth app is typically created by a plugin to handle authentication to third-party services. type: object required: - application_name - data - display_name - id - install_url - uninstall_url properties: id: description: The app's ID type: string example: example_app display_name: description: The app's display name type: string example: Example app application_name: description: The app's name type: string example: example install_url: description: The URL to install the app nullable: true type: string format: uri uninstall_url: description: The URL to uninstall the app nullable: true type: string format: uri data: description: Any data necessary to the app. nullable: true type: object example: {} Order: title: Order description: An order is a purchase made by a customer. It holds details about payment and fulfillment of the order. An order may also be created from a draft order, which is created by an admin user. type: object required: - billing_address_id - canceled_at - cart_id - created_at - currency_code - customer_id - draft_order_id - display_id - email - external_id - fulfillment_status - id - idempotency_key - metadata - no_notification - object - payment_status - region_id - shipping_address_id - status - tax_rate - updated_at properties: id: description: The order's ID type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK status: description: The order's status type: string enum: - pending - completed - archived - canceled - requires_action default: pending fulfillment_status: description: The order's fulfillment status type: string enum: - not_fulfilled - partially_fulfilled - fulfilled - partially_shipped - shipped - partially_returned - returned - canceled - requires_action default: not_fulfilled payment_status: description: The order's payment status type: string enum: - not_paid - awaiting - captured - partially_refunded - refunded - canceled - requires_action default: not_paid display_id: description: The order's display ID type: integer example: 2 cart_id: description: The ID of the cart associated with the order nullable: true type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 cart: description: The details of the cart associated with the order. x-expandable: cart nullable: true type: object customer_id: description: The ID of the customer associated with the order type: string example: cus_01G2SG30J8C85S4A5CHM2S1NS2 customer: description: The details of the customer associated with the order. x-expandable: customer nullable: true type: object email: description: The email associated with the order type: string format: email billing_address_id: description: The ID of the billing address associated with the order nullable: true type: string example: addr_01G8ZH853YPY9B94857DY91YGW billing_address: description: The details of the billing address associated with the order. x-expandable: billing_address nullable: true $ref: '#/components/schemas/Address' shipping_address_id: description: The ID of the shipping address associated with the order nullable: true type: string example: addr_01G8ZH853YPY9B94857DY91YGW shipping_address: description: The details of the shipping address associated with the order. x-expandable: shipping_address nullable: true $ref: '#/components/schemas/Address' region_id: description: The ID of the region this order was created in. type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G region: description: The details of the region this order was created in. x-expandable: region nullable: true $ref: '#/components/schemas/Region' currency_code: description: The 3 character currency code that is used in the order type: string example: usd externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. currency: description: The details of the currency used in the order. x-expandable: currency nullable: true $ref: '#/components/schemas/Currency' tax_rate: description: The order's tax rate nullable: true type: number example: 0 discounts: description: The details of the discounts applied on the order. type: array x-expandable: discounts items: $ref: '#/components/schemas/Discount' gift_cards: description: The details of the gift card used in the order. type: array x-expandable: gift_cards items: $ref: '#/components/schemas/GiftCard' shipping_methods: description: The details of the shipping methods used in the order. type: array x-expandable: shipping_methods items: $ref: '#/components/schemas/ShippingMethod' payments: description: The details of the payments used in the order. type: array x-expandable: payments items: type: object fulfillments: description: The details of the fulfillments created for the order. type: array x-expandable: fulfillments items: type: object returns: description: The details of the returns created for the order. type: array x-expandable: returns items: type: object claims: description: The details of the claims created for the order. type: array x-expandable: claims items: type: object refunds: description: The details of the refunds created for the order. type: array x-expandable: refunds items: type: object swaps: description: The details of the swaps created for the order. type: array x-expandable: swaps items: type: object draft_order_id: description: The ID of the draft order this order was created from. nullable: true type: string example: null draft_order: description: The details of the draft order this order was created from. x-expandable: draft_order nullable: true type: object items: description: The details of the line items that belong to the order. x-expandable: items type: array items: $ref: '#/components/schemas/LineItem' edits: description: The details of the order edits done on the order. type: array x-expandable: edits items: type: object gift_card_transactions: description: The gift card transactions made in the order. type: array x-expandable: gift_card_transactions items: $ref: '#/components/schemas/GiftCardTransaction' canceled_at: description: The date the order was canceled on. nullable: true type: string format: date-time no_notification: description: Flag for describing whether or not notifications related to this should be send. nullable: true type: boolean example: false idempotency_key: description: Randomly generated key used to continue the processing of the order in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. external_id: description: The ID of an external order. nullable: true type: string example: null sales_channel_id: description: The ID of the sales channel this order belongs to. nullable: true type: string example: null sales_channel: description: The details of the sales channel this order belongs to. x-expandable: sales_channel nullable: true $ref: '#/components/schemas/SalesChannel' shipping_total: type: integer description: The total of shipping example: 1000 nullable: true shipping_tax_total: type: integer description: The tax total applied on shipping example: 1000 raw_discount_total: description: The total of discount type: integer example: 800 discount_total: description: The total of discount rounded type: integer example: 800 tax_total: description: The total of tax type: integer example: 0 item_tax_total: description: The tax total applied on items type: integer example: 0 nullable: true refunded_total: description: The total amount refunded if the order is returned. type: integer example: 0 total: description: The total amount of the order type: integer example: 8200 subtotal: description: The subtotal of the order type: integer example: 8000 paid_total: description: The total amount paid type: integer example: 8000 refundable_amount: description: The amount that can be refunded type: integer example: 8200 gift_card_total: description: The total of gift cards type: integer example: 0 gift_card_tax_total: description: The total of gift cards with taxes type: integer example: 0 returnable_items: description: The details of the line items that are returnable as part of the order, swaps, or claims type: array x-expandable: returnable_items items: $ref: '#/components/schemas/LineItem' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute sales_channels: description: The associated sales channels. type: array nullable: true x-expandable: sales_channels x-featureFlag: medusa_v2 items: $ref: '#/components/schemas/SalesChannel' OrderEdit: title: Order Edit description: Order edit allows modifying items in an order, such as adding, updating, or deleting items from the original order. Once the order edit is confirmed, the changes are reflected on the original order. type: object required: - canceled_at - canceled_by - confirmed_by - confirmed_at - created_at - created_by - declined_at - declined_by - declined_reason - id - internal_note - order_id - payment_collection_id - requested_at - requested_by - status - updated_at properties: id: description: The order edit's ID type: string example: oe_01G8TJSYT9M6AVS5N4EMNFS1EK order_id: description: The ID of the order that is edited type: string example: order_01G2SG30J8C85S4A5CHM2S1NS2 order: description: The details of the order that this order edit was created for. x-expandable: order nullable: true type: object changes: description: The details of all the changes on the original order's line items. x-expandable: changes type: array items: $ref: '#/components/schemas/OrderItemChange' internal_note: description: An optional note with additional details about the order edit. nullable: true type: string example: Included two more items B to the order. created_by: description: The unique identifier of the user or customer who created the order edit. type: string requested_by: description: The unique identifier of the user or customer who requested the order edit. nullable: true type: string requested_at: description: The date with timezone at which the edit was requested. nullable: true type: string format: date-time confirmed_by: description: The unique identifier of the user or customer who confirmed the order edit. nullable: true type: string confirmed_at: description: The date with timezone at which the edit was confirmed. nullable: true type: string format: date-time declined_by: description: The unique identifier of the user or customer who declined the order edit. nullable: true type: string declined_at: description: The date with timezone at which the edit was declined. nullable: true type: string format: date-time declined_reason: description: An optional note why the order edit is declined. nullable: true type: string canceled_by: description: The unique identifier of the user or customer who cancelled the order edit. nullable: true type: string canceled_at: description: The date with timezone at which the edit was cancelled. nullable: true type: string format: date-time subtotal: description: The total of subtotal type: integer example: 8000 discount_total: description: The total of discount type: integer example: 800 shipping_total: description: The total of the shipping amount type: integer example: 800 gift_card_total: description: The total of the gift card amount type: integer example: 800 gift_card_tax_total: description: The total of the gift card tax amount type: integer example: 800 tax_total: description: The total of tax type: integer example: 0 total: description: The total amount of the edited order. type: integer example: 8200 difference_due: description: The difference between the total amount of the order and total amount of edited order. type: integer example: 8200 status: description: The status of the order edit. type: string enum: - confirmed - declined - requested - created - canceled items: description: The details of the cloned items from the original order with the new changes. Once the order edit is confirmed, these line items are associated with the original order. type: array x-expandable: items items: $ref: '#/components/schemas/LineItem' payment_collection_id: description: The ID of the payment collection nullable: true type: string example: paycol_01G8TJSYT9M6AVS5N4EMNFS1EK payment_collection: description: The details of the payment collection used to authorize additional payment if necessary. x-expandable: payment_collection nullable: true $ref: '#/components/schemas/PaymentCollection' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time OrderItemChange: title: Order Item Change description: An order item change is a change made within an order edit to an order's items. These changes are not reflected on the original order until the order edit is confirmed. type: object required: - created_at - deleted_at - id - line_item_id - order_edit_id - original_line_item_id - type - updated_at properties: id: description: The order item change's ID type: string example: oic_01G8TJSYT9M6AVS5N4EMNFS1EK type: description: The order item change's status type: string enum: - item_add - item_remove - item_update order_edit_id: description: The ID of the order edit type: string example: oe_01G2SG30J8C85S4A5CHM2S1NS2 order_edit: description: The details of the order edit the item change is associated with. x-expandable: order_edit nullable: true type: object original_line_item_id: description: The ID of the original line item in the order nullable: true type: string example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN original_line_item: description: The details of the original line item this item change references. This is used if the item change updates or deletes the original item. x-expandable: original_line_item nullable: true $ref: '#/components/schemas/LineItem' line_item_id: description: The ID of the cloned line item. nullable: true type: string example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN line_item: description: The details of the resulting line item after the item change. This line item is then used in the original order once the order edit is confirmed. x-expandable: line_item nullable: true $ref: '#/components/schemas/LineItem' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time Payment: title: Payment description: A payment is originally created from a payment session. Once a payment session is authorized, the payment is created to represent the authorized amount with a given payment method. Payments can be captured, canceled or refunded. Payments can be made towards orders, swaps, order edits, or other resources. type: object required: - amount - amount_refunded - canceled_at - captured_at - cart_id - created_at - currency_code - data - id - idempotency_key - metadata - order_id - provider_id - swap_id - updated_at properties: id: description: The payment's ID type: string example: pay_01G2SJNT6DEEWDFNAJ4XWDTHKE swap_id: description: The ID of the swap that this payment was potentially created for. nullable: true type: string example: null swap: description: The details of the swap that this payment was potentially created for. x-expandable: swap nullable: true type: object cart_id: description: The ID of the cart that the payment session was potentially created for. nullable: true type: string cart: description: The details of the cart that the payment session was potentially created for. x-expandable: cart nullable: true type: object order_id: description: The ID of the order that the payment session was potentially created for. nullable: true type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that the payment session was potentially created for. x-expandable: order nullable: true type: object amount: description: The amount that the Payment has been authorized for. type: integer example: 100 currency_code: description: The 3 character ISO currency code of the payment. type: string example: usd externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. currency: description: The details of the currency of the payment. x-expandable: currency nullable: true $ref: '#/components/schemas/Currency' amount_refunded: description: The amount of the original Payment amount that has been refunded back to the Customer. type: integer default: 0 example: 0 provider_id: description: The id of the Payment Provider that is responsible for the Payment type: string example: manual data: description: The data required for the Payment Provider to identify, modify and process the Payment. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state. type: object example: {} captured_at: description: The date with timezone at which the Payment was captured. nullable: true type: string format: date-time canceled_at: description: The date with timezone at which the Payment was canceled. nullable: true type: string format: date-time idempotency_key: description: Randomly generated key used to continue the completion of a payment in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute PaymentCollection: title: Payment Collection description: A payment collection allows grouping and managing a list of payments at one. This can be helpful when making additional payment for order edits or integrating installment payments. type: object required: - amount - authorized_amount - created_at - created_by - currency_code - deleted_at - description - id - metadata - region_id - status - type - updated_at properties: id: description: The payment collection's ID type: string example: paycol_01G8TJSYT9M6AVS5N4EMNFS1EK type: description: The type of the payment collection type: string enum: - order_edit status: description: The type of the payment collection type: string enum: - not_paid - awaiting - authorized - partially_authorized - canceled description: description: Description of the payment collection nullable: true type: string amount: description: Amount of the payment collection. type: integer authorized_amount: description: Authorized amount of the payment collection. nullable: true type: integer region_id: description: The ID of the region this payment collection is associated with. type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G region: description: The details of the region this payment collection is associated with. x-expandable: region nullable: true $ref: '#/components/schemas/Region' currency_code: description: The three character ISO code for the currency this payment collection is associated with. type: string example: usd externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. currency: description: The details of the currency this payment collection is associated with. x-expandable: currency nullable: true $ref: '#/components/schemas/Currency' payment_sessions: description: The details of the payment sessions created as part of the payment collection. type: array x-expandable: payment_sessions items: $ref: '#/components/schemas/PaymentSession' payments: description: The details of the payments created as part of the payment collection. type: array x-expandable: payments items: $ref: '#/components/schemas/Payment' created_by: description: The ID of the user that created the payment collection. type: string created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute PaymentProvider: title: Payment Provider description: A payment provider represents a payment service installed in the Medusa backend, either through a plugin or backend customizations. It holds the payment service's installation status. type: object required: - id - is_installed properties: id: description: The ID of the payment provider as given by the payment service. type: string example: manual is_installed: description: Whether the payment service is installed in the current version. If a payment service is no longer installed, the `is_installed` attribute is set to `false`. type: boolean default: true PaymentSession: title: Payment Session description: A Payment Session is created when a Customer initilizes the checkout flow, and can be used to hold the state of a payment flow. Each Payment Session is controlled by a Payment Provider, which is responsible for the communication with external payment services. Authorized Payment Sessions will eventually get promoted to Payments to indicate that they are authorized for payment processing such as capture or refund. Payment sessions can also be used as part of payment collections. type: object required: - amount - cart_id - created_at - data - id - is_initiated - is_selected - idempotency_key - payment_authorized_at - provider_id - status - updated_at properties: id: description: The payment session's ID type: string example: ps_01G901XNSRM2YS3ASN9H5KG3FZ cart_id: description: The ID of the cart that the payment session was created for. nullable: true type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 cart: description: The details of the cart that the payment session was created for. x-expandable: cart nullable: true $ref: '#/components/schemas/Cart' provider_id: description: The ID of the Payment Provider that is responsible for the Payment Session type: string example: manual is_selected: description: A flag to indicate if the Payment Session has been selected as the method that will be used to complete the purchase. nullable: true type: boolean example: true is_initiated: description: A flag to indicate if a communication with the third party provider has been initiated. type: boolean default: false example: true status: description: Indicates the status of the Payment Session. Will default to `pending`, and will eventually become `authorized`. Payment Sessions may have the status of `requires_more` to indicate that further actions are to be completed by the Customer. type: string enum: - authorized - pending - requires_more - error - canceled example: pending data: description: The data required for the Payment Provider to identify, modify and process the Payment Session. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state. type: object example: {} idempotency_key: description: Randomly generated key used to continue the completion of a cart in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. amount: description: The amount that the Payment Session has been authorized for. nullable: true type: integer example: 100 payment_authorized_at: description: The date with timezone at which the Payment Session was authorized. nullable: true type: string format: date-time created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time PriceList: title: Price List description: A Price List represents a set of prices that override the default price for one or more product variants. type: object required: - created_at - deleted_at - description - ends_at - id - name - starts_at - status - type - updated_at properties: id: description: The price list's ID type: string example: pl_01G8X3CKJXCG5VXVZ87H9KC09W name: description: The price list's name type: string example: VIP Prices description: description: The price list's description type: string example: Prices for VIP customers type: description: The type of Price List. This can be one of either `sale` or `override`. type: string enum: - sale - override default: sale status: description: The status of the Price List type: string enum: - active - draft default: draft starts_at: description: The date with timezone that the Price List starts being valid. nullable: true type: string format: date-time ends_at: description: The date with timezone that the Price List stops being valid. nullable: true type: string format: date-time customer_groups: description: The details of the customer groups that the Price List can apply to. type: array x-expandable: customer_groups items: $ref: '#/components/schemas/CustomerGroup' prices: description: The prices that belong to the price list, represented as a Money Amount. type: array x-expandable: prices items: $ref: '#/components/schemas/MoneyAmount' includes_tax: description: Whether the price list prices include tax type: boolean x-featureFlag: tax_inclusive_pricing default: false created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time PricedProduct: title: Priced Product type: object allOf: - $ref: '#/components/schemas/Product' - type: object properties: variants: description: The product variants and their prices. type: array items: $ref: '#/components/schemas/PricedVariant' PricedShippingOption: title: Priced Shipping Option type: object allOf: - $ref: '#/components/schemas/ShippingOption' - type: object properties: price_incl_tax: type: number description: Price including taxes tax_rates: type: array description: An array of applied tax rates items: type: object properties: rate: type: number description: The tax rate value name: type: string description: The name of the tax rate code: type: string description: The code of the tax rate tax_amount: type: number description: The taxes applied. PricedVariant: title: Priced Product Variant type: object allOf: - $ref: '#/components/schemas/ProductVariant' - type: object properties: original_price: type: number description: The original price of the variant without any discounted prices applied. calculated_price: type: number description: The calculated price of the variant. Can be a discounted price. original_price_incl_tax: type: number description: The original price of the variant including taxes. calculated_price_incl_tax: type: number description: The calculated price of the variant including taxes. original_tax: type: number description: The taxes applied on the original price. calculated_tax: type: number description: The taxes applied on the calculated price. tax_rates: type: array description: An array of applied tax rates items: type: object properties: rate: type: number description: The tax rate value name: type: string description: The name of the tax rate code: type: string description: The code of the tax rate Product: title: Product description: A product is a saleable item that holds general information such as name or description. It must include at least one Product Variant, where each product variant defines different options to purchase the product with (for example, different sizes or colors). The prices and inventory of the product are defined on the variant level. type: object required: - collection_id - created_at - deleted_at - description - discountable - external_id - handle - height - hs_code - id - is_giftcard - length - material - metadata - mid_code - origin_country - profile_id - status - subtitle - type_id - thumbnail - title - updated_at - weight - width properties: id: description: The product's ID type: string example: prod_01G1G5V2MBA328390B5AXJ610F title: description: A title that can be displayed for easy identification of the Product. type: string example: Medusa Coffee Mug subtitle: description: An optional subtitle that can be used to further specify the Product. nullable: true type: string description: description: A short description of the Product. nullable: true type: string example: Every programmer's best friend. handle: description: A unique identifier for the Product (e.g. for slug structure). nullable: true type: string example: coffee-mug is_giftcard: description: Whether the Product represents a Gift Card. Products that represent Gift Cards will automatically generate a redeemable Gift Card code once they are purchased. type: boolean default: false status: description: The status of the product type: string enum: - draft - proposed - published - rejected default: draft images: description: The details of the product's images. type: array x-expandable: images items: $ref: '#/components/schemas/Image' thumbnail: description: A URL to an image file that can be used to identify the Product. nullable: true type: string format: uri options: description: The details of the Product Options that are defined for the Product. The product's variants will have a unique combination of values of the product's options. type: array x-expandable: options items: $ref: '#/components/schemas/ProductOption' variants: description: The details of the Product Variants that belong to the Product. Each will have a unique combination of values of the product's options. type: array x-expandable: variants items: $ref: '#/components/schemas/ProductVariant' categories: description: The details of the product categories that this product belongs to. type: array x-expandable: categories x-featureFlag: product_categories items: $ref: '#/components/schemas/ProductCategory' profile_id: description: The ID of the shipping profile that the product belongs to. The shipping profile has a set of defined shipping options that can be used to fulfill the product. type: string example: sp_01G1G5V239ENSZ5MV4JAR737BM profile: description: The details of the shipping profile that the product belongs to. The shipping profile has a set of defined shipping options that can be used to fulfill the product. x-expandable: profile nullable: true $ref: '#/components/schemas/ShippingProfile' profiles: description: Available if the relation `profiles` is expanded. nullable: true type: array items: $ref: '#/components/schemas/ShippingProfile' weight: description: The weight of the Product Variant. May be used in shipping rate calculations. nullable: true type: number example: null length: description: The length of the Product Variant. May be used in shipping rate calculations. nullable: true type: number example: null height: description: The height of the Product Variant. May be used in shipping rate calculations. nullable: true type: number example: null width: description: The width of the Product Variant. May be used in shipping rate calculations. nullable: true type: number example: null hs_code: description: The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. nullable: true type: string example: null origin_country: description: The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. nullable: true type: string example: null mid_code: description: The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. nullable: true type: string example: null material: description: The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. nullable: true type: string example: null collection_id: description: The ID of the product collection that the product belongs to. nullable: true type: string example: pcol_01F0YESBFAZ0DV6V831JXWH0BG collection: description: The details of the product collection that the product belongs to. x-expandable: collection nullable: true $ref: '#/components/schemas/ProductCollection' type_id: description: The ID of the product type that the product belongs to. nullable: true type: string example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A type: description: The details of the product type that the product belongs to. x-expandable: type nullable: true $ref: '#/components/schemas/ProductType' tags: description: The details of the product tags used in this product. type: array x-expandable: type items: $ref: '#/components/schemas/ProductTag' discountable: description: Whether the Product can be discounted. Discounts will not apply to Line Items of this Product when this flag is set to `false`. type: boolean default: true external_id: description: The external ID of the product nullable: true type: string example: null sales_channels: description: The details of the sales channels this product is available in. type: array x-expandable: sales_channels items: $ref: '#/components/schemas/SalesChannel' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductCategory: title: Product Category description: A product category can be used to categorize products into a hierarchy of categories. x-resourceId: ProductCategory x-featureFlag: product_categories type: object required: - category_children - created_at - handle - id - is_active - is_internal - metadata - mpath - name - parent_category_id - updated_at properties: id: description: The product category's ID type: string example: pcat_01G2SG30J8C85S4A5CHM2S1NS2 name: description: The product category's name type: string example: Regular Fit description: description: The product category's description. type: string default: '' handle: description: A unique string that identifies the Product Category - can for example be used in slug structures. type: string example: regular-fit mpath: description: A string for Materialized Paths - used for finding ancestors and descendents nullable: true type: string example: pcat_id1.pcat_id2.pcat_id3 is_internal: type: boolean description: A flag to make product category an internal category for admins default: false is_active: type: boolean description: A flag to make product category visible/hidden in the store front default: false rank: type: integer description: An integer that depicts the rank of category in a tree node default: 0 category_children: description: The details of the category's children. type: array x-expandable: category_children items: type: object parent_category_id: description: The ID of the parent category. nullable: true type: string default: null parent_category: description: The details of the parent of this category. x-expandable: parent_category nullable: true type: object products: description: The details of the products that belong to this category. type: array x-expandable: products items: type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductCollection: title: Product Collection description: A Product Collection allows grouping together products for promotional purposes. For example, an admin can create a Summer collection, add products to it, and showcase it on the storefront. type: object required: - created_at - deleted_at - handle - id - metadata - title - updated_at properties: id: description: The product collection's ID type: string example: pcol_01F0YESBFAZ0DV6V831JXWH0BG title: description: The title that the Product Collection is identified by. type: string example: Summer Collection handle: description: A unique string that identifies the Product Collection - can for example be used in slug structures. nullable: true type: string example: summer-collection products: description: The details of the products that belong to this product collection. type: array x-expandable: products items: type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductOption: title: Product Option description: A Product Option defines properties that may vary between different variants of a Product. Common Product Options are "Size" and "Color". Admins are free to create any product options. type: object required: - created_at - deleted_at - id - metadata - product_id - title - updated_at properties: id: description: The product option's ID type: string example: opt_01F0YESHQBZVKCEXJ24BS6PCX3 title: description: The title that the Product Option is defined by (e.g. `Size`). type: string example: Size values: description: The details of the values of the product option. type: array x-expandable: values items: $ref: '#/components/schemas/ProductOptionValue' product_id: description: The ID of the product that this product option belongs to. type: string example: prod_01G1G5V2MBA328390B5AXJ610F product: description: The details of the product that this product option belongs to. x-expandable: product nullable: true type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductOptionValue: title: Product Option Value description: An option value is one of the possible values of a Product Option. Product Variants specify a unique combination of product option values. type: object required: - created_at - deleted_at - id - metadata - option_id - updated_at - value - variant_id properties: id: description: The product option value's ID type: string example: optval_01F0YESHR7S6ECD03RF6W12DSJ value: description: The value that the Product Variant has defined for the specific Product Option (e.g. if the Product Option is "Size" this value could be `Small`, `Medium` or `Large`). type: string example: large option_id: description: The ID of the Product Option that the Product Option Value belongs to. type: string example: opt_01F0YESHQBZVKCEXJ24BS6PCX3 option: description: The details of the product option that the Product Option Value belongs to. x-expandable: option nullable: true type: object variant_id: description: The ID of the product variant that uses this product option value. type: string example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 variant: description: The details of the product variant that uses this product option value. x-expandable: variant nullable: true type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductTag: title: Product Tag description: A Product Tag can be added to Products for easy filtering and grouping. type: object required: - created_at - deleted_at - id - metadata - updated_at - value properties: id: description: The product tag's ID type: string example: ptag_01G8K2MTMG9168F2B70S1TAVK3 value: description: The value that the Product Tag represents type: string example: Pants created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductTaxRate: title: Product Tax Rate description: This represents the association between a tax rate and a product to indicate that the product is taxed in a way different than the default. type: object required: - created_at - metadata - product_id - rate_id - updated_at properties: product_id: description: The ID of the Product type: string example: prod_01G1G5V2MBA328390B5AXJ610F product: description: The details of the product. x-expandable: product nullable: true $ref: '#/components/schemas/Product' rate_id: description: The ID of the Tax Rate type: string example: txr_01G8XDBAWKBHHJRKH0AV02KXBR tax_rate: description: The details of the tax rate. x-expandable: tax_rate nullable: true $ref: '#/components/schemas/TaxRate' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductType: title: Product Type description: A Product Type can be added to Products for filtering and reporting purposes. type: object required: - created_at - deleted_at - id - metadata - updated_at - value properties: id: description: The product type's ID type: string example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A value: description: The value that the Product Type represents. type: string example: Clothing created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductTypeTaxRate: title: Product Type Tax Rate description: This represents the association between a tax rate and a product type to indicate that the product type is taxed in a different way than the default. type: object required: - created_at - metadata - product_type_id - rate_id - updated_at properties: product_type_id: description: The ID of the Product type type: string example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A product_type: description: The details of the product type. x-expandable: product_type nullable: true $ref: '#/components/schemas/ProductType' rate_id: description: The id of the Tax Rate type: string example: txr_01G8XDBAWKBHHJRKH0AV02KXBR tax_rate: description: The details of the tax rate. x-expandable: tax_rate nullable: true $ref: '#/components/schemas/TaxRate' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ProductVariant: title: Product Variant description: A Product Variant represents a Product with a specific set of Product Option configurations. The maximum number of Product Variants that a Product can have is given by the number of available Product Option combinations. A product must at least have one product variant. type: object required: - allow_backorder - barcode - created_at - deleted_at - ean - height - hs_code - id - inventory_quantity - length - manage_inventory - material - metadata - mid_code - origin_country - product_id - sku - title - upc - updated_at - weight - width properties: id: description: The product variant's ID type: string example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 title: description: A title that can be displayed for easy identification of the Product Variant. type: string example: Small product_id: description: The ID of the product that the product variant belongs to. type: string example: prod_01G1G5V2MBA328390B5AXJ610F product: description: The details of the product that the product variant belongs to. x-expandable: product nullable: true type: object prices: description: The details of the prices of the Product Variant, each represented as a Money Amount. Each Money Amount represents a price in a given currency or a specific Region. type: array x-expandable: prices items: $ref: '#/components/schemas/MoneyAmount' sku: description: The unique stock keeping unit used to identify the Product Variant. This will usually be a unique identifer for the item that is to be shipped, and can be referenced across multiple systems. nullable: true type: string example: shirt-123 barcode: description: A generic field for a GTIN number that can be used to identify the Product Variant. nullable: true type: string example: null ean: description: An EAN barcode number that can be used to identify the Product Variant. nullable: true type: string example: null upc: description: A UPC barcode number that can be used to identify the Product Variant. nullable: true type: string example: null variant_rank: description: The ranking of this variant nullable: true type: number default: 0 inventory_quantity: description: The current quantity of the item that is stocked. type: integer example: 100 allow_backorder: description: Whether the Product Variant should be purchasable when `inventory_quantity` is 0. type: boolean default: false manage_inventory: description: Whether Medusa should manage inventory for the Product Variant. type: boolean default: true hs_code: description: The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. nullable: true type: string example: null origin_country: description: The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. nullable: true type: string example: null mid_code: description: The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. nullable: true type: string example: null material: description: The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. nullable: true type: string example: null weight: description: The weight of the Product Variant. May be used in shipping rate calculations. nullable: true type: number example: null length: description: The length of the Product Variant. May be used in shipping rate calculations. nullable: true type: number example: null height: description: The height of the Product Variant. May be used in shipping rate calculations. nullable: true type: number example: null width: description: The width of the Product Variant. May be used in shipping rate calculations. nullable: true type: number example: null options: description: The details of the product options that this product variant defines values for. type: array x-expandable: options items: $ref: '#/components/schemas/ProductOptionValue' inventory_items: description: The details inventory items of the product variant. type: array x-expandable: inventory_items items: $ref: '#/components/schemas/ProductVariantInventoryItem' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute purchasable: description: | Only used with the inventory modules. A boolean value indicating whether the Product Variant is purchasable. A variant is purchasable if: - inventory is not managed - it has no inventory items - it is in stock - it is backorderable. type: boolean ProductVariantInventoryItem: title: Product Variant Inventory Item description: A Product Variant Inventory Item links variants with inventory items and denotes the required quantity of the variant. type: object required: - created_at - deleted_at - id - inventory_item_id - required_quantity - updated_at - variant_id properties: id: description: The product variant inventory item's ID type: string example: pvitem_01G8X9A7ESKAJXG2H0E6F1MW7A inventory_item_id: description: The id of the inventory item type: string variant_id: description: The id of the variant. type: string variant: description: The details of the product variant. x-expandable: variant nullable: true type: object required_quantity: description: The quantity of an inventory item required for the variant. type: integer default: 1 created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time PublishableApiKey: title: Publishable API key description: A Publishable API key defines scopes that resources are available in. Then, it can be used in request to infer the resources without having to directly pass them. For example, a publishable API key can be associated with one or more sales channels. Then, when the publishable API key is passed in the header of a request, it is inferred what sales channel is being used without having to pass the sales channel as a query or body parameter of the request. Publishable API keys can only be used with sales channels, at the moment. type: object required: - created_at - created_by - id - revoked_by - revoked_at - title - updated_at properties: id: description: The key's ID type: string example: pk_01G1G5V27GYX4QXNARRQCW1N8T created_by: description: The unique identifier of the user that created the key. nullable: true type: string example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V revoked_by: description: The unique identifier of the user that revoked the key. nullable: true type: string example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V revoked_at: description: The date with timezone at which the key was revoked. nullable: true type: string format: date-time title: description: The key's title. type: string created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time PublishableApiKeySalesChannel: title: Publishable API Key Sales Channel description: This represents the association between the Publishable API keys and Sales Channels type: object required: - publishable_key_id - sales_channel_id - created_at - updated_at - deleted_at properties: id: description: The relation's ID type: string example: pksc_01G8X9A7ESKAJXG2H0E6F1MW7A sales_channel_id: description: The sales channel's ID type: string example: sc_01G1G5V21KADXNGH29BJMAJ4B4 publishable_key_id: description: The publishable API key's ID type: string example: pak_01G1G5V21KADXNGH29BJMAJ4B4 created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time Refund: title: Refund description: A refund represents an amount of money transfered back to the customer for a given reason. Refunds may occur in relation to Returns, Swaps and Claims, but can also be initiated by an admin for an order. type: object required: - amount - created_at - id - idempotency_key - metadata - note - order_id - payment_id - reason - updated_at properties: id: description: The refund's ID type: string example: ref_01G1G5V27GYX4QXNARRQCW1N8T order_id: description: The ID of the order this refund was created for. nullable: true type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order this refund was created for. x-expandable: order nullable: true type: object payment_id: description: The payment's ID, if available. nullable: true type: string example: pay_01G8ZCC5W42ZNY842124G7P5R9 payment: description: The details of the payment associated with the refund. x-expandable: payment nullable: true type: object amount: description: The amount that has be refunded to the Customer. type: integer example: 1000 note: description: An optional note explaining why the amount was refunded. nullable: true type: string example: I didn't like it reason: description: The reason given for the Refund, will automatically be set when processed as part of a Swap, Claim or Return. type: string enum: - discount - return - swap - claim - other example: return idempotency_key: description: Randomly generated key used to continue the completion of the refund in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute Region: title: Region description: A region holds settings specific to a geographical location, including the currency, tax rates, and fulfillment and payment providers. A Region can consist of multiple countries to accomodate common shopping settings across countries. type: object required: - automatic_taxes - created_at - currency_code - deleted_at - gift_cards_taxable - id - metadata - name - tax_code - tax_provider_id - tax_rate - updated_at properties: id: description: The region's ID type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G name: description: The name of the region as displayed to the customer. If the Region only has one country it is recommended to write the country name. type: string example: EU currency_code: description: The three character currency code used in the region. type: string example: usd externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. currency: description: The details of the currency used in the region. x-expandable: currency nullable: true $ref: '#/components/schemas/Currency' tax_rate: description: The tax rate that should be charged on purchases in the Region. type: number example: 0 tax_rates: description: The details of the tax rates used in the region, aside from the default rate. type: array x-expandable: tax_rates items: $ref: '#/components/schemas/TaxRate' tax_code: description: The tax code used on purchases in the Region. This may be used by other systems for accounting purposes. nullable: true type: string example: null gift_cards_taxable: description: Whether the gift cards are taxable or not in this region. type: boolean default: true automatic_taxes: description: Whether taxes should be automated in this region. type: boolean default: true countries: description: The details of the countries included in this region. type: array x-expandable: countries items: $ref: '#/components/schemas/Country' tax_provider_id: description: The ID of the tax provider used in this region nullable: true type: string example: null tax_provider: description: The details of the tax provider used in the region. x-expandable: tax_provider nullable: true $ref: '#/components/schemas/TaxProvider' payment_providers: description: The details of the payment providers that can be used to process payments in the region. type: array x-expandable: payment_providers items: $ref: '#/components/schemas/PaymentProvider' fulfillment_providers: description: The details of the fulfillment providers that can be used to fulfill items of orders and similar resources in the region. type: array x-expandable: fulfillment_providers items: $ref: '#/components/schemas/FulfillmentProvider' includes_tax: description: Whether the prices for the region include tax type: boolean x-featureFlag: tax_inclusive_pricing default: false created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ReservationItemDTO: title: Reservation item description: Represents a reservation of an inventory item at a stock location type: object required: - id - location_id - inventory_item_id - quantity properties: id: description: The id of the reservation item type: string location_id: description: The id of the location of the reservation type: string inventory_item_id: description: The id of the inventory item the reservation relates to type: string description: description: Description of the reservation item type: string created_by: description: UserId of user who created the reservation item type: string quantity: description: The id of the reservation item type: number metadata: type: object description: An optional key-value map with additional details example: car: white created_at: type: string description: The date with timezone at which the resource was created. format: date-time updated_at: type: string description: The date with timezone at which the resource was updated. format: date-time deleted_at: type: string description: The date with timezone at which the resource was deleted. format: date-time ResponseInventoryItem: allOf: - $ref: '#/components/schemas/InventoryItemDTO' - type: object properties: location_levels: type: array description: The inventory's location levels. items: allOf: - $ref: '#/components/schemas/InventoryItemDTO' - type: object required: - available_quantity properties: available_quantity: description: The available quantity in the inventory location. type: number Return: title: Return description: A Return holds information about Line Items that a Customer wishes to send back, along with how the items will be returned. Returns can also be used as part of a Swap or a Claim. type: object required: - claim_order_id - created_at - id - idempotency_key - location_id - metadata - no_notification - order_id - received_at - refund_amount - shipping_data - status - swap_id - updated_at properties: id: description: The return's ID type: string example: ret_01F0YET7XPCMF8RZ0Y151NZV2V status: description: Status of the Return. type: string enum: - requested - received - requires_action - canceled default: requested items: description: The details of the items that the customer is returning. type: array x-expandable: items items: $ref: '#/components/schemas/ReturnItem' swap_id: description: The ID of the swap that the return may belong to. nullable: true type: string example: null swap: description: The details of the swap that the return may belong to. x-expandable: swap nullable: true type: object claim_order_id: description: The ID of the claim that the return may belong to. nullable: true type: string example: null claim_order: description: The details of the claim that the return may belong to. x-expandable: claim_order nullable: true type: object order_id: description: The ID of the order that the return was created for. nullable: true type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that the return was created for. x-expandable: order nullable: true type: object shipping_method: description: The details of the Shipping Method that will be used to send the Return back. Can be null if the Customer will handle the return shipment themselves. x-expandable: shipping_method nullable: true $ref: '#/components/schemas/ShippingMethod' shipping_data: description: Data about the return shipment as provided by the Fulfilment Provider that handles the return shipment. nullable: true type: object example: {} location_id: description: The ID of the stock location the return will be added back. nullable: true type: string example: sloc_01G8TJSYT9M6AVS5N4EMNFS1EK refund_amount: description: The amount that should be refunded as a result of the return. type: integer example: 1000 no_notification: description: When set to true, no notification will be sent related to this return. nullable: true type: boolean example: false idempotency_key: description: Randomly generated key used to continue the completion of the return in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. received_at: description: The date with timezone at which the return was received. nullable: true type: string format: date-time created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ReturnItem: title: Return Item description: A return item represents a line item in an order that is to be returned. It includes details related to the return and the reason behind it. type: object required: - is_requested - item_id - metadata - note - quantity - reason_id - received_quantity - requested_quantity - return_id properties: return_id: description: The ID of the Return that the Return Item belongs to. type: string example: ret_01F0YET7XPCMF8RZ0Y151NZV2V item_id: description: The ID of the Line Item that the Return Item references. type: string example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN return_order: description: Details of the Return that the Return Item belongs to. x-expandable: return_order nullable: true type: object item: description: The details of the line item in the original order to be returned. x-expandable: item nullable: true $ref: '#/components/schemas/LineItem' quantity: description: The quantity of the Line Item to be returned. type: integer example: 1 is_requested: description: Whether the Return Item was requested initially or received unexpectedly in the warehouse. type: boolean default: true requested_quantity: description: The quantity that was originally requested to be returned. nullable: true type: integer example: 1 received_quantity: description: The quantity that was received in the warehouse. nullable: true type: integer example: 1 reason_id: description: The ID of the reason for returning the item. nullable: true type: string example: rr_01G8X82GCCV2KSQHDBHSSAH5TQ reason: description: The details of the reason for returning the item. x-expandable: reason nullable: true $ref: '#/components/schemas/ReturnReason' note: description: An optional note with additional details about the Return. nullable: true type: string example: I didn't like it. metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ReturnReason: title: Return Reason description: A Return Reason is a value defined by an admin. It can be used on Return Items in order to indicate why a Line Item was returned. type: object required: - created_at - deleted_at - description - id - label - metadata - parent_return_reason_id - updated_at - value properties: id: description: The return reason's ID type: string example: rr_01G8X82GCCV2KSQHDBHSSAH5TQ value: description: The value to identify the reason by. type: string example: damaged label: description: A text that can be displayed to the Customer as a reason. type: string example: Damaged goods description: description: A description of the Reason. nullable: true type: string example: Items that are damaged parent_return_reason_id: description: The ID of the parent reason. nullable: true type: string example: null parent_return_reason: description: The details of the parent reason. x-expandable: parent_return_reason nullable: true type: object return_reason_children: description: The details of the child reasons. x-expandable: return_reason_children type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute SalesChannel: title: Sales Channel description: A Sales Channel is a method a business offers its products for purchase for the customers. For example, a Webshop can be a sales channel, and a mobile app can be another. type: object required: - created_at - deleted_at - description - id - is_disabled - name - updated_at properties: id: description: The sales channel's ID type: string example: sc_01G8X9A7ESKAJXG2H0E6F1MW7A name: description: The name of the sales channel. type: string example: Market description: description: The description of the sales channel. nullable: true type: string example: Multi-vendor market is_disabled: description: Specify if the sales channel is enabled or disabled. type: boolean default: false locations: description: The details of the stock locations related to the sales channel. type: array x-expandable: locations items: $ref: '#/components/schemas/SalesChannelLocation' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute carts: description: The associated carts. type: array nullable: true x-expandable: carts x-featureFlag: medusa_v2 items: type: object orders: description: The associated orders. type: array nullable: true x-expandable: orders x-featureFlag: medusa_v2 items: type: object publishableKeys: description: The associated publishable API keys. type: array nullable: true x-expandable: publishableKeys items: type: object SalesChannelLocation: title: Sales Channel Stock Location description: This represents the association between a sales channel and a stock locations. type: object required: - created_at - deleted_at - id - location_id - sales_channel_id - updated_at properties: id: description: The Sales Channel Stock Location's ID type: string example: scloc_01G8X9A7ESKAJXG2H0E6F1MW7A sales_channel_id: description: The ID of the Sales Channel type: string example: sc_01G8X9A7ESKAJXG2H0E6F1MW7A location_id: description: The ID of the Location Stock. type: string sales_channel: description: The details of the sales channel the location is associated with. x-expandable: sales_channel nullable: true type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time ShippingMethod: title: Shipping Method description: A Shipping Method represents a way in which an Order or Return can be shipped. Shipping Methods are created from a Shipping Option, but may contain additional details that can be necessary for the Fulfillment Provider to handle the shipment. If the shipping method is created for a return, it may be associated with a claim or a swap that the return is part of. type: object required: - cart_id - claim_order_id - data - id - order_id - price - return_id - shipping_option_id - swap_id properties: id: description: The shipping method's ID type: string example: sm_01F0YET7DR2E7CYVSDHM593QG2 shipping_option_id: description: The ID of the Shipping Option that the Shipping Method is built from. type: string example: so_01G1G5V27GYX4QXNARRQCW1N8T order_id: description: The ID of the order that the shipping method is used in. nullable: true type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that the shipping method is used in. x-expandable: order nullable: true type: object claim_order_id: description: The ID of the claim that the shipping method is used in. nullable: true type: string example: null claim_order: description: The details of the claim that the shipping method is used in. x-expandable: claim_order nullable: true type: object cart_id: description: The ID of the cart that the shipping method is used in. nullable: true type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 cart: description: The details of the cart that the shipping method is used in. x-expandable: cart nullable: true type: object swap_id: description: The ID of the swap that the shipping method is used in. nullable: true type: string example: null swap: description: The details of the swap that the shipping method is used in. x-expandable: swap nullable: true type: object return_id: description: The ID of the return that the shipping method is used in. nullable: true type: string example: null return_order: description: The details of the return that the shipping method is used in. x-expandable: return_order nullable: true type: object shipping_option: description: The details of the shipping option the method was created from. x-expandable: shipping_option nullable: true $ref: '#/components/schemas/ShippingOption' tax_lines: description: The details of the tax lines applied on the shipping method. type: array x-expandable: tax_lines items: $ref: '#/components/schemas/ShippingMethodTaxLine' price: description: The amount to charge for the Shipping Method. The currency of the price is defined by the Region that the Order that the Shipping Method belongs to is a part of. type: integer example: 200 data: description: Additional data that the Fulfillment Provider needs to fulfill the shipment. This is used in combination with the Shipping Options data, and may contain information such as a drop point id. type: object example: {} includes_tax: description: Whether the shipping method price include tax type: boolean x-featureFlag: tax_inclusive_pricing default: false subtotal: description: The subtotal of the shipping type: integer example: 8000 total: description: The total amount of the shipping type: integer example: 8200 tax_total: description: The total of tax type: integer example: 0 ShippingMethodTaxLine: title: Shipping Method Tax Line description: A Shipping Method Tax Line represents the taxes applied on a shipping method in a cart. type: object required: - code - created_at - id - shipping_method_id - metadata - name - rate - updated_at properties: id: description: The line item tax line's ID type: string example: smtl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 code: description: A code to identify the tax type by nullable: true type: string example: tax01 name: description: A human friendly name for the tax type: string example: Tax Example rate: description: The numeric rate to charge tax by type: number example: 10 shipping_method_id: description: The ID of the line item type: string example: sm_01F0YET7DR2E7CYVSDHM593QG2 shipping_method: description: The details of the associated shipping method. x-expandable: shipping_method nullable: true type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ShippingOption: title: Shipping Option description: A Shipping Option represents a way in which an Order or Return can be shipped. Shipping Options have an associated Fulfillment Provider that will be used when the fulfillment of an Order is initiated. Shipping Options themselves cannot be added to Carts, but serve as a template for Shipping Methods. This distinction makes it possible to customize individual Shipping Methods with additional information. type: object required: - admin_only - amount - created_at - data - deleted_at - id - is_return - metadata - name - price_type - profile_id - provider_id - region_id - updated_at properties: id: description: The shipping option's ID type: string example: so_01G1G5V27GYX4QXNARRQCW1N8T name: description: The name given to the Shipping Option - this may be displayed to the Customer. type: string example: PostFake Standard region_id: description: The ID of the region this shipping option can be used in. type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G region: description: The details of the region this shipping option can be used in. x-expandable: region nullable: true type: object profile_id: description: The ID of the Shipping Profile that the shipping option belongs to. type: string example: sp_01G1G5V239ENSZ5MV4JAR737BM profile: description: The details of the shipping profile that the shipping option belongs to. x-expandable: profile nullable: true $ref: '#/components/schemas/ShippingProfile' provider_id: description: The ID of the fulfillment provider that will be used to later to process the shipping method created from this shipping option and its fulfillments. type: string example: manual provider: description: The details of the fulfillment provider that will be used to later to process the shipping method created from this shipping option and its fulfillments. x-expandable: provider nullable: true $ref: '#/components/schemas/FulfillmentProvider' price_type: description: The type of pricing calculation that is used when creatin Shipping Methods from the Shipping Option. Can be `flat_rate` for fixed prices or `calculated` if the Fulfillment Provider can provide price calulations. type: string enum: - flat_rate - calculated example: flat_rate amount: description: The amount to charge for shipping when the Shipping Option price type is `flat_rate`. nullable: true type: integer example: 200 is_return: description: Flag to indicate if the Shipping Option can be used for Return shipments. type: boolean default: false admin_only: description: Flag to indicate if the Shipping Option usage is restricted to admin users. type: boolean default: false requirements: description: The details of the requirements that must be satisfied for the Shipping Option to be available for usage in a Cart. type: array x-expandable: requirements items: $ref: '#/components/schemas/ShippingOptionRequirement' data: description: The data needed for the Fulfillment Provider to identify the Shipping Option. type: object example: {} includes_tax: description: Whether the shipping option price include tax type: boolean x-featureFlag: tax_inclusive_pricing default: false created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ShippingOptionRequirement: title: Shipping Option Requirement description: A shipping option requirement defines conditions that a Cart must satisfy for the Shipping Option to be available for usage in the Cart. type: object required: - amount - deleted_at - id - shipping_option_id - type properties: id: description: The shipping option requirement's ID type: string example: sor_01G1G5V29AB4CTNDRFSRWSRKWD shipping_option_id: description: The ID of the shipping option that the requirements belong to. type: string example: so_01G1G5V27GYX4QXNARRQCW1N8T shipping_option: description: The details of the shipping option that the requirements belong to. x-expandable: shipping_option nullable: true type: object type: description: The type of the requirement, this defines how the value will be compared to the Cart's total. `min_subtotal` requirements define the minimum subtotal that is needed for the Shipping Option to be available, while the `max_subtotal` defines the maximum subtotal that the Cart can have for the Shipping Option to be available. type: string enum: - min_subtotal - max_subtotal example: min_subtotal amount: description: The amount to compare the Cart subtotal to. type: integer example: 100 deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time ShippingProfile: title: Shipping Profile description: A Shipping Profile has a set of defined Shipping Options that can be used to fulfill a given set of Products. For example, gift cards are shipped differently than physical products, so a shipping profile with the type `gift_card` groups together the shipping options that can only be used for gift cards. type: object required: - created_at - deleted_at - id - metadata - name - type - updated_at properties: id: description: The shipping profile's ID type: string example: sp_01G1G5V239ENSZ5MV4JAR737BM name: description: The name given to the Shipping profile - this may be displayed to the Customer. type: string example: Default Shipping Profile type: description: The type of the Shipping Profile, may be `default`, `gift_card` or `custom`. type: string enum: - default - gift_card - custom example: default products: description: The details of the products that the Shipping Profile defines Shipping Options for. Available if the relation `products` is expanded. type: array x-expandable: products items: type: object shipping_options: description: The details of the shipping options that can be used to create shipping methods for the Products in the Shipping Profile. type: array x-expandable: shipping_options items: type: object created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute ShippingTaxRate: title: Shipping Tax Rate description: This represents the tax rates applied on a shipping option. type: object required: - created_at - metadata - rate_id - shipping_option_id - updated_at properties: shipping_option_id: description: The ID of the shipping option. type: string example: so_01G1G5V27GYX4QXNARRQCW1N8T shipping_option: description: The details of the shipping option. x-expandable: shipping_option nullable: true $ref: '#/components/schemas/ShippingOption' rate_id: description: The ID of the associated tax rate. type: string example: txr_01G8XDBAWKBHHJRKH0AV02KXBR tax_rate: description: The details of the associated tax rate. x-expandable: tax_rate nullable: true $ref: '#/components/schemas/TaxRate' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute StagedJob: title: Staged Job description: A staged job resource type: object required: - data - event_name - id - options properties: id: description: The staged job's ID type: string example: job_01F0YET7BZTARY9MKN1SJ7AAXF event_name: description: The name of the event type: string example: order.placed data: description: Data necessary for the job type: object example: {} option: description: The staged job's option type: object example: {} StockLocationAddressDTO: title: Stock Location Address description: Represents a Stock Location Address type: object required: - address_1 - country_code - created_at - updated_at properties: id: type: string description: The stock location address' ID example: laddr_51G4ZW853Y6TFXWPG5ENJ81X42 address_1: type: string description: Stock location address example: 35, Jhon Doe Ave address_2: type: string description: Stock location address' complement example: apartment 4432 company: type: string description: Stock location company' name example: Medusa city: type: string description: Stock location address' city example: Mexico city country_code: type: string description: Stock location address' country example: MX phone: type: string description: Stock location address' phone number example: +1 555 61646 postal_code: type: string description: Stock location address' postal code example: HD3-1G8 province: type: string description: Stock location address' province example: Sinaloa created_at: type: string description: The date with timezone at which the resource was created. format: date-time updated_at: type: string description: The date with timezone at which the resource was updated. format: date-time deleted_at: type: string description: The date with timezone at which the resource was deleted. format: date-time metadata: type: object description: An optional key-value map with additional details example: car: white StockLocationAddressInput: title: Stock Location Address Input description: Represents a Stock Location Address Input type: object required: - address_1 - country_code properties: address_1: type: string description: Stock location address example: 35, Jhon Doe Ave address_2: type: string description: Stock location address' complement example: apartment 4432 city: type: string description: Stock location address' city example: Mexico city country_code: type: string description: Stock location address' country example: MX phone: type: string description: Stock location address' phone number example: +1 555 61646 postal_code: type: string description: Stock location address' postal code example: HD3-1G8 province: type: string description: Stock location address' province example: Sinaloa metadata: type: object description: An optional key-value map with additional details example: car: white StockLocationDTO: title: Stock Location description: Represents a Stock Location type: object required: - id - name - address_id - created_at - updated_at properties: id: type: string description: The stock location's ID example: sloc_51G4ZW853Y6TFXWPG5ENJ81X42 address_id: type: string description: Stock location address' ID example: laddr_05B2ZE853Y6FTXWPW85NJ81A44 name: type: string description: The name of the stock location example: Main Warehouse address: description: The Address of the Stock Location allOf: - $ref: '#/components/schemas/StockLocationAddressDTO' - type: object metadata: type: object description: An optional key-value map with additional details example: car: white created_at: type: string description: The date with timezone at which the resource was created. format: date-time updated_at: type: string description: The date with timezone at which the resource was updated. format: date-time deleted_at: type: string description: The date with timezone at which the resource was deleted. format: date-time StockLocationExpandedDTO: allOf: - $ref: '#/components/schemas/StockLocationDTO' - type: object properties: sales_channels: description: The associated sales channels. $ref: '#/components/schemas/SalesChannel' Store: title: Store description: A store holds the main settings of the commerce shop. By default, only one store is created and used within the Medusa backend. It holds settings related to the name of the store, available currencies, and more. type: object required: - created_at - default_currency_code - default_location_id - id - invite_link_template - metadata - name - payment_link_template - swap_link_template - updated_at properties: id: description: The store's ID type: string example: store_01G1G5V21KADXNGH29BJMAJ4B4 name: description: The name of the Store - this may be displayed to the Customer. type: string example: Medusa Store default: Medusa Store default_currency_code: description: The three character currency code that is the default of the store. type: string example: usd externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. default_currency: description: The details of the store's default currency. x-expandable: default_currency default: usd nullable: true $ref: '#/components/schemas/Currency' currencies: description: The details of the enabled currencies in the store. type: array x-expandable: currencies items: $ref: '#/components/schemas/Currency' swap_link_template: description: A template to generate Swap links from. Use {{cart_id}} to include the Swap's `cart_id` in the link. nullable: true type: string example: null payment_link_template: description: A template to generate Payment links from. Use {{cart_id}} to include the payment's `cart_id` in the link. nullable: true type: string example: null invite_link_template: description: A template to generate Invite links from nullable: true type: string example: null default_location_id: description: The location ID the store is associated with. nullable: true type: string example: null default_sales_channel_id: description: The ID of the store's default sales channel. nullable: true type: string example: null default_sales_channel: description: The details of the store's default sales channel. x-expandable: default_sales_channel nullable: true $ref: '#/components/schemas/SalesChannel' created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute Swap: title: Swap description: A swap can be created when a Customer wishes to exchange Products that they have purchased with different Products. It consists of a Return of previously purchased Products and a Fulfillment of new Products. It also includes information on any additional payment or refund required based on the difference between the exchanged products. type: object required: - allow_backorder - canceled_at - cart_id - confirmed_at - created_at - deleted_at - difference_due - fulfillment_status - id - idempotency_key - metadata - no_notification - order_id - payment_status - shipping_address_id - updated_at properties: id: description: The swap's ID type: string example: swap_01F0YET86Y9G92D3YDR9Y6V676 fulfillment_status: description: The status of the Fulfillment of the Swap. type: string enum: - not_fulfilled - fulfilled - shipped - partially_shipped - canceled - requires_action example: not_fulfilled payment_status: description: The status of the Payment of the Swap. The payment may either refer to the refund of an amount or the authorization of a new amount. type: string enum: - not_paid - awaiting - captured - confirmed - canceled - difference_refunded - partially_refunded - refunded - requires_action example: not_paid order_id: description: The ID of the order that the swap belongs to. type: string example: order_01G8TJSYT9M6AVS5N4EMNFS1EK order: description: The details of the order that the swap belongs to. x-expandable: order nullable: true type: object additional_items: description: The details of the new products to send to the customer, represented as line items. type: array x-expandable: additional_items items: $ref: '#/components/schemas/LineItem' return_order: description: The details of the return that belongs to the swap, which holds the details on the items being returned. x-expandable: return_order nullable: true type: object fulfillments: description: The details of the fulfillments that are used to send the new items to the customer. x-expandable: fulfillments type: array items: type: object payment: description: The details of the additional payment authorized by the customer when `difference_due` is positive. x-expandable: payment nullable: true type: object difference_due: description: The difference amount between the order’s original total and the new total imposed by the swap. If its value is negative, a refund must be issues to the customer. If it's positive, additional payment must be authorized by the customer. Otherwise, no payment processing is required. nullable: true type: integer example: 0 shipping_address_id: description: The Address to send the new Line Items to - in most cases this will be the same as the shipping address on the Order. nullable: true type: string example: addr_01G8ZH853YPY9B94857DY91YGW shipping_address: description: The details of the shipping address that the new items should be sent to. x-expandable: shipping_address nullable: true $ref: '#/components/schemas/Address' shipping_methods: description: The details of the shipping methods used to fulfill the additional items purchased. type: array x-expandable: shipping_methods items: $ref: '#/components/schemas/ShippingMethod' cart_id: description: The ID of the cart that the customer uses to complete the swap. nullable: true type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 cart: description: The details of the cart that the customer uses to complete the swap. x-expandable: cart nullable: true type: object confirmed_at: description: The date with timezone at which the Swap was confirmed by the Customer. nullable: true type: string format: date-time canceled_at: description: The date with timezone at which the Swap was canceled. nullable: true type: string format: date-time no_notification: description: If set to true, no notification will be sent related to this swap nullable: true type: boolean example: false allow_backorder: description: If true, swaps can be completed with items out of stock type: boolean default: false idempotency_key: description: Randomly generated key used to continue the completion of the swap in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute TaxLine: title: Tax Line description: A tax line represents the taxes amount applied to a line item. type: object required: - code - created_at - id - metadata - name - rate - updated_at properties: id: description: The tax line's ID type: string example: tl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 code: description: A code to identify the tax type by nullable: true type: string example: tax01 name: description: A human friendly name for the tax type: string example: Tax Example rate: description: The numeric rate to charge tax by type: number example: 10 created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute TaxProvider: title: Tax Provider description: A tax provider represents a tax service installed in the Medusa backend, either through a plugin or backend customizations. It holds the tax service's installation status. type: object required: - id - is_installed properties: id: description: The ID of the tax provider as given by the tax service. type: string example: manual is_installed: description: Whether the tax service is installed in the current version. If a tax service is no longer installed, the `is_installed` attribute is set to `false`. type: boolean default: true TaxRate: title: Tax Rate description: A Tax Rate can be used to define a custom rate to charge on specified products, product types, and shipping options within a given region. type: object required: - code - created_at - id - metadata - name - rate - region_id - updated_at properties: id: description: The tax rate's ID type: string example: txr_01G8XDBAWKBHHJRKH0AV02KXBR rate: description: The numeric rate to charge nullable: true type: number example: 10 code: description: A code to identify the tax type by nullable: true type: string example: tax01 name: description: A human friendly name for the tax type: string example: Tax Example region_id: description: The ID of the region that the rate belongs to. type: string example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G region: description: The details of the region that the rate belongs to. x-expandable: region nullable: true type: object products: description: The details of the products that belong to this tax rate. type: array x-expandable: products items: $ref: '#/components/schemas/Product' product_types: description: The details of the product types that belong to this tax rate. type: array x-expandable: product_types items: $ref: '#/components/schemas/ProductType' shipping_options: description: The details of the shipping options that belong to this tax rate. type: array x-expandable: shipping_options items: $ref: '#/components/schemas/ShippingOption' product_count: description: The count of products type: integer example: 10 product_type_count: description: The count of product types type: integer example: 2 shipping_option_count: description: The count of shipping options type: integer example: 1 created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute TrackingLink: title: Tracking Link description: A tracking link holds information about tracking numbers for a Fulfillment. Tracking Links can optionally contain a URL that can be visited to see the status of the shipment. Typically, the tracking link is provided from the third-party service integrated through the used fulfillment provider. type: object required: - created_at - deleted_at - fulfillment_id - id - idempotency_key - metadata - tracking_number - updated_at - url properties: id: description: The tracking link's ID type: string example: tlink_01G8ZH853Y6TFXWPG5EYE81X63 url: description: The URL at which the status of the shipment can be tracked. nullable: true type: string format: uri tracking_number: description: The tracking number given by the shipping carrier. type: string format: RH370168054CN fulfillment_id: description: The ID of the fulfillment that the tracking link belongs to. type: string example: ful_01G8ZRTMQCA76TXNAT81KPJZRF fulfillment: description: The details of the fulfillment that the tracking link belongs to. x-expandable: fulfillment nullable: true type: object idempotency_key: description: Randomly generated key used to continue the completion of a process in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute UpdateStockLocationInput: title: Update Stock Location Input description: Represents the Input to update a Stock Location type: object properties: name: type: string description: The stock location name address_id: type: string description: The Stock location address ID address: description: Stock location address object allOf: - $ref: '#/components/schemas/StockLocationAddressInput' - type: object metadata: type: object description: An optional key-value map with additional details example: car: white User: title: User description: A User is an administrator who can manage store settings and data. type: object required: - api_token - created_at - deleted_at - email - first_name - id - last_name - metadata - role - updated_at properties: id: description: The user's ID type: string example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V role: description: The user's role. These roles don't provide any different privileges. type: string enum: - admin - member - developer default: member email: description: The email of the User type: string format: email first_name: description: The first name of the User nullable: true type: string example: Levi last_name: description: The last name of the User nullable: true type: string example: Bogan api_token: description: An API token associated with the user. nullable: true type: string example: null created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time deleted_at: description: The date with timezone at which the resource was deleted. nullable: true type: string format: date-time metadata: description: An optional key-value map with additional details nullable: true type: object example: car: white externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute VariantInventory: type: object required: - id - inventory - sales_channel_availability properties: id: description: the ID of the variant type: string inventory: description: The inventory details. $ref: '#/components/schemas/ResponseInventoryItem' sales_channel_availability: type: array description: Details about the variant's inventory availability in sales channels. items: type: object required: - channel_name - channel_id - available_quantity properties: channel_name: description: Sales channel's name type: string channel_id: description: Sales channel's ID type: string available_quantity: description: Available quantity in the sales channel type: number