openapi: 3.0.0 info: version: 1.0.0 title: Medusa Storefront 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: Auth description: | Authentication API Routes allow you to manage a customer's session, such as login or log out. You can send authenticated requests for a customer either using the Cookie header or using the JWT Token. externalDocs: description: How to implement customer profiles in your storefront url: https://docs.medusajs.com/modules/customers/storefront/implement-customer-profiles - name: Carts description: | A cart is a virtual shopping bag that customers can use to add items they want to purchase. A cart is then used to checkout and place an order. externalDocs: description: How to implement cart functionality in your storefront url: https://docs.medusajs.com/modules/carts-and-checkout/storefront/implement-cart - name: Customers description: | A customer can register and manage their information such as addresses, orders, payment methods, and more. externalDocs: description: How to implement customer profiles in your storefront url: https://docs.medusajs.com/modules/customers/storefront/implement-customer-profiles - name: Gift Cards description: | Customers can use gift cards during checkout to deduct the gift card's balance from the checkout total. The Gift Card API Routes allow retrieving a gift card's details by its code. A gift card can be applied to a cart using the Carts API Routes. externalDocs: description: How to use gift cards in a storefront url: https://docs.medusajs.com/modules/gift-cards/storefront/use-gift-cards - name: Orders description: | Orders are purchases made by customers, typically through a storefront. Orders are placed and created using the Carts API Routes. The Orders API Routes allow retrieving and claiming orders. externalDocs: description: How to retrieve order details in a storefront url: https://docs.medusajs.com/modules/orders/storefront/retrieve-order-details - name: Order Edits description: | Order edits are changes made to items in an order such as adding, updating their quantity, or deleting them. Order edits are created by the admin. A customer can review order edit requests created by an admin and confirm or decline them. externalDocs: description: How to handle order edits in a storefront url: https://docs.medusajs.com/modules/orders/storefront/handle-order-edits - name: Payment Collections description: | A payment collection is useful for managing additional payments, such as for Order Edits, or installment payments. - name: Products description: | Products are saleable items in a store. This also includes [saleable gift cards](https://docs.medusajs.com/modules/gift-cards/storefront/use-gift-cards) in a store. Using these API Routes, you can filter products by categories, collections, sales channels, and more. externalDocs: description: How to show products in a storefront url: https://docs.medusajs.com/modules/products/storefront/show-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. - name: Product Categories description: | Products can be categoriezed into categories. A product can be associated more than one category. Using these API Routes, you can list or retrieve a category's details and products. externalDocs: description: How to use product categories in a storefront url: https://docs.medusajs.com/modules/products/storefront/use-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. Using these API Routes, you can list or retrieve a collection's details and products. - name: Product Tags description: | Product tags are string values that can be used to filter products by. Products can have more than one tag, and products can share tags. - name: Product Types description: | Product types are string values that can be used to filter products by. Products can have more than one tag, and products can share types. - name: Regions description: | Regions are different countries or geographical regions that the commerce store serves customers in. Customers can choose what region they're in, which can be used to change the prices shown based on the region and its currency. externalDocs: description: How to use regions in a storefront url: https://docs.medusajs.com/modules/regions-and-currencies/storefront/use-regions - name: Returns description: | A return can be created by a customer to return items in an order. externalDocs: description: How to create a return in a storefront url: https://docs.medusajs.com/modules/orders/storefront/create-return - name: Return Reasons description: | Return reasons are key-value pairs that are used to specify why an order return is being created. - name: Shipping Options description: | A shipping option is used to define the available shipping methods during checkout or when creating a return. externalDocs: description: Shipping Option architecture url: https://docs.medusajs.com/modules/carts-and-checkout/shipping#shipping-option - 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 create a swap in a storefront url: https://docs.medusajs.com/modules/orders/storefront/create-swap paths: /store/auth: get: operationId: GetAuth summary: Get Current Customer description: Retrieve the currently logged in Customer's details. x-authenticated: true 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 medusa.auth.getSession() .then(({ customer }) => { console.log(customer.id); }) - lang: Shell label: cURL source: | curl '{backend_url}/store/auth' \ -H 'Authorization: Bearer {access_token}' security: - cookie_auth: [] - jwt_token: [] tags: - Auth responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreAuthRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: Customer Login description: Log a customer in and includes the Cookie session in the response header. The cookie session can be used in subsequent requests to authenticate the customer. 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/StorePostAuthReq' x-codegen: method: authenticate 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.auth.authenticate({ email: "user@example.com", password: "user@example.com" }) .then(({ customer }) => { console.log(customer.id); }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/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/StoreAuthRes' '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: Customer Log out description: Delete the current session for the logged in customer. x-authenticated: true 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 }) medusa.auth.deleteSession() .then(() => { // customer logged out successfully }) - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/store/auth' \ -H 'Authorization: Bearer {access_token}' security: - 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' /store/auth/token: post: operationId: PostToken summary: Customer 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/StorePostAuthReq' 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.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}/store/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/StoreBearerAuthRes' '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' /store/auth/{email}: get: operationId: GetAuthEmail summary: Check if Email Exists description: Check if there's a customer already registered with the provided email. parameters: - in: path name: email schema: type: string format: email required: true description: The email to check. x-codegen: method: exists 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.auth.exists("user@example.com") - lang: Shell label: cURL source: | curl '{backend_url}/store/auth/user@example.com' tags: - Auth responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreGetAuthEmailRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts: post: operationId: PostCart summary: Create a Cart description: | Create a Cart. Although optional, specifying the cart's region and sales channel can affect the cart's pricing and the products that can be added to the cart respectively. So, make sure to set those early on and change them if necessary, such as when the customer changes their region. If a customer is logged in, make sure to pass its ID or email within the cart's details so that the cart is attached to the customer. requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCartReq' 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 }) medusa.carts.create() .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCreateCart } from "medusa-react" type Props = { regionId: string } const Cart = ({ regionId }: Props) => { const createCart = useCreateCart() const handleCreate = () => { createCart.mutate({ region_id: regionId // creates an empty cart }, { onSuccess: ({ cart }) => { console.log(cart.items) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts' tags: - Carts responses: '200': description: Successfully created a new Cart content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}: get: operationId: GetCartsCart summary: Get a Cart description: Retrieve a Cart's details. This includes recalculating its totals. parameters: - in: path name: id required: true description: The ID of the Cart. 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 }) medusa.carts.retrieve(cartId) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useGetCart } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const { cart, isLoading } = useGetCart(cartId) return (
{isLoading && Loading...} {cart && cart.items.length === 0 && ( Cart is empty )} {cart && cart.items.length > 0 && ( )}
) } export default Cart - lang: Shell label: cURL source: | curl '{backend_url}/store/carts/{id}' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/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: PostCartsCart summary: Update a Cart description: Update a Cart's details. If the cart has payment sessions and the region was not changed, the payment sessions are updated. The cart's totals are also recalculated. parameters: - in: path name: id required: true description: The ID of the Cart. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCartsCartReq' 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 }) medusa.carts.update(cartId, { email: "user@example.com" }) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useUpdateCart } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const updateCart = useUpdateCart(cartId) const handleUpdate = ( email: string ) => { updateCart.mutate({ email }, { onSuccess: ({ cart }) => { console.log(cart.email) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com" }' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/complete: post: summary: Complete a Cart operationId: PostCartsCartComplete description: | Complete a cart and place an order or create a swap, based on the cart's type. This includes attempting to authorize the cart's payment. If authorizing the payment requires more action, the cart will not be completed and the order will not be placed or the swap will not be created. An idempotency key will be generated if none is provided in the header `Idempotency-Key` and added to the response. If an error occurs during cart completion or the request is interrupted for any reason, the cart completion can be retried by passing the idempotency key in the `Idempotency-Key` header. externalDocs: description: Cart completion overview url: https://docs.medusajs.com/modules/carts-and-checkout/cart#cart-completion parameters: - in: path name: id required: true description: The Cart ID. schema: type: string x-codegen: method: complete 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.carts.complete(cartId) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCompleteCart } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const completeCart = useCompleteCart(cartId) const handleComplete = () => { completeCart.mutate(void 0, { onSuccess: ({ data, type }) => { console.log(data.id, type) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/complete' tags: - Carts responses: '200': description: If the payment of the cart was successfully authorized, but requires further action from the customer, the response body will contain the cart with an updated payment session. Otherwise, if the payment was authorized and the cart was successfully completed, the response body will contain either the newly created order or swap, depending on what the cart was created for. content: application/json: schema: $ref: '#/components/schemas/StoreCompleteCartRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/discounts/{code}: delete: operationId: DeleteCartsCartDiscountsDiscount summary: Remove Discount description: Remove a Discount from a Cart. This only removes the application of the discount, and not completely deletes it. The totals will be re-calculated and the payment sessions will be refreshed after the removal. parameters: - in: path name: id required: true description: The ID of the Cart. schema: type: string - in: path name: code required: true description: The unique discount code. schema: type: string x-codegen: method: deleteDiscount 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.carts.deleteDiscount(cartId, code) .then(({ cart }) => { console.log(cart.id); }) - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/store/carts/{id}/discounts/{code}' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/line-items: post: operationId: PostCartsCartLineItems summary: Add a Line Item description: Generates a Line Item with a given Product Variant and adds it to the Cart parameters: - in: path name: id required: true description: The id of the Cart to add the Line Item to. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCartsCartLineItemsReq' x-codegen: method: createLineItem 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.carts.lineItems.create(cart_id, { variant_id, quantity: 1 }) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCreateLineItem } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const createLineItem = useCreateLineItem(cartId) const handleAddItem = ( variantId: string, quantity: number ) => { createLineItem.mutate({ variant_id: variantId, quantity, }, { onSuccess: ({ cart }) => { console.log(cart.items) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/line-items' \ -H 'Content-Type: application/json' \ --data-raw '{ "variant_id": "{variant_id}", "quantity": 1 }' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/line-items/{line_id}: post: operationId: PostCartsCartLineItemsItem summary: Update a Line Item description: Update a line item's quantity. parameters: - in: path name: id required: true description: The ID of the Cart. 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/StorePostCartsCartLineItemsItemReq' 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 }) medusa.carts.lineItems.update(cartId, lineId, { quantity: 1 }) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useUpdateLineItem } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const updateLineItem = useUpdateLineItem(cartId) const handleUpdateItem = ( lineItemId: string, quantity: number ) => { updateLineItem.mutate({ lineId: lineItemId, quantity, }, { onSuccess: ({ cart }) => { console.log(cart.items) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/line-items/{line_id}' \ -H 'Content-Type: application/json' \ --data-raw '{ "quantity": 1 }' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/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: DeleteCartsCartLineItemsItem summary: Delete a Line Item description: Delete a Line Item from a Cart. The payment sessions will be updated and the totals will be recalculated. parameters: - in: path name: id required: true description: The ID of the Cart. schema: type: string - in: path name: line_id required: true description: The ID of the Line Item. schema: type: string x-codegen: method: deleteLineItem 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.carts.lineItems.delete(cartId, lineId) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useDeleteLineItem } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const deleteLineItem = useDeleteLineItem(cartId) const handleDeleteItem = ( lineItemId: string ) => { deleteLineItem.mutate({ lineId: lineItemId, }, { onSuccess: ({ cart }) => { console.log(cart.items) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/store/carts/{id}/line-items/{line_id}' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/payment-session: post: operationId: PostCartsCartPaymentSession summary: Select a Payment Session description: Select the Payment Session that will be used to complete the cart. This is typically used when the customer chooses their preferred payment method during checkout. The totals of the cart will be recalculated. parameters: - in: path name: id required: true description: The ID of the Cart. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCartsCartPaymentSessionReq' x-codegen: method: setPaymentSession 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.carts.setPaymentSession(cartId, { provider_id: "manual" }) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useSetPaymentSession } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const setPaymentSession = useSetPaymentSession(cartId) const handleSetPaymentSession = ( providerId: string ) => { setPaymentSession.mutate({ provider_id: providerId, }, { onSuccess: ({ cart }) => { console.log(cart.payment_session) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/payment-sessions' \ -H 'Content-Type: application/json' \ --data-raw '{ "provider_id": "manual" }' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/payment-sessions: post: operationId: PostCartsCartPaymentSessions summary: Create Payment Sessions description: Create Payment Sessions for each of the available Payment Providers in the Cart's Region. If there's only one payment session created, it will be selected by default. The creation of the payment session uses the payment provider and may require sending requests to third-party services. parameters: - in: path name: id required: true description: The ID of the Cart. schema: type: string x-codegen: method: createPaymentSessions 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.carts.createPaymentSessions(cartId) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCreatePaymentSession } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const createPaymentSession = useCreatePaymentSession(cartId) const handleComplete = () => { createPaymentSession.mutate(void 0, { onSuccess: ({ cart }) => { console.log(cart.payment_sessions) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/payment-sessions' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/payment-sessions/{provider_id}: post: operationId: PostCartsCartPaymentSessionUpdate summary: Update a Payment Session description: Update a Payment Session with additional data. This can be useful depending on the payment provider used. All payment sessions are updated and cart totals are recalculated afterwards. parameters: - in: path name: id required: true description: The ID of the Cart. schema: type: string - in: path name: provider_id required: true description: The ID of the payment provider. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCartsCartPaymentSessionUpdateReq' x-codegen: method: updatePaymentSession 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.carts.updatePaymentSession(cartId, "manual", { data: { } }) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useUpdatePaymentSession } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const updatePaymentSession = useUpdatePaymentSession(cartId) const handleUpdate = ( providerId: string, data: Record ) => { updatePaymentSession.mutate({ provider_id: providerId, data }, { onSuccess: ({ cart }) => { console.log(cart.payment_session) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/payment-sessions/manual' \ -H 'Content-Type: application/json' \ --data-raw '{ "data": {} }' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/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: DeleteCartsCartPaymentSessionsSession summary: Delete a Payment Session description: Delete a Payment Session in a Cart. May be useful if a payment has failed. The totals will be recalculated. parameters: - in: path name: id required: true description: The ID of the Cart. schema: type: string - in: path name: provider_id required: true description: The ID of the Payment Provider used to create the Payment Session to be deleted. schema: type: string x-codegen: method: deletePaymentSession 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.carts.deletePaymentSession(cartId, "manual") .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useDeletePaymentSession } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const deletePaymentSession = useDeletePaymentSession(cartId) const handleDeletePaymentSession = ( providerId: string ) => { deletePaymentSession.mutate({ provider_id: providerId, }, { onSuccess: ({ cart }) => { console.log(cart.payment_sessions) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/store/carts/{id}/payment-sessions/{provider_id}' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/payment-sessions/{provider_id}/refresh: post: operationId: PostCartsCartPaymentSessionsSession summary: Refresh a Payment Session description: Refresh a Payment Session to ensure that it is in sync with the Cart. This is usually not necessary, but is provided for edge cases. parameters: - in: path name: id required: true description: The ID of the Cart. schema: type: string - in: path name: provider_id required: true description: The ID of the Payment Provider that created the Payment Session to be refreshed. schema: type: string x-codegen: method: refreshPaymentSession 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.carts.refreshPaymentSession(cartId, "manual") .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useRefreshPaymentSession } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const refreshPaymentSession = useRefreshPaymentSession(cartId) const handleRefresh = ( providerId: string ) => { refreshPaymentSession.mutate({ provider_id: providerId, }, { onSuccess: ({ cart }) => { console.log(cart.payment_sessions) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/payment-sessions/{provider_id}/refresh' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/shipping-methods: post: operationId: PostCartsCartShippingMethod summary: Add Shipping Method description: Add a Shipping Method to the Cart. The validation of the `data` field is handled by the fulfillment provider of the chosen shipping option. parameters: - in: path name: id required: true description: The cart ID. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCartsCartShippingMethodReq' x-codegen: method: addShippingMethod 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.carts.addShippingMethod(cartId, { option_id }) .then(({ cart }) => { console.log(cart.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAddShippingMethodToCart } from "medusa-react" type Props = { cartId: string } const Cart = ({ cartId }: Props) => { const addShippingMethod = useAddShippingMethodToCart(cartId) const handleAddShippingMethod = ( optionId: string ) => { addShippingMethod.mutate({ option_id: optionId, }, { onSuccess: ({ cart }) => { console.log(cart.shipping_methods) } }) } // ... } export default Cart - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/shipping-methods' \ -H 'Content-Type: application/json' \ --data-raw '{ "option_id": "{option_id}", }' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/carts/{id}/taxes: post: operationId: PostCartsCartTaxes summary: Calculate Cart Taxes description: Calculate the taxes for a cart. This is useful if the `automatic_taxes` field of the cart's region is set to `false`. If the cart's region uses a tax provider other than Medusa's system provider, this may lead to sending requests to third-party services. externalDocs: description: How to calculate taxes manually during checkout url: https://docs.medusajs.com/modules/taxes/storefront/manual-calculation parameters: - in: path name: id required: true description: The Cart ID. schema: type: string x-codegen: method: calculateTaxes x-codeSamples: - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/carts/{id}/taxes' tags: - Carts responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/collections: get: operationId: GetCollections summary: List Collections description: Retrieve a list of product collections. The product collections can be filtered by fields such as `handle` or `created_at`. The product collections can also be paginated. parameters: - in: query name: offset description: The number of product collections to skip when retrieving the product collections. schema: type: integer default: 0 - in: query name: limit description: Limit the number of product collections returned. schema: type: integer default: 10 - in: query name: handle style: form explode: false description: Filter by handles 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: StoreGetCollectionsParams 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.collections.list() .then(({ collections, limit, offset, count }) => { console.log(collections.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCollections } from "medusa-react" const ProductCollections = () => { const { collections, isLoading } = useCollections() return (
{isLoading && Loading...} {collections && collections.length === 0 && ( No Product Collections )} {collections && collections.length > 0 && ( )}
) } export default ProductCollections - lang: Shell label: cURL source: | curl '{backend_url}/store/collections' tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCollectionsListRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/collections/{id}: get: operationId: GetCollectionsCollection summary: Get a Collection description: Retrieve a Product Collection's details. 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 }) medusa.collections.retrieve(collectionId) .then(({ collection }) => { console.log(collection.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCollection } from "medusa-react" type Props = { collectionId: string } const ProductCollection = ({ collectionId }: Props) => { const { collection, isLoading } = useCollection(collectionId) return (
{isLoading && Loading...} {collection && {collection.title}}
) } export default ProductCollection - lang: Shell label: cURL source: | curl '{backend_url}/store/collections/{id}' tags: - Product Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCollectionsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/customers: post: operationId: PostCustomers summary: Create a Customer description: Register a new customer. This will also automatically authenticate the customer and set their login session in the response Cookie header. The cookie session can be used in subsequent requests to authenticate the customer. 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/StorePostCustomersReq' 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 }) medusa.customers.create({ first_name: "Alec", last_name: "Reynolds", email: "user@example.com", password: "supersecret" }) .then(({ customer }) => { console.log(customer.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCreateCustomer } from "medusa-react" const RegisterCustomer = () => { const createCustomer = useCreateCustomer() // ... const handleCreate = ( customerData: { first_name: string last_name: string email: string password: string } ) => { // ... createCustomer.mutate(customerData, { onSuccess: ({ customer }) => { console.log(customer.id) } }) } // ... } export default RegisterCustomer - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/customers' \ -H 'Content-Type: application/json' \ --data-raw '{ "first_name": "Alec", "last_name": "Reynolds", "email": "user@example.com", "password": "supersecret" }' tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCustomersRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': description: A customer with the same email exists content: application/json: schema: type: object properties: code: type: string description: The error code type: type: string description: The type of error message: type: string description: Human-readable message with details about the error example: code: invalid_request_error type: duplicate_error message: A customer with the given email already has an account. Log in instead '500': $ref: '#/components/responses/500_error' /store/customers/me: get: operationId: GetCustomersCustomer summary: Get a Customer description: Retrieve the logged-in Customer'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 medusa.customers.retrieve() .then(({ customer }) => { console.log(customer.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useMeCustomer } from "medusa-react" const Customer = () => { const { customer, isLoading } = useMeCustomer() return (
{isLoading && Loading...} {customer && ( {customer.first_name} {customer.last_name} )}
) } export default Customer - lang: Shell label: cURL source: | curl '{backend_url}/store/customers/me' \ -H 'Authorization: Bearer {access_token}' security: - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCustomersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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 Customer description: Update the logged-in customer's details. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCustomersCustomerReq' 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 medusa.customers.update({ first_name: "Laury" }) .then(({ customer }) => { console.log(customer.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useUpdateMe } from "medusa-react" type Props = { customerId: string } const Customer = ({ customerId }: Props) => { const updateCustomer = useUpdateMe() // ... const handleUpdate = ( firstName: string ) => { // ... updateCustomer.mutate({ id: customerId, first_name: firstName, }, { onSuccess: ({ customer }) => { console.log(customer.first_name) } }) } // ... } export default Customer - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/customers/me' \ -H 'Authorization: Bearer {access_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "first_name": "Laury" }' security: - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCustomersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/customers/me/addresses: post: operationId: PostCustomersCustomerAddresses summary: Add a Shipping Address description: Add a Shipping Address to a Customer's saved addresses. x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCustomersCustomerAddressesReq' x-codegen: method: addAddress 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 medusa.customers.addresses.addAddress({ address: { first_name: "Celia", last_name: "Schumm", address_1: "225 Bednar Curve", city: "Danielville", country_code: "US", postal_code: "85137", phone: "981-596-6748 x90188", company: "Wyman LLC", province: "Georgia", } }) .then(({ customer }) => { console.log(customer.id); }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/customers/me/addresses' \ -H 'Authorization: Bearer {access_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "address": { "first_name": "Celia", "last_name": "Schumm", "address_1": "225 Bednar Curve", "city": "Danielville", "country_code": "US", "postal_code": "85137" } }' security: - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: A successful response content: application/json: schema: $ref: '#/components/schemas/StoreCustomersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/customers/me/addresses/{address_id}: post: operationId: PostCustomersCustomerAddressesAddress summary: Update a Shipping Address description: Update the logged-in customer's saved Shipping Address's details. x-authenticated: true parameters: - in: path name: address_id required: true description: The ID of the Address. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCustomersCustomerAddressesAddressReq' x-codegen: method: updateAddress 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 medusa.customers.addresses.updateAddress(addressId, { first_name: "Gina" }) .then(({ customer }) => { console.log(customer.id); }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/customers/me/addresses/{address_id}' \ -H 'Authorization: Bearer {access_token}' \ -H 'Content-Type: application/json' \ --data-raw '{ "first_name": "Gina" }' security: - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCustomersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/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: DeleteCustomersCustomerAddressesAddress summary: Delete an Address description: Delete an Address from the Customer's saved addresses. x-authenticated: true parameters: - in: path name: address_id required: true description: The id of the Address to remove. schema: type: string x-codegen: method: deleteAddress 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 medusa.customers.addresses.deleteAddress(addressId) .then(({ customer }) => { console.log(customer.id); }) - lang: Shell label: cURL source: | curl -X DELETE '{backend_url}/store/customers/me/addresses/{address_id}' \ -H 'Authorization: Bearer {access_token}' security: - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCustomersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/customers/me/orders: get: operationId: GetCustomersCustomerOrders summary: List Orders description: Retrieve a list of the logged-in Customer's Orders. The orders can be filtered by fields such as `status` or `fulfillment_status`. The orders can also be paginated. x-authenticated: true parameters: - in: query name: q description: term to search orders' display ID, email, shipping address's first name, customer's first name, customer's last name, and customer's phone number. 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: Fulfillment status to search for. schema: type: array items: type: string enum: - not_fulfilled - partially_fulfilled - fulfilled - partially_shipped - shipped - partially_returned - returned - canceled - requires_action - in: query name: payment_status style: form explode: false description: Payment status to search for. schema: type: array items: type: string enum: - not_paid - awaiting - captured - partially_refunded - 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: email description: Filter by email. schema: type: string - in: query name: region_id description: Filter by region ID. schema: type: string - in: query name: currency_code style: form explode: false description: Filter by the 3 character ISO currency code of the order. 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: limit description: Limit the number of orders returned. schema: type: integer default: 10 - in: query name: offset description: The number of orders to skip when retrieving the orders. schema: type: integer default: 0 - in: query name: expand description: Comma-separated relations that should be expanded in the returned orders. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned orders. schema: type: string x-codegen: method: listOrders queryParams: StoreGetCustomersCustomerOrdersParams 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 medusa.customers.listOrders() .then(({ orders, limit, offset, count }) => { console.log(orders); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCustomerOrders } from "medusa-react" const Orders = () => { // refetch a function that can be used to // re-retrieve orders after the customer logs in const { orders, isLoading } = useCustomerOrders() return (
{isLoading && Loading orders...} {orders?.length && ( )}
) } export default Orders - lang: Shell label: cURL source: | curl '{backend_url}/store/customers/me/orders' \ -H 'Authorization: Bearer {access_token}' security: - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCustomersListOrdersRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/customers/me/payment-methods: get: operationId: GetCustomersCustomerPaymentMethods summary: Get Saved Payment Methods description: Retrieve the logged-in customer's saved payment methods. This API Route only works with payment providers created with the deprecated Payment Service interface. The payment methods are saved using the Payment Service's third-party service, and not on the Medusa backend. So, they're retrieved from the third-party service. x-authenticated: true deprecated: true x-codegen: method: listPaymentMethods 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 medusa.customers.paymentMethods.list() .then(({ payment_methods }) => { console.log(payment_methods.length); }) - lang: Shell label: cURL source: | curl '{backend_url}/store/customers/me/payment-methods' \ -H 'Authorization: Bearer {access_token}' security: - cookie_auth: [] - jwt_token: [] tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCustomersListPaymentMethodsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/customers/password-reset: post: operationId: PostCustomersResetPassword summary: Reset Password description: Reset a Customer's password using a password token created by a previous request to the Request Password Reset API Route. If the password token expired, you must create a new one. externalDocs: description: How to reset password url: https://docs.medusajs.com/modules/customers/storefront/implement-customer-profiles#reset-password requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCustomersResetPasswordReq' 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 }) medusa.customers.resetPassword({ email: "user@example.com", password: "supersecret", token: "supersecrettoken" }) .then(({ customer }) => { console.log(customer.id); }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/customers/password-reset' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com", "password": "supersecret", "token": "supersecrettoken" }' tags: - Customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCustomersResetPasswordRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/customers/password-token: post: operationId: PostCustomersCustomerPasswordToken summary: Request Password Reset description: Create a reset password token to be used in a subsequent Reset Password API Route. This emits the event `customer.password_reset`. If a notification provider is installed in the Medusa backend and is configured to handle this event, a notification to the customer, such as an email, may be sent with reset instructions. externalDocs: description: How to reset password url: https://docs.medusajs.com/modules/customers/storefront/implement-customer-profiles#reset-password requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCustomersCustomerPasswordTokenReq' x-codegen: method: generatePasswordToken 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.customers.generatePasswordToken({ email: "user@example.com" }) .then(() => { // successful }) .catch(() => { // failed }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/customers/password-token' \ -H 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com" }' tags: - Customers 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' /store/gift-cards/{code}: get: operationId: GetGiftCardsCode summary: Get Gift Card by Code description: Retrieve a Gift Card's details by its associated unique code. parameters: - in: path name: code required: true description: The unique Gift Card code. 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 }) medusa.giftCards.retrieve(code) .then(({ gift_card }) => { console.log(gift_card.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useGiftCard } from "medusa-react" type Props = { giftCardCode: string } const GiftCard = ({ giftCardCode }: Props) => { const { gift_card, isLoading, isError } = useGiftCard( giftCardCode ) return (
{isLoading && Loading...} {gift_card && {gift_card.value}} {isError && Gift Card does not exist}
) } export default GiftCard - lang: Shell label: cURL source: | curl '{backend_url}/store/gift-cards/{code}' tags: - Gift Cards responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreGiftCardsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/order-edits/{id}: get: operationId: GetOrderEditsOrderEdit summary: Retrieve an Order Edit description: Retrieve an Order Edit's details. parameters: - in: path name: id required: true description: The ID of the OrderEdit. 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 }) medusa.orderEdits.retrieve(orderEditId) .then(({ order_edit }) => { console.log(order_edit.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useOrderEdit } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const { order_edit, isLoading } = useOrderEdit(orderEditId) return (
{isLoading && Loading...} {order_edit && ( )}
) } export default OrderEdit - lang: Shell label: cURL source: | curl '{backend_url}/store/order-edits/{id}' tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/order-edits/{id}/complete: post: operationId: PostOrderEditsOrderEditComplete summary: Complete an Order Edit description: Complete an Order Edit and reflect its changes on the original order. Any additional payment required must be authorized first using the Payment Collection API Routes. externalDocs: description: How to handle order edits in a storefront url: https://docs.medusajs.com/modules/orders/storefront/handle-order-edits parameters: - in: path name: id required: true description: The ID of the Order Edit. schema: type: string x-codegen: method: complete 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.orderEdits.complete(orderEditId) .then(({ order_edit }) => { console.log(order_edit.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { useCompleteOrderEdit } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const completeOrderEdit = useCompleteOrderEdit( orderEditId ) // ... const handleCompleteOrderEdit = () => { completeOrderEdit.mutate(void 0, { onSuccess: ({ order_edit }) => { console.log(order_edit.confirmed_at) } }) } // ... } export default OrderEdit - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/order-edits/{id}/complete' tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '500': $ref: '#/components/responses/500_error' /store/order-edits/{id}/decline: post: operationId: PostOrderEditsOrderEditDecline summary: Decline an Order Edit description: Decline an Order Edit. The changes are not reflected on the original order. parameters: - in: path name: id required: true description: The ID of the OrderEdit. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostOrderEditsOrderEditDecline' x-codegen: method: decline 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.orderEdits.decline(orderEditId) .then(({ order_edit }) => { console.log(order_edit.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useDeclineOrderEdit } from "medusa-react" type Props = { orderEditId: string } const OrderEdit = ({ orderEditId }: Props) => { const declineOrderEdit = useDeclineOrderEdit(orderEditId) // ... const handleDeclineOrderEdit = ( declinedReason: string ) => { declineOrderEdit.mutate({ declined_reason: declinedReason, }, { onSuccess: ({ order_edit }) => { console.log(order_edit.declined_at) } }) } // ... } export default OrderEdit - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/order-edits/{id}/decline' tags: - Order Edits responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreOrderEditsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '500': $ref: '#/components/responses/500_error' /store/orders: get: operationId: GetOrders summary: Look Up an Order description: Look up an order using filters. If the filters don't narrow down the results to a single order, a 404 response is returned with no orders. parameters: - in: query name: display_id required: true description: Filter by ID. schema: type: number - in: query name: fields description: Comma-separated fields that should be expanded in the returned 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: email style: form explode: false description: Filter by email. required: true schema: type: string format: email - in: query name: shipping_address style: form explode: false description: Filter by the shipping address's postal code. schema: type: object properties: postal_code: type: string description: The postal code of the shipping address x-codegen: method: lookupOrder queryParams: StoreGetOrdersParams 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.orders.lookupOrder({ display_id: 1, email: "user@example.com" }) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useOrders } from "medusa-react" type Props = { displayId: number email: string } const Order = ({ displayId, email }: Props) => { const { order, isLoading, } = useOrders({ display_id: displayId, email, }) return (
{isLoading && Loading...} {order && {order.display_id}}
) } export default Order - lang: Shell label: cURL source: | curl '{backend_url}/store/orders?display_id=1&email=user@example.com' tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreOrdersRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/orders/batch/customer/token: post: operationId: PostOrdersCustomerOrderClaim summary: Claim Order description: Allow the logged-in customer to claim ownership of one or more orders. This generates a token that can be used later on to verify the claim using the Verify Order Claim API Route. This also emits the event `order-update-token.created`. So, if you have a notification provider installed that handles this event and sends the customer a notification, such as an email, the customer should receive instructions on how to finalize their claim ownership. externalDocs: description: How to implement claim-order flow in a storefront url: https://docs.medusajs.com/modules/orders/storefront/implement-claim-order x-authenticated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCustomersCustomerOrderClaimReq' x-codegen: method: requestCustomerOrders 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.orders.requestCustomerOrders({ order_ids, }) .then(() => { // successful }) .catch(() => { // an error occurred }) - lang: tsx label: Medusa React source: | import React from "react" import { useRequestOrderAccess } from "medusa-react" const ClaimOrder = () => { const claimOrder = useRequestOrderAccess() const handleClaimOrder = ( orderIds: string[] ) => { claimOrder.mutate({ order_ids: orderIds }, { onSuccess: () => { // successful }, onError: () => { // an error occurred. } }) } // ... } export default ClaimOrder - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/batch/customer/token' \ -H 'Content-Type: application/json' \ --data-raw '{ "order_ids": ["id"], }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/orders/cart/{cart_id}: get: operationId: GetOrdersOrderCartId summary: Get by Cart ID description: Retrieve an Order's details by the ID of the Cart that was used to create the Order. parameters: - in: path name: cart_id required: true description: The ID of Cart. schema: type: string x-codegen: method: retrieveByCartId 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.orders.retrieveByCartId(cartId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCartOrder } from "medusa-react" type Props = { cartId: string } const Order = ({ cartId }: Props) => { const { order, isLoading, } = useCartOrder(cartId) return (
{isLoading && Loading...} {order && {order.display_id}}
) } export default Order - lang: Shell label: cURL source: | curl '{backend_url}/store/orders/cart/{cart_id}' tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreOrdersRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/orders/customer/confirm: post: operationId: PostOrdersCustomerOrderClaimsCustomerOrderClaimAccept summary: Verify Order Claim description: Verify the claim order token provided to the customer when they request ownership of an order. externalDocs: description: How to implement claim-order flow in a storefront url: https://docs.medusajs.com/modules/orders/storefront/implement-claim-order requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostCustomersCustomerAcceptClaimReq' x-codegen: method: confirmRequest 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.orders.confirmRequest( token, ) .then(() => { // successful }) .catch(() => { // an error occurred }) - lang: tsx label: Medusa React source: | import React from "react" import { useGrantOrderAccess } from "medusa-react" const ClaimOrder = () => { const confirmOrderRequest = useGrantOrderAccess() const handleOrderRequestConfirmation = ( token: string ) => { confirmOrderRequest.mutate({ token }, { onSuccess: () => { // successful }, onError: () => { // an error occurred. } }) } // ... } export default ClaimOrder - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/orders/customer/confirm' \ -H 'Content-Type: application/json' \ --data-raw '{ "token": "{token}", }' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Orders responses: '200': description: OK '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/orders/{id}: get: operationId: GetOrdersOrder summary: Get an Order description: Retrieve an Order's details. parameters: - in: path name: id required: true description: The ID of the Order. schema: type: string - in: query name: fields description: Comma-separated fields that should be expanded in the returned order. schema: type: string - in: query name: expand description: Comma-separated relations that should be included in the returned 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 }) medusa.orders.retrieve(orderId) .then(({ order }) => { console.log(order.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useOrder } from "medusa-react" type Props = { orderId: string } const Order = ({ orderId }: Props) => { const { order, isLoading, } = useOrder(orderId) return (
{isLoading && Loading...} {order && {order.display_id}}
) } export default Order - lang: Shell label: cURL source: | curl '{backend_url}/store/orders/{id}' tags: - Orders responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreOrdersRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/payment-collections/{id}: get: operationId: GetPaymentCollectionsPaymentCollection summary: Get a PaymentCollection description: Retrieve a Payment Collection's details. x-authenticated: false parameters: - in: path name: id required: true description: The ID of the PaymentCollection. schema: type: string - in: query name: fields description: Comma-separated fields that should be expanded in the returned 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 x-codegen: method: retrieve queryParams: StoreGetPaymentCollectionsParams 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.paymentCollections.retrieve(paymentCollectionId) .then(({ payment_collection }) => { console.log(payment_collection.id) }) - lang: tsx label: Medusa React source: | import React from "react" import { usePaymentCollection } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const { payment_collection, isLoading } = usePaymentCollection( paymentCollectionId ) return (
{isLoading && Loading...} {payment_collection && ( {payment_collection.status} )}
) } export default PaymentCollection - lang: Shell label: cURL source: | curl '{backend_url}/store/payment-collections/{id}' security: - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorePaymentCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/payment-collections/{id}/sessions: post: operationId: PostPaymentCollectionsSessions summary: Create a Payment Session description: Create a Payment Session for a payment provider in a Payment Collection. x-authenticated: false 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/StorePaymentCollectionSessionsReq' x-codegen: method: managePaymentSession 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.paymentCollections.managePaymentSession(payment_id, { provider_id: "stripe" }) .then(({ payment_collection }) => { console.log(payment_collection.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useManagePaymentSession } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const managePaymentSession = useManagePaymentSession( paymentCollectionId ) const handleManagePaymentSession = ( providerId: string ) => { managePaymentSession.mutate({ provider_id: providerId }, { onSuccess: ({ payment_collection }) => { console.log(payment_collection.payment_sessions) } }) } // ... } export default PaymentCollection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/payment-collections/{id}/sessions' \ -H 'Content-Type: application/json' \ --data-raw '{ "provider_id": "stripe" }' security: - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorePaymentCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/payment-collections/{id}/sessions/batch: post: operationId: PostPaymentCollectionsPaymentCollectionSessionsBatch summary: Manage Payment Sessions description: Create, update, or delete a list of payment sessions of a Payment Collections. If a payment session is not provided in the `sessions` array, it's deleted. x-authenticated: false 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/StorePostPaymentCollectionsBatchSessionsReq' x-codegen: method: managePaymentSessionsBatch 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 // Total amount = 10000 // Example 1: Adding two new sessions medusa.paymentCollections.managePaymentSessionsBatch(paymentId, { sessions: [ { provider_id: "stripe", amount: 5000, }, { provider_id: "manual", amount: 5000, }, ] }) .then(({ payment_collection }) => { console.log(payment_collection.id); }) // Example 2: Updating one session and removing the other medusa.paymentCollections.managePaymentSessionsBatch(paymentId, { sessions: [ { provider_id: "stripe", amount: 10000, session_id: "ps_123456" }, ] }) .then(({ payment_collection }) => { console.log(payment_collection.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useManageMultiplePaymentSessions } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const managePaymentSessions = useManageMultiplePaymentSessions( paymentCollectionId ) const handleManagePaymentSessions = () => { // Total amount = 10000 // Example 1: Adding two new sessions managePaymentSessions.mutate({ sessions: [ { provider_id: "stripe", amount: 5000, }, { provider_id: "manual", amount: 5000, }, ] }, { onSuccess: ({ payment_collection }) => { console.log(payment_collection.payment_sessions) } }) // Example 2: Updating one session and removing the other managePaymentSessions.mutate({ sessions: [ { provider_id: "stripe", amount: 10000, session_id: "ps_123456" }, ] }, { onSuccess: ({ payment_collection }) => { console.log(payment_collection.payment_sessions) } }) } // ... } export default PaymentCollection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/payment-collections/{id}/sessions/batch' \ -H 'Content-Type: application/json' \ --data-raw '{ "sessions": [ { "provider_id": "stripe", "amount": 5000 }, { "provider_id": "manual", "amount": 5000 } ] }' security: - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorePaymentCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/payment-collections/{id}/sessions/batch/authorize: post: operationId: PostPaymentCollectionsSessionsBatchAuthorize summary: Authorize Payment Sessions description: Authorize the Payment Sessions of a Payment Collection. x-authenticated: false parameters: - in: path name: id required: true description: The ID of the Payment Collections. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostPaymentCollectionsBatchSessionsAuthorizeReq' x-codegen: method: authorizePaymentSessionsBatch 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.paymentCollections.authorize(paymentId) .then(({ payment_collection }) => { console.log(payment_collection.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAuthorizePaymentSessionsBatch } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const authorizePaymentSessions = useAuthorizePaymentSessionsBatch( paymentCollectionId ) // ... const handleAuthorizePayments = (paymentSessionIds: string[]) => { authorizePaymentSessions.mutate({ session_ids: paymentSessionIds }, { onSuccess: ({ payment_collection }) => { console.log(payment_collection.payment_sessions) } }) } // ... } export default PaymentCollection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/payment-collections/{id}/sessions/batch/authorize' security: - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorePaymentCollectionsRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/payment-collections/{id}/sessions/{session_id}: post: operationId: PostPaymentCollectionsPaymentCollectionPaymentSessionsSession summary: Refresh a Payment Session description: Refresh a Payment Session's data to ensure that it is in sync with the Payment Collection. x-authenticated: false parameters: - in: path name: id required: true description: The id of the PaymentCollection. schema: type: string - in: path name: session_id required: true description: The id of the Payment Session to be refreshed. schema: type: string x-codegen: method: refreshPaymentSession 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.paymentCollections.refreshPaymentSession(paymentCollectionId, sessionId) .then(({ payment_session }) => { console.log(payment_session.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { usePaymentCollectionRefreshPaymentSession } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const refreshPaymentSession = usePaymentCollectionRefreshPaymentSession( paymentCollectionId ) // ... const handleRefreshPaymentSession = (paymentSessionId: string) => { refreshPaymentSession.mutate(paymentSessionId, { onSuccess: ({ payment_session }) => { console.log(payment_session.status) } }) } // ... } export default PaymentCollection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/payment-collections/{id}/sessions/{session_id}' security: - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorePaymentCollectionsSessionRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/payment-collections/{id}/sessions/{session_id}/authorize: post: operationId: PostPaymentCollectionsSessionsSessionAuthorize summary: Authorize Payment Session description: Authorize a Payment Session of a Payment Collection. x-authenticated: false parameters: - in: path name: id required: true description: The ID of the Payment Collection. schema: type: string - in: path name: session_id required: true description: The ID of the Payment Session. schema: type: string x-codegen: method: authorizePaymentSession 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.paymentCollections.authorize(paymentId, sessionId) .then(({ payment_collection }) => { console.log(payment_collection.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useAuthorizePaymentSession } from "medusa-react" type Props = { paymentCollectionId: string } const PaymentCollection = ({ paymentCollectionId }: Props) => { const authorizePaymentSession = useAuthorizePaymentSession( paymentCollectionId ) // ... const handleAuthorizePayment = (paymentSessionId: string) => { authorizePaymentSession.mutate(paymentSessionId, { onSuccess: ({ payment_collection }) => { console.log(payment_collection.payment_sessions) } }) } // ... } export default PaymentCollection - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/payment-collections/{id}/sessions/{session_id}/authorize' security: - cookie_auth: [] - jwt_token: [] tags: - Payment Collections responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorePaymentCollectionsSessionRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/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 `handle` or `q`. The product categories can also be paginated. This API Route can also be used to retrieve a product category by its handle. x-featureFlag: product_categories externalDocs: description: How to retrieve a product category by its handle url: https://docs.medusajs.com/modules/products/storefront/use-categories#get-a-category-by-its-handle parameters: - in: query name: q description: term used to search product category's names and handles. schema: type: string - in: query name: handle description: Filter by handle. schema: type: string - in: query name: parent_category_id description: Filter by the ID of a parent category. Only children of the provided parent category are retrieved. schema: type: string - in: query name: include_descendants_tree description: Whether all nested categories inside a category should be retrieved. schema: type: boolean - 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: StoreGetProductCategoriesParams 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.productCategories.list() .then(({ product_categories, limit, offset, count }) => { console.log(product_categories.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useProductCategories } from "medusa-react" function Categories() { const { product_categories, isLoading, } = useProductCategories() 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}/store/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/StoreGetProductCategoriesRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/product-categories/{id}: get: operationId: GetProductCategoriesCategory summary: Get a Product Category description: Retrieve a Product Category's details. x-featureFlag: product_categories parameters: - in: path name: id required: true description: The ID of the Product Category schema: type: string - in: query name: fields description: Comma-separated fields that should be expanded in the returned 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 x-codegen: method: retrieve queryParams: StoreGetProductCategoriesCategoryParams 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.productCategories.retrieve(productCategoryId) .then(({ product_category }) => { console.log(product_category.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useProductCategory } from "medusa-react" type Props = { categoryId: string } const Category = ({ categoryId }: Props) => { const { product_category, isLoading } = useProductCategory( categoryId ) return (
{isLoading && Loading...} {product_category && {product_category.name}}
) } export default Category - lang: Shell label: cURL source: | curl '{backend_url}/store/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/StoreGetProductCategoriesCategoryRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/product-tags: get: operationId: GetProductTags summary: List Product Tags description: Retrieve a list of product tags. The product tags can be filtered by fields such as `id` or `q`. The product tags can also be sorted or paginated. x-authenticated: true x-codegen: method: list queryParams: StoreGetProductTagsParams parameters: - in: query name: limit description: Limit the number of product tags returned. schema: type: integer default: 20 - 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. When provided, only tags that the discount condition applies for will be retrieved. schema: type: string - in: query name: value style: form explode: false description: Filter by tag values. schema: type: array items: type: string - in: query name: id style: form explode: false description: Filter by IDs. schema: type: array items: type: string - in: query name: q description: term to search product tag's value. 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-codeSamples: - lang: JavaScript label: JS Client source: | import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) medusa.productTags.list() .then(({ product_tags }) => { console.log(product_tags.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useProductTags } from "medusa-react" function Tags() { const { product_tags, isLoading, } = useProductTags() return (
{isLoading && Loading...} {product_tags && !product_tags.length && ( No Product Tags )} {product_tags && product_tags.length > 0 && ( )}
) } export default Tags - lang: Shell label: cURL source: | curl '{backend_url}/store/product-tags' tags: - Product Tags responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreProductTagsListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/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 `value` or `q`. 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. When provided, only types that the discount condition applies for will be retrieved. schema: type: string - in: query name: value style: form explode: false description: Filter by type values. schema: type: array items: type: string - in: query name: id style: form explode: false description: Filter by IDs. schema: type: array items: type: string - in: query name: q description: term to search product type's value. 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: StoreGetProductTypesParams 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.productTypes.list() .then(({ product_types }) => { console.log(product_types.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useProductTypes } from "medusa-react" function Types() { const { product_types, isLoading, } = useProductTypes() return (
{isLoading && Loading...} {product_types && !product_types.length && ( No Product Types )} {product_types && product_types.length > 0 && ( )}
) } export default Types - lang: Shell label: cURL source: | curl '{backend_url}/store/product-types' security: - api_token: [] - cookie_auth: [] - jwt_token: [] tags: - Product Types responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreProductTypesListRes' '400': $ref: '#/components/responses/400_error' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/products: get: operationId: GetProducts summary: List Products description: | Retrieves a list of products. The products can be filtered by fields such as `id` or `q`. The products can also be sorted or paginated. This API Route can also be used to retrieve a product by its handle. For accurate and correct pricing of the products based on the customer's context, it's highly recommended to pass fields such as `region_id`, `currency_code`, and `cart_id` when available. Passing `sales_channel_id` ensures retrieving only products available in the specified sales channel. You can alternatively use a publishable API key in the request header instead of passing a `sales_channel_id`. externalDocs: description: How to retrieve a product by its handle url: https://docs.medusajs.com/modules/products/storefront/show-products#retrieve-product-by-handle parameters: - in: query name: q description: term used to search products' title, description, variant's title, variant's sku, and collection's title. schema: type: string - in: query name: id style: form explode: false description: Filter by IDs. schema: oneOf: - type: string - type: array items: type: string - in: query name: sales_channel_id style: form explode: false description: Filter by sales channel IDs. When provided, only products available in the selected sales channels are retrieved. Alternatively, you can pass a publishable API key in the request header and this will have the same effect. schema: type: array items: type: string - in: query name: collection_id style: form explode: false description: Filter by product collection IDs. When provided, only products that belong to the specified product collections are retrieved. schema: type: array items: type: string - in: query name: type_id style: form explode: false description: Filter by product type IDs. When provided, only products that belong to the specified product types are retrieved. schema: type: array items: type: string - in: query name: tags style: form explode: false description: Filter by product tag IDs. When provided, only products that belong to the specified product tags are retrieved. 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: Whether to retrieve regular products or gift-card 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: category_id style: form explode: false description: Filter by product category IDs. When provided, only products that belong to the specified product categories are 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 child product categories when filtering using the `category_id` field. schema: type: boolean x-featureFlag: product_categories - 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: 100 - 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 - in: query name: cart_id description: The ID of the cart. This is useful for accurate pricing based on the cart's context. schema: type: string - in: query name: region_id description: The ID of the region. This is useful for accurate pricing based on the selected region. schema: type: string - in: query name: currency_code style: form explode: false description: A 3 character ISO currency code. This is useful for accurate pricing based on the selected currency. schema: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. x-codegen: method: list queryParams: StoreGetProductsParams 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.products.list() .then(({ products, limit, offset, count }) => { console.log(products.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useProducts } from "medusa-react" const Products = () => { const { products, isLoading } = useProducts() return (
{isLoading && Loading...} {products && !products.length && No Products} {products && products.length > 0 && ( )}
) } export default Products - lang: Shell label: cURL source: | curl '{backend_url}/store/products' tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreProductsListRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/products/search: post: operationId: PostProductsSearch summary: Search Products description: Run a search query on products using the search service installed on the Medusa backend. The searching is handled through the search service, so the returned data's format depends on the search service you're using. requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostSearchReq' x-codegen: method: search 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.products.search({ q: "Shirt" }) .then(({ hits }) => { console.log(hits.length); }) - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/products/search' \ -H 'Content-Type: application/json' \ --data-raw '{ "q": "Shirt" }' tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorePostSearchRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/products/{id}: get: operationId: GetProductsProduct summary: Get a Product description: | Retrieve a Product's details. For accurate and correct pricing of the product based on the customer's context, it's highly recommended to pass fields such as `region_id`, `currency_code`, and `cart_id` when available. Passing `sales_channel_id` ensures retrieving only products available in the current sales channel. You can alternatively use a publishable API key in the request header instead of passing a `sales_channel_id`. externalDocs: description: How to pass product pricing parameters url: https://docs.medusajs.com/modules/products/storefront/show-products#product-pricing-parameters parameters: - in: path name: id required: true description: The ID of the Product. schema: type: string - in: query name: sales_channel_id description: The ID of the sales channel the customer is viewing the product from. schema: type: string - in: query name: cart_id description: The ID of the cart. This is useful for accurate pricing based on the cart's context. schema: type: string - in: query name: region_id description: The ID of the region. This is useful for accurate pricing based on the selected region. schema: type: string - in: query name: expand description: Comma-separated relations that should be expanded in the returned product. schema: type: string - in: query name: fields description: Comma-separated fields that should be included in the returned product. schema: type: string - in: query name: currency_code style: form explode: false description: A 3 character ISO currency code. This is useful for accurate pricing based on the selected currency. schema: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. x-codegen: method: retrieve queryParams: StoreGetProductsProductParams 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.products.retrieve(productId) .then(({ product }) => { console.log(product.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useProduct } from "medusa-react" type Props = { productId: string } const Product = ({ productId }: Props) => { const { product, isLoading } = useProduct(productId) return (
{isLoading && Loading...} {product && {product.title}}
) } export default Product - lang: Shell label: cURL source: | curl '{backend_url}/store/products/{id}' tags: - Products responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreProductsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/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. This API Route is useful to show the customer all available regions to choose from. externalDocs: description: How to use regions in a storefront url: https://docs.medusajs.com/modules/regions-and-currencies/storefront/use-regions parameters: - in: query name: offset description: The number of regions to skip when retrieving the regions. schema: type: integer default: 0 - in: query name: limit description: Limit the number of regions returned. schema: type: integer default: 100 - 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: StoreGetRegionsParams 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.regions.list() .then(({ regions, count, limit, offset }) => { console.log(regions.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useRegions } from "medusa-react" const Regions = () => { const { regions, isLoading } = useRegions() return (
{isLoading && Loading...} {regions?.length && ( )}
) } export default Regions - lang: Shell label: cURL source: | curl '{backend_url}/store/regions' tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreRegionsListRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/regions/{id}: get: operationId: GetRegionsRegion summary: Get a Region description: Retrieve a Region's details. 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 }) medusa.regions.retrieve(regionId) .then(({ region }) => { console.log(region.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useRegion } from "medusa-react" type Props = { regionId: string } const Region = ({ regionId }: Props) => { const { region, isLoading } = useRegion( regionId ) return (
{isLoading && Loading...} {region && {region.name}}
) } export default Region - lang: Shell label: cURL source: | curl '{backend_url}/store/regions/{id}' tags: - Regions responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreRegionsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/return-reasons: get: operationId: GetReturnReasons summary: List Return Reasons description: Retrieve a list of Return Reasons. This is useful when implementing a Create Return flow in the storefront. 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 }) medusa.returnReasons.list() .then(({ return_reasons }) => { console.log(return_reasons.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useReturnReasons } from "medusa-react" const ReturnReasons = () => { const { return_reasons, isLoading } = useReturnReasons() return (
{isLoading && Loading...} {return_reasons?.length && ( )}
) } export default ReturnReasons - lang: Shell label: cURL source: | curl '{backend_url}/store/return-reasons' tags: - Return Reasons responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreReturnReasonsListRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/return-reasons/{id}: get: operationId: GetReturnReasonsReason summary: Get a Return Reason description: Retrieve a Return Reason's details. 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 }) medusa.returnReasons.retrieve(reasonId) .then(({ return_reason }) => { console.log(return_reason.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useReturnReason } from "medusa-react" type Props = { returnReasonId: string } const ReturnReason = ({ returnReasonId }: Props) => { const { return_reason, isLoading } = useReturnReason( returnReasonId ) return (
{isLoading && Loading...} {return_reason && {return_reason.label}}
) } export default ReturnReason - lang: Shell label: cURL source: | curl '{backend_url}/store/return-reasons/{id}' tags: - Return Reasons responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreReturnReasonsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/returns: post: operationId: PostReturns summary: Create Return description: Create a Return for an Order. If a return shipping method is specified, the return is automatically fulfilled. externalDocs: description: How to create a return in a storefront url: https://docs.medusajs.com/modules/orders/storefront/create-return requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostReturnsReq' 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 }) medusa.returns.create({ order_id, items: [ { item_id, quantity: 1 } ] }) .then((data) => { console.log(data.return.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCreateReturn } from "medusa-react" type CreateReturnData = { items: { item_id: string, quantity: number }[] return_shipping: { option_id: string } } type Props = { orderId: string } const CreateReturn = ({ orderId }: Props) => { const createReturn = useCreateReturn() // ... const handleCreate = (data: CreateReturnData) => { createReturn.mutate({ ...data, order_id: orderId }, { onSuccess: ({ return: returnData }) => { console.log(returnData.id) } }) } // ... } export default CreateReturn - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/returns' \ -H 'Content-Type: application/json' \ --data-raw '{ "order_id": "asfasf", "items": [ { "item_id": "assfasf", "quantity": 1 } ] }' tags: - Returns responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreReturnsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/shipping-options: get: operationId: GetShippingOptions summary: Get Shipping Options description: Retrieve a list of Shipping Options. parameters: - in: query name: is_return description: Whether return shipping options should be included. By default, all shipping options are returned. schema: type: boolean - in: query name: product_ids description: '"Comma-separated list of Product IDs to filter Shipping Options by. If provided, only shipping options that can be used with the provided products are retrieved."' schema: type: string - in: query name: region_id description: '"The ID of the region that the shipping options belong to. If not provided, all shipping options are retrieved."' schema: type: string x-codegen: method: list queryParams: StoreGetShippingOptionsParams 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.shippingOptions.list() .then(({ shipping_options }) => { console.log(shipping_options.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useShippingOptions } from "medusa-react" const ShippingOptions = () => { const { shipping_options, isLoading, } = useShippingOptions() return (
{isLoading && Loading...} {shipping_options?.length && shipping_options?.length > 0 && ( )}
) } export default ShippingOptions - lang: Shell label: cURL source: | curl '{backend_url}/store/shipping-options' tags: - Shipping Options responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreShippingOptionsListRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/shipping-options/{cart_id}: get: operationId: GetShippingOptionsCartId summary: List for Cart description: Retrieve a list of Shipping Options available for a cart. externalDocs: description: How to implement shipping step in checkout url: https://docs.medusajs.com/modules/carts-and-checkout/storefront/implement-checkout-flow#shipping-step parameters: - in: path name: cart_id required: true description: The ID of the Cart. schema: type: string x-codegen: method: listCartOptions 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.shippingOptions.listCartOptions(cartId) .then(({ shipping_options }) => { console.log(shipping_options.length); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCartShippingOptions } from "medusa-react" type Props = { cartId: string } const ShippingOptions = ({ cartId }: Props) => { const { shipping_options, isLoading } = useCartShippingOptions(cartId) return (
{isLoading && Loading...} {shipping_options && !shipping_options.length && ( No shipping options )} {shipping_options && ( )}
) } export default ShippingOptions - lang: Shell label: cURL source: | curl '{backend_url}/store/shipping-options/{cart_id}' tags: - Shipping Options responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreCartShippingOptionsListRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/swaps: post: operationId: PostSwaps summary: Create a Swap description: | Create a Swap for an Order. This will also create a return and associate it with the swap. If a return shipping option is specified, the return will automatically be fulfilled. To complete the swap, you must use the Complete Cart API Route passing it the ID of the swap's cart. An idempotency key will be generated if none is provided in the header `Idempotency-Key` and added to the response. If an error occurs during swap creation or the request is interrupted for any reason, the swap creation can be retried by passing the idempotency key in the `Idempotency-Key` header. externalDocs: description: How to create a swap url: https://docs.medusajs.com/modules/orders/storefront/create-swap requestBody: content: application/json: schema: $ref: '#/components/schemas/StorePostSwapsReq' 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 }) medusa.swaps.create({ order_id, return_items: [ { item_id, quantity: 1 } ], additional_items: [ { variant_id, quantity: 1 } ] }) .then(({ swap }) => { console.log(swap.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCreateSwap } from "medusa-react" type Props = { orderId: string } type CreateData = { return_items: { item_id: string quantity: number }[] additional_items: { variant_id: string quantity: number }[] return_shipping_option: string } const CreateSwap = ({ orderId }: Props) => { const createSwap = useCreateSwap() // ... const handleCreate = ( data: CreateData ) => { createSwap.mutate({ ...data, order_id: orderId }, { onSuccess: ({ swap }) => { console.log(swap.id) } }) } // ... } export default CreateSwap - lang: Shell label: cURL source: | curl -X POST '{backend_url}/store/swaps' \ -H 'Content-Type: application/json' \ --data-raw '{ "order_id": "{order_id}", "return_items": [ { "item_id": "{item_id}", "quantity": 1 } ], "additional_items": [ { "variant_id": "{variant_id}", "quantity": 1 } ] }' tags: - Swaps responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreSwapsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/swaps/{cart_id}: get: operationId: GetSwapsSwapCartId summary: Get by Cart ID description: Retrieve a Swap's details by the ID of its cart. parameters: - in: path name: cart_id required: true description: The id of the Cart schema: type: string x-codegen: method: retrieveByCartId 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.swaps.retrieveByCartId(cartId) .then(({ swap }) => { console.log(swap.id); }) - lang: tsx label: Medusa React source: | import React from "react" import { useCartSwap } from "medusa-react" type Props = { cartId: string } const Swap = ({ cartId }: Props) => { const { swap, isLoading, } = useCartSwap(cartId) return (
{isLoading && Loading...} {swap && {swap.id}}
) } export default Swap - lang: Shell label: cURL source: | curl '{backend_url}/store/swaps/{cart_id}' tags: - Swaps responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreSwapsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/variants: get: operationId: GetVariants summary: Get Product Variants description: | Retrieves a list of product variants. The product variants can be filtered by fields such as `id` or `title`. The product variants can also be paginated. For accurate and correct pricing of the product variants based on the customer's context, it's highly recommended to pass fields such as `region_id`, `currency_code`, and `cart_id` when available. Passing `sales_channel_id` ensures retrieving only variants of products available in the specified sales channel. You can alternatively use a publishable API key in the request header instead of passing a `sales_channel_id`. externalDocs: description: How to pass product pricing parameters url: https://docs.medusajs.com/modules/products/storefront/show-products#product-pricing-parameters parameters: - in: query name: ids description: Filter by a comma-separated list of IDs. If supplied, it overrides the `id` parameter. schema: type: string - in: query name: id style: form explode: false description: Filter by one or more IDs. If `ids` is supplied, it's overrides the value of this parameter. schema: oneOf: - type: string description: Filter by an ID. - type: array description: Filter by IDs. items: type: string - in: query name: sales_channel_id description: '"Filter by sales channel IDs. When provided, only products available in the selected sales channels are retrieved. Alternatively, you can pass a publishable API key in the request header and this will have the same effect."' 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: 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 products 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 description: The ID of the cart. This is useful for accurate pricing based on the cart's context. schema: type: string - in: query name: region_id description: The ID of the region. This is useful for accurate pricing based on the selected region. schema: type: string - in: query name: currency_code style: form explode: false description: A 3 character ISO currency code. This is useful for accurate pricing based on the selected currency. schema: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. - 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: StoreGetVariantsParams 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.product.variants.list() .then(({ variants }) => { console.log(variants.length); }) - lang: Shell label: cURL source: | curl '{backend_url}/store/variants' tags: - Product Variants responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreVariantsListRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/responses/not_found_error' '409': $ref: '#/components/responses/invalid_state_error' '422': $ref: '#/components/responses/invalid_request_error' '500': $ref: '#/components/responses/500_error' /store/variants/{id}: get: operationId: GetVariantsVariant summary: Get a Product Variant description: | Retrieve a Product Variant's details. For accurate and correct pricing of the product variant based on the customer's context, it's highly recommended to pass fields such as `region_id`, `currency_code`, and `cart_id` when available. Passing `sales_channel_id` ensures retrieving only variants of products available in the current sales channel. You can alternatively use a publishable API key in the request header instead of passing a `sales_channel_id`. externalDocs: description: How to pass product pricing parameters url: https://docs.medusajs.com/modules/products/storefront/show-products#product-pricing-parameters parameters: - in: path name: id required: true description: The ID of the Product Variant. schema: type: string - in: query name: sales_channel_id description: The ID of the sales channel the customer is viewing the product variant from. schema: type: string - in: query name: cart_id description: The ID of the cart. This is useful for accurate pricing based on the cart's context. schema: type: string - in: query name: region_id description: The ID of the region. This is useful for accurate pricing based on the selected region. schema: type: string - in: query name: currency_code style: form explode: false description: A 3 character ISO currency code. This is useful for accurate pricing based on the selected currency. schema: type: string externalDocs: url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes description: See a list of codes. x-codegen: method: retrieve queryParams: StoreGetVariantsVariantParams 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.product.variants.retrieve(productVariantId) .then(({ variant }) => { console.log(variant.id); }) - lang: Shell label: cURL source: | curl '{backend_url}/store/variants/{id}' tags: - Product Variants responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StoreVariantsRes' '400': $ref: '#/components/responses/400_error' '404': $ref: '#/components/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: jwt_token: type: http x-displayName: JWT Token scheme: bearer cookie_auth: type: apiKey x-displayName: Cookie Session ID in: cookie name: connect.sid description: | Use a cookie session to send authenticated requests. ### How to Obtain the Cookie Session If you're sending requests through a browser, using JS Client, or using tools like Postman, the cookie session should be automatically set when the customer is logged in. If you're sending requests using cURL, you must set the Session ID in the cookie manually. To do that, send a request to [authenticate the customer](#tag/Auth/operation/PostAuth) and pass the cURL option `-v`: ```bash curl -v --location --request POST 'https://medusa-url.com/store/auth' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "user@example.com", "password": "supersecret" }' ``` The headers will be logged in the terminal as well as the response. You should find in the headers a Cookie header similar to this: ```bash Set-Cookie: connect.sid=s%3A2Bu8BkaP9JUfHu9rG59G16Ma0QZf6Gj1.WT549XqX37PN8n0OecqnMCq798eLjZC5IT7yiDCBHPM; ``` Copy the value after `connect.sid` (without the `;` at the end) and pass it as a cookie in subsequent requests as the following: ```bash curl --location --request GET 'https://medusa-url.com/store/customers/me/orders' \ --header 'Cookie: connect.sid={sid}' ``` Where `{sid}` is the value of `connect.sid` that you copied. 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 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 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 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 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 StoreAuthRes: type: object description: The customer's details. x-expanded-relations: field: customer relations: - orders - orders.items - shipping_addresses required: - customer properties: customer: description: Customer's details. $ref: '#/components/schemas/Customer' StoreBearerAuthRes: type: object description: The access token details. properties: access_token: description: Access token that can be used to send authenticated requests. type: string StoreCartShippingOptionsListRes: type: object x-expanded-relations: field: shipping_options implicit: - profile - requirements required: - shipping_options properties: shipping_options: type: array description: An array of shipping options details. items: $ref: '#/components/schemas/PricedShippingOption' StoreCartsRes: type: object description: The cart's details. x-expanded-relations: field: cart relations: - billing_address - discounts - discounts.rule - gift_cards - items - items.adjustments - items.variant - payment - payment_sessions - region - region.countries - region.payment_providers - shipping_address - shipping_methods eager: - region.fulfillment_providers - region.payment_providers - shipping_methods.shipping_option implicit: - items - items.variant - items.variant.product - items.variant.product.profiles - items.tax_lines - items.adjustments - gift_cards - discounts - discounts.rule - shipping_methods - shipping_methods.tax_lines - shipping_address - region - region.tax_rates totals: - discount_total - gift_card_tax_total - gift_card_total - item_tax_total - refundable_amount - refunded_total - shipping_tax_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: - cart properties: cart: description: Cart details. $ref: '#/components/schemas/Cart' StoreCollectionsListRes: type: object description: The list of product collections with pagination fields. required: - collections - count - offset - limit properties: collections: type: array description: An array of product collections 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 StoreCollectionsRes: type: object description: The details of the product collection. required: - collection properties: collection: description: Product collection details. $ref: '#/components/schemas/ProductCollection' StoreCompleteCartRes: type: object description: If the cart is completed successfully, this will have the created order or the swap's details, based on the cart's type. Otherwise, it'll be the cart's details. required: - type - data properties: type: type: string description: The type of the data property. If the cart completion fails, type will be `cart` and the data object will be the cart's details. If the cart completion is successful and the cart is used for checkout, type will be `order` and the data object will be the order's details. If the cart completion is successful and the cart is used for swap creation, type will be `swap` and the data object will be the swap's details. enum: - order - cart - swap data: type: object description: The data of the result object. Its type depends on the type field. oneOf: - type: object allOf: - description: Cart was successfully authorized and order was placed successfully. - $ref: '#/components/schemas/Order' - type: object allOf: - description: Cart was successfully authorized but requires further actions. - $ref: '#/components/schemas/Cart' - type: object allOf: - description: Cart was used for a swap and it has been completed successfully. - $ref: '#/components/schemas/Swap' StoreCustomersListOrdersRes: type: object description: The list of the customer's orders with pagination fields. x-expanded-relations: field: orders relations: - customer - discounts - discounts.rule - fulfillments - fulfillments.tracking_links - items - items.variant - payments - region - shipping_address - shipping_methods eager: - region.fulfillment_providers - region.payment_providers - shipping_methods.shipping_option implicit: - claims - claims.additional_items - claims.additional_items.adjustments - claims.additional_items.refundable - claims.additional_items.tax_lines - customer - 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_address - 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 orders details. items: $ref: '#/components/schemas/Order' count: description: The total number of items available type: integer offset: description: The number of orders skipped when retrieving the orders. type: integer limit: description: The number of items per page type: integer StoreCustomersListPaymentMethodsRes: type: object description: The payment method's details. required: - payment_methods properties: payment_methods: type: array description: The details of the saved payment methods. items: type: object required: - provider_id - data properties: provider_id: description: The ID of the Payment Provider where the payment method is saved. type: string data: description: The data needed for the Payment Provider to use the saved payment method. type: object StoreCustomersRes: type: object description: The customer's details. x-expanded-relations: field: customer relations: - billing_address - shipping_addresses required: - customer properties: customer: description: Customer details. $ref: '#/components/schemas/Customer' StoreCustomersResetPasswordRes: type: object required: - customer properties: customer: description: Customer details. $ref: '#/components/schemas/Customer' StoreGetAuthEmailRes: type: object description: Details on whether the email exists. required: - exists properties: exists: description: Whether email exists or not. type: boolean StoreGetProductCategoriesCategoryRes: 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' StoreGetProductCategoriesRes: 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 categories 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 StoreGiftCardsRes: description: The gift card's details. type: object required: - gift_card properties: gift_card: description: Gift card details. $ref: '#/components/schemas/GiftCard' StoreOrderEditsRes: type: object description: The order edit's 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' StoreOrdersRes: type: object description: The order's details. required: - order x-expanded-relations: field: order relations: - customer - discounts - discounts.rule - fulfillments - fulfillments.tracking_links - items - items.variant - payments - region - shipping_address - shipping_methods eager: - fulfillments.items - region.fulfillment_providers - region.payment_providers - 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 properties: order: description: Order details. $ref: '#/components/schemas/Order' StorePaymentCollectionSessionsReq: type: object description: The details of the payment session to manage. required: - provider_id properties: provider_id: type: string description: The ID of the Payment Provider. StorePaymentCollectionsRes: type: object description: The payment collection's details. x-expanded-relations: field: payment_collection relations: - payment_sessions - region eager: - region.fulfillment_providers - region.payment_providers required: - payment_collection properties: payment_collection: description: Payment collection's details. $ref: '#/components/schemas/PaymentCollection' StorePaymentCollectionsSessionRes: type: object description: The details of the payment session. required: - payment_session properties: payment_session: description: Payment session's details. $ref: '#/components/schemas/PaymentSession' StorePostAuthReq: type: object required: - email - password properties: email: type: string description: The Customer's email. password: type: string description: The Customer's password. StorePostCartReq: type: object description: The details of the cart to be created. properties: region_id: type: string description: The ID of the Region to create the Cart in. Setting the cart's region can affect the pricing of the items in the cart as well as the used currency. If this parameter is not provided, the first region in the store is used by default. sales_channel_id: type: string description: The ID of the Sales channel to create the Cart in. The cart's sales channel affects which products can be added to the cart. If a product does not exist in the cart's sales channel, it cannot be added to the cart. If you add a publishable API key in the header of this request and specify a sales channel ID, the specified sales channel must be within the scope of the publishable API key's resources. If you add a publishable API key in the header of this request, you don't specify a sales channel ID, and the publishable API key is associated with one sales channel, that sales channel will be attached to the cart. If no sales channel is passed and no publishable API key header is passed or the publishable API key isn't associated with any sales channel, the cart will not be associated with any sales channel. country_code: type: string description: The two character ISO country code to create the Cart in. Setting this parameter will set the country code of the shipping address. externalDocs: url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. items: description: An array of product variants to generate line items from. 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 to add into the cart. type: integer context: description: An object to provide context to the Cart. The `context` field is automatically populated with `ip` and `user_agent` type: object example: ip: '::1' user_agent: Chrome StorePostCartsCartLineItemsItemReq: type: object description: The details to update of the line item. required: - quantity properties: quantity: type: number description: The quantity of the line item in the cart. metadata: type: object description: An optional key-value map with additional details about the Line Item. If omitted, the metadata will remain unchanged." externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute StorePostCartsCartLineItemsReq: type: object description: The details of the line item to create. required: - variant_id - quantity properties: variant_id: type: string description: The id of the Product Variant to generate the Line Item from. quantity: type: number description: The quantity of the Product Variant to add to the Line Item. metadata: type: object description: An optional key-value map with additional details about the Line Item. externalDocs: description: Learn about the metadata attribute, and how to delete and update it. url: https://docs.medusajs.com/development/entities/overview#metadata-attribute StorePostCartsCartPaymentSessionReq: type: object description: The details of the payment session to set. required: - provider_id properties: provider_id: type: string description: The ID of the Payment Provider. StorePostCartsCartPaymentSessionUpdateReq: type: object required: - data properties: data: type: object description: The data to update the payment session with. StorePostCartsCartReq: type: object description: The details to update of the cart. properties: region_id: type: string description: The ID of the Region to create the Cart in. Setting the cart's region can affect the pricing of the items in the cart as well as the used currency. country_code: type: string description: The 2 character ISO country code to create the Cart in. Setting this parameter will set the country code of the shipping address. 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 on the Cart. format: email sales_channel_id: type: string description: The ID of the Sales channel to create the Cart in. The cart's sales channel affects which products can be added to the cart. If a product does not exist in the cart's sales channel, it cannot be added to the cart. If you add a publishable API key in the header of this request and specify a sales channel ID, the specified sales channel must be within the scope of the publishable API key's resources. billing_address: description: The Address to be used for billing purposes. anyOf: - $ref: '#/components/schemas/AddressPayload' description: A full billing address object. - type: string description: The billing address ID shipping_address: description: The Address to be used for shipping purposes. anyOf: - $ref: '#/components/schemas/AddressPayload' description: A full shipping address object. - type: string description: The shipping address ID gift_cards: description: An array of Gift Card codes to add to the Cart. type: array items: type: object required: - code properties: code: description: The code of a gift card. type: string discounts: description: An array of Discount codes to add to the Cart. type: array items: type: object required: - code properties: code: description: The code of the discount. type: string customer_id: description: The ID of the Customer to associate the Cart with. type: string context: description: An object to provide context to the Cart. The `context` field is automatically populated with `ip` and `user_agent` type: object example: ip: '::1' user_agent: Chrome StorePostCartsCartShippingMethodReq: type: object description: The details of the shipping method to add to the cart. required: - option_id properties: option_id: type: string description: ID of the shipping option to create the method from. data: type: object description: Used to hold any data that the shipping method may need to process the fulfillment of the order. This depends on the fulfillment provider you're using. StorePostCustomersCustomerAcceptClaimReq: type: object description: The details necessary to grant order access. required: - token properties: token: description: The claim token generated by previous request to the Claim Order API Route. type: string StorePostCustomersCustomerAddressesAddressReq: anyOf: - $ref: '#/components/schemas/AddressPayload' StorePostCustomersCustomerAddressesReq: type: object required: - address properties: address: description: The Address to add to the Customer's saved addresses. $ref: '#/components/schemas/AddressCreatePayload' StorePostCustomersCustomerOrderClaimReq: type: object description: The details of the orders to claim. required: - order_ids properties: order_ids: description: The ID of the orders to claim type: array items: type: string StorePostCustomersCustomerPasswordTokenReq: type: object required: - email properties: email: description: The customer's email. type: string format: email StorePostCustomersCustomerReq: type: object description: The details to update of the customer. properties: first_name: description: The customer's first name. type: string last_name: description: The customer's last name. type: string billing_address: description: The address to be used for billing purposes. anyOf: - $ref: '#/components/schemas/AddressPayload' description: The full billing address object - type: string description: The ID of an existing billing address password: description: The customer's password. type: string phone: description: The customer's phone number. type: string email: description: The customer's email. type: string metadata: description: Additional custom data about the customer. 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 StorePostCustomersReq: type: object description: The details of the customer to create. required: - first_name - last_name - email - password properties: first_name: description: The customer's first name. type: string last_name: description: The customer's last name. type: string email: description: The customer's email. type: string format: email password: description: The customer's password. type: string format: password phone: description: The customer's phone number. type: string StorePostCustomersResetPasswordReq: type: object required: - email - password - token properties: email: description: The customer's email. type: string format: email password: description: The customer's password. type: string format: password token: description: The reset password token type: string StorePostOrderEditsOrderEditDecline: type: object description: The details of the order edit's decline. properties: declined_reason: type: string description: The reason for declining the Order Edit. StorePostPaymentCollectionsBatchSessionsAuthorizeReq: type: object description: The details of the payment sessions to authorize. required: - session_ids properties: session_ids: description: List of Payment Session IDs to authorize. type: array items: type: string StorePostPaymentCollectionsBatchSessionsReq: type: object description: The details of the payment sessions to manage. required: - sessions properties: sessions: description: Payment sessions related to the Payment Collection. Existing sessions that are not added in this array will be deleted. type: array items: type: object required: - provider_id - amount properties: provider_id: type: string description: The ID of the Payment Provider. amount: type: integer description: The payment amount session_id: type: string description: The ID of the Payment Session to be updated. If no ID is provided, a new payment session is created. StorePostReturnsReq: type: object description: The details of the return to create. required: - order_id - items properties: order_id: type: string description: The ID of the Order to create the return for. items: description: The items to include in the return. type: array items: type: object required: - item_id - quantity properties: item_id: description: The ID of the line item to return. type: string quantity: description: The quantity to return. type: integer reason_id: description: The ID of the return reason. Return reasons can be retrieved from the List Return Reasons API Route. type: string note: description: A note to add to the item returned. type: string return_shipping: description: The return shipping method used to return the items. If provided, a fulfillment is automatically created for the return. type: object required: - option_id properties: option_id: type: string description: The ID of the Shipping Option to create the Shipping Method from. StorePostSearchReq: type: object properties: q: type: string description: The search query. offset: type: number description: The number of products to skip when retrieving the products. limit: type: number description: Limit the number of products returned. filter: description: Pass filters based on the search service. StorePostSearchRes: description: The list of search results. allOf: - type: object required: - hits properties: hits: description: Array of search results. The format of the items depends on the search engine installed on the Medusa backend. type: array - type: object StorePostSwapsReq: type: object description: The details of the swap to create. required: - order_id - return_items - additional_items properties: order_id: type: string description: The ID of the Order to create the Swap for. return_items: description: The items to include in the Return. type: array items: type: object required: - item_id - quantity properties: item_id: description: The ID of the order's line item to return. type: string quantity: description: The quantity to return. type: integer reason_id: description: The ID of the reason of this return. Return reasons can be retrieved from the List Return Reasons API Route. type: string note: description: The note to add to the item being swapped. type: string return_shipping_option: type: string description: The ID of the Shipping Option to create the Shipping Method from. additional_items: description: The items to exchange the returned items with. 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 variant. type: integer StoreProductTagsListRes: 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 tags 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 StoreProductTypesListRes: type: object 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 StoreProductsListRes: type: object description: The list of products with pagination fields. x-expanded-relations: field: products relations: - collection - images - options - options.values - 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 StoreProductsRes: type: object x-expanded-relations: field: product relations: - collection - images - options - options.values - tags - type - variants - variants.options - variants.prices totals: - variants.purchasable required: - product properties: product: description: Product details. $ref: '#/components/schemas/PricedProduct' StoreRegionsListRes: type: object description: The list of regions with pagination fields. x-expanded-relations: field: regions relations: - countries - payment_providers - fulfillment_providers eager: - payment_providers - fulfillment_providers required: - regions 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 StoreRegionsRes: type: object description: The region's details. x-expanded-relations: field: region relations: - countries - payment_providers - fulfillment_providers eager: - payment_providers - fulfillment_providers required: - region properties: region: description: Region details. $ref: '#/components/schemas/Region' StoreReturnReasonsListRes: 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: An array of return reasons details. items: $ref: '#/components/schemas/ReturnReason' StoreReturnReasonsRes: 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: Return reason details. $ref: '#/components/schemas/ReturnReason' StoreReturnsRes: type: object description: The return's details. x-expanded-relations: field: return relations: - items - items.reason eager: - items required: - return properties: return: description: Return details. $ref: '#/components/schemas/Return' StoreShippingOptionsListRes: type: object description: The list of shipping options. x-expanded-relations: field: shipping_options relations: - requirements required: - shipping_options properties: shipping_options: type: array description: An array of shipping options details. items: $ref: '#/components/schemas/PricedShippingOption' StoreSwapsRes: type: object description: The swap's details. x-expanded-relations: field: swap relations: - additional_items - additional_items.variant - cart - fulfillments - order - payment - return_order - return_order.shipping_method - shipping_address - shipping_methods eager: - fulfillments.items required: - swap properties: swap: description: Swap details. $ref: '#/components/schemas/Swap' StoreVariantsListRes: type: object description: The list of product variants. x-expanded-relations: field: variants relations: - prices - options - product totals: - purchasable required: - variants properties: variants: type: array description: An array of product variant descriptions. items: $ref: '#/components/schemas/PricedVariant' StoreVariantsRes: type: object description: The product variant's details. x-expanded-relations: field: variant relations: - prices - options - product totals: - purchasable required: - variant properties: variant: description: Product variant description. $ref: '#/components/schemas/PricedVariant' 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