--- displayed_sidebar: jsClientSidebar slug: /references/js-client/SwapsResource --- import ParameterTypes from "@site/src/components/ParameterTypes" # SwapsResource This class is used to send requests to [Store Swap API Routes](https://docs.medusajs.com/api/store#swaps). All its method are available in the JS Client under the `medusa.swaps` property. 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. Related Guide: [How to create a swap in a storefront](https://docs.medusajs.com/modules/orders/storefront/create-swap) ## Methods ### create 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 [CartsResource.complete](CartsResource.mdx#complete) method 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. #### Example ```ts 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) }) ``` #### Parameters `", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification", "type": "`boolean`", "description": "If set to true, no notification will be sent related to this swap", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order that the swap belongs to.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order that the swap belongs to.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "payment", "type": "[Payment](../internal/classes/internal.Payment.mdx)", "description": "The details of the additional payment authorized by the customer when `difference\\_due` is positive.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "payment_status", "type": "[SwapPaymentStatus](../internal/enums/internal.SwapPaymentStatus.mdx)", "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.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "return_order", "type": "[Return](../internal/classes/internal.Return.mdx)", "description": "The details of the return that belongs to the swap, which holds the details on the items being returned.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "shipping_address", "type": "[Address](../internal/classes/internal.Address.mdx)", "description": "The details of the shipping address that the new items should be sent to.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "shipping_address_id", "type": "`string`", "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.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_methods", "type": "[ShippingMethod](../internal/classes/internal.ShippingMethod-4.mdx)[]", "description": "The details of the shipping methods used to fulfill the additional items purchased.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### retrieveByCartId Retrieve a Swap's details by the ID of its cart. #### Example ```ts 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) }) ``` #### Parameters `", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification", "type": "`boolean`", "description": "If set to true, no notification will be sent related to this swap", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order that the swap belongs to.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order that the swap belongs to.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "payment", "type": "[Payment](../internal/classes/internal.Payment.mdx)", "description": "The details of the additional payment authorized by the customer when `difference\\_due` is positive.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "payment_status", "type": "[SwapPaymentStatus](../internal/enums/internal.SwapPaymentStatus.mdx)", "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.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "return_order", "type": "[Return](../internal/classes/internal.Return.mdx)", "description": "The details of the return that belongs to the swap, which holds the details on the items being returned.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "shipping_address", "type": "[Address](../internal/classes/internal.Address.mdx)", "description": "The details of the shipping address that the new items should be sent to.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "shipping_address_id", "type": "`string`", "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.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_methods", "type": "[ShippingMethod](../internal/classes/internal.ShippingMethod-4.mdx)[]", "description": "The details of the shipping methods used to fulfill the additional items purchased.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} />