diff --git a/www/apps/api-reference/markdown/admin.mdx b/www/apps/api-reference/markdown/admin.mdx index aa2f2deb8c191..a82e409a77690 100644 --- a/www/apps/api-reference/markdown/admin.mdx +++ b/www/apps/api-reference/markdown/admin.mdx @@ -147,7 +147,7 @@ Use a user's secret API Token to send authenticated requests. #### How to Create an API Token for a User -Create the API key token either from the Medusa Admin or using the [Create API Key API Route](#api-keys_postapikeys). +Create the API key token either from the [Medusa Admin](!user-guide!/settings/developer/secret-api-keys) or using the [Create API Key API Route](#api-keys_postapikeys). diff --git a/www/apps/book/app/learn/page.mdx b/www/apps/book/app/learn/page.mdx index e0555893b449d..02c688a48d0e6 100644 --- a/www/apps/book/app/learn/page.mdx +++ b/www/apps/book/app/learn/page.mdx @@ -81,6 +81,7 @@ This documentation is split into the following sections: 1. The main documentation, which is the one you're currently reading. It's recommended to follow the chapters in this documentation to understand the core concepts of Medusa and how to use them. 2. The [Development Resources documentation](!resources!) provides guides and resources useful during your development, such as tools, API references, recipes, step-by-step guides and examples, and more. 3. The [Store](!api!/store) and [Admin](!api!/admin) API references provide a reference to the Medusa application's endpoints and instructions related to authentication, parameter types in requests, and more. +4. The [User Guide](!user-guide!) introduces you to the Medusa Admin dashboard and helps merchants and store managers understand how to use the dashboard to manage their store. To get started, check out the [Installation chapter](./installation/page.mdx). diff --git a/www/apps/resources/app/architectural-modules/notification/sendgrid/page.mdx b/www/apps/resources/app/architectural-modules/notification/sendgrid/page.mdx index 2ac858062f90e..7489d8bc9a3fb 100644 --- a/www/apps/resources/app/architectural-modules/notification/sendgrid/page.mdx +++ b/www/apps/resources/app/architectural-modules/notification/sendgrid/page.mdx @@ -181,6 +181,4 @@ Then, start the Medusa application: npm run dev ``` -{/* TODO add links */} - -And create a product either using the [API route](!api!/admin#products_postproducts) or the Medusa Admin. This runs the subscriber and sends an email using SendGrid. +And create a product either using the [API route](!api!/admin#products_postproducts) or the [Medusa Admin](!user-guide!/products/create). This runs the subscriber and sends an email using SendGrid. diff --git a/www/apps/resources/app/commerce-modules/api-key/page.mdx b/www/apps/resources/app/commerce-modules/api-key/page.mdx index 0822ca57a6aca..bb3e2ef8174a0 100644 --- a/www/apps/resources/app/commerce-modules/api-key/page.mdx +++ b/www/apps/resources/app/commerce-modules/api-key/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the API Key Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/settings/developer) to learn how to manage publishable and secret API keys using the dashboard. + + + Medusa has API-key related features available out-of-the-box through the API Key Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this API Key Module. diff --git a/www/apps/resources/app/commerce-modules/auth/reset-password/page.mdx b/www/apps/resources/app/commerce-modules/auth/reset-password/page.mdx index 632e3fb4a6dda..55fd84ae8b7a6 100644 --- a/www/apps/resources/app/commerce-modules/auth/reset-password/page.mdx +++ b/www/apps/resources/app/commerce-modules/auth/reset-password/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this guide, you'll learn how to handle the `auth.password_reset` event, which is emitted when a request is sent to the [Generate Reset Password Token API route](../authentication-route/page.mdx#generate-reset-password-token-route). + + +Refer to this [Medusa Admin User Guide](!user-guide!/reset-password) to learn how to reset your user admin password using the dashboard. + + + You'll create a subscriber that listens to the event. When the event is emitted, the subscriber sends an email notification to the user. + +Refer to the [Medusa Admin User Guide](!user-guide!/settings/store) to learn how to manage your store's currencies using the dashboard. + + + Medusa has currency related features available out-of-the-box through the Currency Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Currency Module. diff --git a/www/apps/resources/app/commerce-modules/customer/customer-accounts/page.mdx b/www/apps/resources/app/commerce-modules/customer/customer-accounts/page.mdx index 48c218a26138d..73add40b4f689 100644 --- a/www/apps/resources/app/commerce-modules/customer/customer-accounts/page.mdx +++ b/www/apps/resources/app/commerce-modules/customer/customer-accounts/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, you’ll learn how registered and unregistered accounts are distinguished in the Medusa application. + + +Refer to this [Medusa Admin User Guide](!user-guide!/customers) to learn how to manage customers using the dashboard. + + + ## `has_account` Property The [Customer data model](/references/customer/models/Customer) has a `has_account` property, which is a boolean that indicates whether a customer is registered. diff --git a/www/apps/resources/app/commerce-modules/customer/page.mdx b/www/apps/resources/app/commerce-modules/customer/page.mdx index 2cf9df143b393..742019b187c18 100644 --- a/www/apps/resources/app/commerce-modules/customer/page.mdx +++ b/www/apps/resources/app/commerce-modules/customer/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Customer Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/customers) to learn how to manage customers and groups using the dashboard. + + + Medusa has customer related features available out-of-the-box through the Customer Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Customer Module. diff --git a/www/apps/resources/app/commerce-modules/fulfillment/fulfillment-provider/page.mdx b/www/apps/resources/app/commerce-modules/fulfillment/fulfillment-provider/page.mdx index 72334ef0e8ef8..dfc38349166da 100644 --- a/www/apps/resources/app/commerce-modules/fulfillment/fulfillment-provider/page.mdx +++ b/www/apps/resources/app/commerce-modules/fulfillment/fulfillment-provider/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, you’ll learn what a fulfillment module provider is. + + +Refer to this [Medusa Admin User Guide](!user-guide!/settings/locations-and-shipping/locations#manage-fulfillment-providers) to learn how to add a fulfillment provider to a location using the dashboard. + + + ## What’s a Fulfillment Module Provider? A fulfillment module provider handles fulfilling items, typically using a third-party integration. diff --git a/www/apps/resources/app/commerce-modules/fulfillment/page.mdx b/www/apps/resources/app/commerce-modules/fulfillment/page.mdx index ff74c62721b59..24a1ca24edc7d 100644 --- a/www/apps/resources/app/commerce-modules/fulfillment/page.mdx +++ b/www/apps/resources/app/commerce-modules/fulfillment/page.mdx @@ -8,6 +8,15 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Fulfillment Module and how to use it in your application. + + +Refer to the Medusa Admin User Guide to learn how to use the dashboard to: + +- [Manage order fulfillments](!user-guide!/orders/fulfillments). +- [Manage shipping options and profiles](!user-guide!/settings/locations-and-shipping). + + + Medusa has fulfillment related features available out-of-the-box through the Fulfillment Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Fulfillment Module. diff --git a/www/apps/resources/app/commerce-modules/inventory/inventory-kit/page.mdx b/www/apps/resources/app/commerce-modules/inventory/inventory-kit/page.mdx index f09cb0b101e2b..b356317b76a24 100644 --- a/www/apps/resources/app/commerce-modules/inventory/inventory-kit/page.mdx +++ b/www/apps/resources/app/commerce-modules/inventory/inventory-kit/page.mdx @@ -14,6 +14,15 @@ export const metadata = { In this guide, you'll learn how inventory kits can be used in the Medusa application to support use cases like multi-part products, bundled products, and shared inventory across products. + + +Refer to the following user guides to learn how to use the Medusa Admin dashboard to: + +- [Create Multi-Part Products](!user-guide!/products/create/multi-part). +- [Create Bundled Products](!user-guide!/products/create/bundle). + + + ## What is an Inventory Kit? An inventory kit is a collection of inventory items that are linked to a single product variant. These inventory items can be used to represent different parts of a product, or to represent a bundle of products. @@ -42,7 +51,7 @@ Then, whenever a customer purchases a bicycle, the inventory of each part is upd ### Create Multi-Part Product -Using the Medusa Admin, you can create a multi-part product by creating its inventory items first, then assigning these inventory items to the product's variant(s). +Using the [Medusa Admin](!user-guide!/products/create/multi-part), you can create a multi-part product by creating its inventory items first, then assigning these inventory items to the product's variant(s). Using [workflows](!docs!/learn/fundamentals/workflows), you can implement this by first creating the inventory items: @@ -205,7 +214,7 @@ Then, when the bundled product's variant is purchased, the inventory quantity of ### Create Bundled Product -You can create a bundled product in the Medusa Admin by creating the products part of the bundle first, each having its own inventory items. Then, you create the bundled product whose variant(s) have inventory kits composed of inventory items from each of the products part of the bundle. +You can create a bundled product in the [Medusa Admin](!user-guide!/products/create/bundle) by creating the products part of the bundle first, each having its own inventory items. Then, you create the bundled product whose variant(s) have inventory kits composed of inventory items from each of the products part of the bundle. Using [workflows](!docs!/learn/fundamentals/workflows), you can implement this by first creating the products part of the bundle: diff --git a/www/apps/resources/app/commerce-modules/inventory/page.mdx b/www/apps/resources/app/commerce-modules/inventory/page.mdx index 86a56c5fd543a..1dae9486074ca 100644 --- a/www/apps/resources/app/commerce-modules/inventory/page.mdx +++ b/www/apps/resources/app/commerce-modules/inventory/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Inventory Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/inventory) to learn how to manage inventory and related features using the dashboard. + + + Medusa has inventory related features available out-of-the-box through the Inventory Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Inventory Module. diff --git a/www/apps/resources/app/commerce-modules/order/claim/page.mdx b/www/apps/resources/app/commerce-modules/order/claim/page.mdx index 356408e8c0ec4..59c918ccf39b8 100644 --- a/www/apps/resources/app/commerce-modules/order/claim/page.mdx +++ b/www/apps/resources/app/commerce-modules/order/claim/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, you’ll learn about order claims. + + +Refer to this [Medusa Admin User Guide](!user-guide!/orders/claims) to learn how to manage an order's claims using the dashboard. + + + ## What is a Claim? When a customer receives a defective or incorrect item, the merchant can create a claim to refund or replace the item. diff --git a/www/apps/resources/app/commerce-modules/order/edit/page.mdx b/www/apps/resources/app/commerce-modules/order/edit/page.mdx index a105a676ea72e..1acf6f88372eb 100644 --- a/www/apps/resources/app/commerce-modules/order/edit/page.mdx +++ b/www/apps/resources/app/commerce-modules/order/edit/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, you'll learn about order edits. + + +Refer to this [Medusa Admin User Guide](!user-guide!/orders/edit) to learn how to edit an order's items using the dashboard. + + + ## What is an Order Edit? A merchant can edit an order to add new items or change the quantity of existing items in the order. diff --git a/www/apps/resources/app/commerce-modules/order/exchange/page.mdx b/www/apps/resources/app/commerce-modules/order/exchange/page.mdx index 9dfab389d7fa7..34c233a275153 100644 --- a/www/apps/resources/app/commerce-modules/order/exchange/page.mdx +++ b/www/apps/resources/app/commerce-modules/order/exchange/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this document, you’ll learn about order exchanges. + + +Refer to this [Medusa Admin User Guide](!user-guide!/orders/exchanges) to learn how to manage an order's exchanges using the dashboard. + + + ## What is an Exchange? An exchange is the replacement of an item that the customer ordered with another. diff --git a/www/apps/resources/app/commerce-modules/order/page.mdx b/www/apps/resources/app/commerce-modules/order/page.mdx index 0a02018d44b85..a51b9a29116ca 100644 --- a/www/apps/resources/app/commerce-modules/order/page.mdx +++ b/www/apps/resources/app/commerce-modules/order/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Order Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/orders) to learn how to manage orders using the dashboard. + + + Medusa has order related features available out-of-the-box through the Order Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Order Module. diff --git a/www/apps/resources/app/commerce-modules/order/return/page.mdx b/www/apps/resources/app/commerce-modules/order/return/page.mdx index a0a7ebb1f136c..7255307bdebeb 100644 --- a/www/apps/resources/app/commerce-modules/order/return/page.mdx +++ b/www/apps/resources/app/commerce-modules/order/return/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, you’ll learn about order returns. + + +Refer to this [Medusa Admin User Guide](!user-guide!/orders/returns) to learn how to manage an order's returns using the dashboard. + + + ## What is a Return? A return is the return of items delivered from the customer back to the merchant. It is represented by the [Return data model](/references/order/models/Return). diff --git a/www/apps/resources/app/commerce-modules/payment/page.mdx b/www/apps/resources/app/commerce-modules/payment/page.mdx index 109737f848788..af3a73940858d 100644 --- a/www/apps/resources/app/commerce-modules/payment/page.mdx +++ b/www/apps/resources/app/commerce-modules/payment/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Payment Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/orders/payments) to learn how to manage order payments using the dashboard. + + + Medusa has payment related features available out-of-the-box through the Payment Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Payment Module. diff --git a/www/apps/resources/app/commerce-modules/payment/payment-provider/page.mdx b/www/apps/resources/app/commerce-modules/payment/payment-provider/page.mdx index 5c73329c360dc..803ec780c31c2 100644 --- a/www/apps/resources/app/commerce-modules/payment/payment-provider/page.mdx +++ b/www/apps/resources/app/commerce-modules/payment/payment-provider/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this document, you’ll learn what a payment module provider is. + + +Refer to this [Medusa Admin User Guide](!user-guide!/settings/regions) to learn how to manage the payment providers available in a region using the dashboard. + + + ## What's a Payment Module Provider? A payment module provider registers a payment provider that handles payment processing in the Medusa application. It integrates third-party payment providers, such as Stripe. diff --git a/www/apps/resources/app/commerce-modules/payment/payment-provider/stripe/page.mdx b/www/apps/resources/app/commerce-modules/payment/payment-provider/stripe/page.mdx index 5594942d2fa13..31507ef7849fb 100644 --- a/www/apps/resources/app/commerce-modules/payment/payment-provider/stripe/page.mdx +++ b/www/apps/resources/app/commerce-modules/payment/payment-provider/stripe/page.mdx @@ -12,6 +12,12 @@ export const metadata = { In this document, you’ll learn about the Stripe Module Provider and how to configure it in the Payment Module. + + +Your technical team must install the Stripe Module Provider in your Medusa application first. Then, refer to [this user guide](!user-guide!/settings/regions#edit-region-details) to learn how to enable the Stripe payment provider in a region using the Medusa Admin dashboard. + + + ## Register the Stripe Module Provider --- +## Enable Stripe Providers in a Region + +Before customers can use Stripe to complete their purchases, you must enable the Stripe payment provider(s) in the region where you want to offer this payment method. + +Refer to the [user guide](!user-guide!/settings/regions#edit-region-details) to learn how to edit a region and enable the Stripe payment provider. + +--- + ## Setup Stripe Webhooks For production applications, you must set up webhooks in Stripe that inform Medusa of changes and updates to payments. Refer to [Stripe's documentation](https://docs.stripe.com/webhooks#add-a-webhook-endpoint) on how to setup webhooks. diff --git a/www/apps/resources/app/commerce-modules/pricing/page.mdx b/www/apps/resources/app/commerce-modules/pricing/page.mdx index 1a4df678a9b7c..6441a91ba769c 100644 --- a/www/apps/resources/app/commerce-modules/pricing/page.mdx +++ b/www/apps/resources/app/commerce-modules/pricing/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Pricing Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/price-lists) to learn how to manage price lists using the dashboard. + + + Medusa has pricing related features available out-of-the-box through the Pricing Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Pricing Module. diff --git a/www/apps/resources/app/commerce-modules/product/page.mdx b/www/apps/resources/app/commerce-modules/product/page.mdx index 77878f26f6866..ce275808885cc 100644 --- a/www/apps/resources/app/commerce-modules/product/page.mdx +++ b/www/apps/resources/app/commerce-modules/product/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Product Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/products) to learn how to manage products using the dashboard. + + + Medusa has product related features available out-of-the-box through the Product Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Product Module. diff --git a/www/apps/resources/app/commerce-modules/product/variant-inventory/page.mdx b/www/apps/resources/app/commerce-modules/product/variant-inventory/page.mdx index 4e9baf7ae757e..db472c5491683 100644 --- a/www/apps/resources/app/commerce-modules/product/variant-inventory/page.mdx +++ b/www/apps/resources/app/commerce-modules/product/variant-inventory/page.mdx @@ -15,6 +15,12 @@ export const metadata = { In this guide, you'll learn about the inventory management features related to product variants. + + +Refer to this [Medusa Admin User Guide](!user-guide!/products/variants#manage-product-variant-inventory) to learn how to manage inventory of product variants. + + + ## Configure Inventory Management of Product Variants A product variant, represented by the [ProductVariant](/references/product/models/ProductVariant) data model, has a `manage_inventory` field that's disabled by default. This field indicates whether you'll manage the inventory quantity of the product variant in the Medusa application. You can also keep `manage_inventory` disabled if you manage the product's inventory in an external system, such as an ERP. diff --git a/www/apps/resources/app/commerce-modules/promotion/campaign/page.mdx b/www/apps/resources/app/commerce-modules/promotion/campaign/page.mdx index 90449870f74e6..4d5b92b490f50 100644 --- a/www/apps/resources/app/commerce-modules/promotion/campaign/page.mdx +++ b/www/apps/resources/app/commerce-modules/promotion/campaign/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, you'll learn about campaigns. + + +Refer to this [Medusa Admin User Guide](!user-guide!/promotions/campaigns) to learn how to manage campaigns using the dashboard. + + + ## What is a Campaign? A [Campaign](/references/promotion/models/Campaign) combines promotions under the same conditions, such as start and end dates. diff --git a/www/apps/resources/app/commerce-modules/promotion/concepts/page.mdx b/www/apps/resources/app/commerce-modules/promotion/concepts/page.mdx index 4682e7c1862f1..0fbe3f932b2b5 100644 --- a/www/apps/resources/app/commerce-modules/promotion/concepts/page.mdx +++ b/www/apps/resources/app/commerce-modules/promotion/concepts/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this document, you’ll learn about the main promotion and rule concepts in the Promotion Module. + + +Refer to this [Medusa Admin User Guide](!user-guide!/promotions) to learn how to manage promotions using the dashboard. + + + ## What is a Promotion? A promotion, represented by the [Promotion data model](/references/promotion/models/Promotion), is a discount that can be applied on cart items, shipping methods, or entire orders. diff --git a/www/apps/resources/app/commerce-modules/promotion/page.mdx b/www/apps/resources/app/commerce-modules/promotion/page.mdx index 0e8f75c707636..fb1cc299c9a49 100644 --- a/www/apps/resources/app/commerce-modules/promotion/page.mdx +++ b/www/apps/resources/app/commerce-modules/promotion/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Promotion Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/promotions) to learn how to manage promotions using the dashboard. + + + Medusa has promotion related features available out-of-the-box through the Promotion Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Promotion Module. diff --git a/www/apps/resources/app/commerce-modules/region/page.mdx b/www/apps/resources/app/commerce-modules/region/page.mdx index a7da230d396c8..870e3c71edc9c 100644 --- a/www/apps/resources/app/commerce-modules/region/page.mdx +++ b/www/apps/resources/app/commerce-modules/region/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Region Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/settings/regions) to learn how to manage regions using the dashboard. + + + Medusa has region related features available out-of-the-box through the Region Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Region Module. diff --git a/www/apps/resources/app/commerce-modules/sales-channel/page.mdx b/www/apps/resources/app/commerce-modules/sales-channel/page.mdx index 59b008c1e1fa5..6bbc447d73beb 100644 --- a/www/apps/resources/app/commerce-modules/sales-channel/page.mdx +++ b/www/apps/resources/app/commerce-modules/sales-channel/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Sales Channel Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/settings/sales-channels) to learn how to manage sales channels using the dashboard. + + + Medusa has sales channel related features available out-of-the-box through the Sales Channel Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Sales Channel Module. diff --git a/www/apps/resources/app/commerce-modules/sales-channel/publishable-api-keys/page.mdx b/www/apps/resources/app/commerce-modules/sales-channel/publishable-api-keys/page.mdx index d63cbd3022763..0c94e4642ad5d 100644 --- a/www/apps/resources/app/commerce-modules/sales-channel/publishable-api-keys/page.mdx +++ b/www/apps/resources/app/commerce-modules/sales-channel/publishable-api-keys/page.mdx @@ -25,4 +25,4 @@ The Medusa application infers the associated sales channels and ensures that onl ## How to Create a Publishable API Key? -To create a publishable API key, either use the Medusa Admin or the [Admin API Routes](!api!/admin#publishable-api-keys). +To create a publishable API key, either use the [Medusa Admin](!user-guide!/settings/developer/publishable-api-keys) or the [Admin API Routes](!api!/admin#publishable-api-keys). diff --git a/www/apps/resources/app/commerce-modules/stock-location/page.mdx b/www/apps/resources/app/commerce-modules/stock-location/page.mdx index f32cc9fe40a81..9fcdc1c373cba 100644 --- a/www/apps/resources/app/commerce-modules/stock-location/page.mdx +++ b/www/apps/resources/app/commerce-modules/stock-location/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Stock Location Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/settings/locations-and-shipping) to learn how to manage stock locations using the dashboard. + + + Medusa has stock location related features available out-of-the-box through the Stock Location Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Stock Location Module. diff --git a/www/apps/resources/app/commerce-modules/store/page.mdx b/www/apps/resources/app/commerce-modules/store/page.mdx index 4fc64c8aa9541..8d6312da889c1 100644 --- a/www/apps/resources/app/commerce-modules/store/page.mdx +++ b/www/apps/resources/app/commerce-modules/store/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Store Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/settings/store) to learn how to manage your store using the dashboard. + + + Medusa has store related features available out-of-the-box through the Store Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Store Module. diff --git a/www/apps/resources/app/commerce-modules/tax/page.mdx b/www/apps/resources/app/commerce-modules/tax/page.mdx index 8cee91a18f794..9141f9afb2898 100644 --- a/www/apps/resources/app/commerce-modules/tax/page.mdx +++ b/www/apps/resources/app/commerce-modules/tax/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the Tax Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/settings/tax-regions) to learn how to manage tax regions using the dashboard. + + + Medusa has tax related features available out-of-the-box through the Tax Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Tax Module. diff --git a/www/apps/resources/app/commerce-modules/tax/tax-rates-and-rules/page.mdx b/www/apps/resources/app/commerce-modules/tax/tax-rates-and-rules/page.mdx index 173fe392e9e06..de6b646273081 100644 --- a/www/apps/resources/app/commerce-modules/tax/tax-rates-and-rules/page.mdx +++ b/www/apps/resources/app/commerce-modules/tax/tax-rates-and-rules/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, you’ll learn about tax rates and rules. + + +Refer to this [Medusa Admin User Guide](!user-guide!/settings/tax-regions#manage-tax-rate-overrides) to learn how to manage tax rates using the dashboard. + + + ## What are Tax Rates? A tax rate is a percentage amount used to calculate the tax amount for each taxable item’s price, such as line items or shipping methods, in a cart. The sum of all calculated tax amounts are then added to the cart’s total as a tax total. diff --git a/www/apps/resources/app/commerce-modules/tax/tax-region/page.mdx b/www/apps/resources/app/commerce-modules/tax/tax-region/page.mdx index ace287dc90960..adfa86893fb6c 100644 --- a/www/apps/resources/app/commerce-modules/tax/tax-region/page.mdx +++ b/www/apps/resources/app/commerce-modules/tax/tax-region/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, you’ll learn about tax regions and how to use them with the Region Module. + + +Refer to this [Medusa Admin User Guide](!user-guide!/settings/tax-regions) to learn how to manage tax regions using the dashboard. + + + ## What is a Tax Region? A tax region, represented by the [TaxRegion data model](/references/tax/models/TaxRegion), stores tax settings related to a region that your store serves. diff --git a/www/apps/resources/app/commerce-modules/user/page.mdx b/www/apps/resources/app/commerce-modules/user/page.mdx index a5dd3edd70b72..39b99da1c4019 100644 --- a/www/apps/resources/app/commerce-modules/user/page.mdx +++ b/www/apps/resources/app/commerce-modules/user/page.mdx @@ -8,6 +8,12 @@ export const metadata = { In this section of the documentation, you will find resources to learn more about the User Module and how to use it in your application. + + +Refer to the [Medusa Admin User Guide](!user-guide!/settings/users) to learn how to manage users using the dashboard. + + + Medusa has user related features available out-of-the-box through the User Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this User Module. diff --git a/www/apps/resources/app/commerce-modules/user/user-creation-flows/page.mdx b/www/apps/resources/app/commerce-modules/user/user-creation-flows/page.mdx index f666c140ad3f1..ba3d5277a268f 100644 --- a/www/apps/resources/app/commerce-modules/user/user-creation-flows/page.mdx +++ b/www/apps/resources/app/commerce-modules/user/user-creation-flows/page.mdx @@ -6,6 +6,12 @@ export const metadata = { In this document, learn the different ways to create a user using the User Module. + + +Refer to this [Medusa Admin User Guide](!user-guide!/settings/users) to learn how to manage users using the dashboard. + + + ## Straightforward User Creation To create a user, use the [create method of the User Module’s main service](/references/user/create): diff --git a/www/apps/resources/app/integrations/guides/shipstation/page.mdx b/www/apps/resources/app/integrations/guides/shipstation/page.mdx index 15299cc074bc0..dc714cb5efaea 100644 --- a/www/apps/resources/app/integrations/guides/shipstation/page.mdx +++ b/www/apps/resources/app/integrations/guides/shipstation/page.mdx @@ -31,6 +31,12 @@ export const metadata = { In this guide, you'll learn how to integrate Medusa with ShipStation. + + +Refer your technical team to this guide to integrate ShipStation with your Medusa application. You can then enable it using the Medusa Admin as explained in [this user guide](!user-guide!/settings/locations-and-shipping/locations#manage-fulfillment-providers). + + + When you install a Medusa application, you get a fully-fledged commerce platform with support for customizations. Medusa's [Fulfillment Module](../../../commerce-modules/fulfillment/page.mdx) provides fulfillment-related resources and functionalities in your store, but it delegates the processing and shipment of order fulfillments to providers that you can integrate. [ShipStation](https://shipstation.com/) is a shipping toolbox that connects all your shipping providers within one platform. By integrating it with Medusa, you can allow customers to choose from different providers like DHL and FedEx and view price rates retrieved from ShipStation. Admin users will also process the order fulfillment using the ShipStation integration. diff --git a/www/apps/resources/app/integrations/page.mdx b/www/apps/resources/app/integrations/page.mdx index e5b51d03094f9..aa4cedafc5cdd 100644 --- a/www/apps/resources/app/integrations/page.mdx +++ b/www/apps/resources/app/integrations/page.mdx @@ -10,6 +10,12 @@ You can integrate any third-party service to Medusa, including storage services, Medusa provides integrations out-of-the-box that are listed here, but you can also create your own integrations, such as integrating ERP systems, as explained in [this guide](!docs!/learn/customization/integrate-systems). + + +This section holds guides to help technical teams add integrations to a Medusa application. If you're not a technical user, refer your technical team to this documentation instead. + + + ## Auth An Auth Module Provider authenticates users with their account on a third-party service. diff --git a/www/apps/resources/app/nextjs-starter/page.mdx b/www/apps/resources/app/nextjs-starter/page.mdx index 91d1819c05dfb..3513d656a57bb 100644 --- a/www/apps/resources/app/nextjs-starter/page.mdx +++ b/www/apps/resources/app/nextjs-starter/page.mdx @@ -13,6 +13,12 @@ The Medusa application is made up of a Node.js server and an admin dashboard. Th Our Next.js Starter is a good place to start building your storefront. The Next.js Starter storefront provides rich commerce features and a sleek design. Developers and businesses can use it as-is or build on top of it to tailor it for the business's unique use case, design, and customer experience. + + +This guide helps technical users set up the Next.js Start storefront. If you're not a technical user, refer your technical team to this documentation instead. + + + ## Installation ### Approach 1: Install with Medusa Application diff --git a/www/apps/resources/app/page.mdx b/www/apps/resources/app/page.mdx index fd87042fa19de..78b33b6a05ac0 100644 --- a/www/apps/resources/app/page.mdx +++ b/www/apps/resources/app/page.mdx @@ -28,6 +28,12 @@ import { Explore Medusa's commerce modules, SDKs, configurations, recipes, and more. + + +Check out the [Meduse Admin User Guide](!user-guide!) to learn how to manage your store. + + + Follow the [Medusa Docs](!docs!/learn) to become an advanced Medusa developer. diff --git a/www/apps/resources/app/plugins/page.mdx b/www/apps/resources/app/plugins/page.mdx index 45ee1dc7e358e..34ec39e66be87 100644 --- a/www/apps/resources/app/plugins/page.mdx +++ b/www/apps/resources/app/plugins/page.mdx @@ -18,4 +18,10 @@ Learn more about plugins and their difference from modules in [this documentatio ## Guides + + +The sections in this guide help technical users build plugins in Medusa. If you're not a technical user, refer your technical team to this documentation instead. + + + diff --git a/www/apps/resources/app/recipes/b2b/page.mdx b/www/apps/resources/app/recipes/b2b/page.mdx index 9726234407e92..39a0b60415f56 100644 --- a/www/apps/resources/app/recipes/b2b/page.mdx +++ b/www/apps/resources/app/recipes/b2b/page.mdx @@ -34,12 +34,20 @@ Use sales channels to set product availability per channel. In this case, create You can create a sales channel through the Medusa Admin or Admin REST APIs. - + --- @@ -56,21 +64,37 @@ You can create a publishable API key through the Medusa Admin or the Admin REST ### Create Key - + ### Associate Key with Sales Channel - + --- @@ -80,21 +104,37 @@ You can create new products or add existing ones to the B2B sales channel using ### Create Products - + ### Add Products to Sales Channel - + --- @@ -110,25 +150,17 @@ You can create a B2B module that adds necessary data models to represent a B2B c { href: "!docs!/learn/fundamentals/modules", title: "Create Module", - text: "Learn how to create a module in Medusa.", + text: "Learn how to create a module.", icon: AcademicCapSolid, }, { - href: "!docs!/learn/fundamentals/modules#1-create-data-model", - title: "Create Data Models", - text: "Learn how to create data models.", + href: "!docs!/learn/fundamentals/module-links", + title: "Define Module Links", + text: "Define links between data models.", icon: AcademicCapSolid, }, ]} /> - - ## Add B2B Customers After adding your B2B customer group, add B2B customers and assign them to the B2B customer group. @@ -137,21 +169,37 @@ You can do that through the Medusa Admin or Admin REST APIs. ### Create Customers - + ### Assign Customers to Groups - + --- @@ -161,12 +209,20 @@ Use price lists to set different prices for each B2B customer group, among other You can create a price list using the Medusa Admin or the Admin REST APIs. Make sure to set the B2B customer group as a condition. - + --- diff --git a/www/apps/resources/app/recipes/commerce-automation/page.mdx b/www/apps/resources/app/recipes/commerce-automation/page.mdx index 3390d313630ed..ede0cfc9d5902 100644 --- a/www/apps/resources/app/recipes/commerce-automation/page.mdx +++ b/www/apps/resources/app/recipes/commerce-automation/page.mdx @@ -1,11 +1,10 @@ import { AcademicCapSolid, BoltSolid } from "@medusajs/icons" -import { BetaBadge } from "docs-ui" export const metadata = { title: `Commerce Automation Recipe`, } -# {metadata.title} +# {metadata.title} This recipe provides the general steps to implement commerce automation with Medusa. @@ -36,11 +35,11 @@ Customer support is essential to build a store's brand and customer loyalty. Thi You can use the Notification Module to send notifications when an action is triggered, such as when a customer or their order is updated. -{/* + -The [Events reference](../../events-reference/page.mdx) shows an extensive list of events triggered by the each commerce module. +The [Events reference](../../events-reference/page.mdx) shows an extensive list of events triggered for each commerce module. - */} + Medusa also provides Notification Module Providers that integrate with third-party services, such as SendGrid. @@ -77,211 +76,6 @@ To implement that: icon={AcademicCapSolid} /> -
- - For example, create the file `src/workflows/sync-products.ts` with the following content: - -export const syncProductsWorkflowHighlight = [ - ["20", "retrieveStoreStep", "A step that retrieves the store by its ID."], - ["36", "retrieveProductsToUpdateStep", "A step that retrieves the products to update based on a last update date."], - ["56", "syncProductsStep", "A step to sync the product with a third-party service."], - ["59", "productSyncModuleService", "Assuming this is a custom module's main service that provides connection to the third-party service."], - ["63", "productsBeforeSync", "Retrieve old product data from third-party service for compensation function."], - ["68", "sync", "Sync the product data in the third-party service."], - ["72", "", "Pass products data before sync to compensation function."], - ["75", "", "A compensation function to revert the sync when an error occurs."], - ["81", "sync", "Revert the product's data in the third-party service to its old data before the synchronization."], - ["90", "updateStoreLastSyncStep", "A step to update the `last_sync_data` of the store."], - ["96", "prevLastSyncDate", "Retrieve the previous value of `last_sync_date` to pass it to compensation function."], - ["98", "update", "Update the `last_sync_date` of the store."], - ["106", "", "Pass previous last sync date to compensation function."], - ["109", "", "A compensation function to revert the update of `last_sync_data` if an error occurs."], - ["125", "syncProductsWorkflow", "Define the workflow that uses the above steps."] -] - - ```ts title="src/workflows/sync-products.ts" highlights={syncProductsWorkflowHighlight} collapsibleLines="1-16" expandButtonLabel="Show Imports" - import { - Modules, - } from "@medusajs/framework/utils" - import { - IProductModuleService, - IStoreModuleService, - ProductDTO, - StoreDTO, - } from "@medusajs/framework/types" - import { - StepResponse, - createStep, - createWorkflow, - } from "@medusajs/framework/workflows-sdk" - - type RetrieveStoreStepInput = { - id: string - } - - const retrieveStoreStep = createStep( - "retrieve-store-step", - async ({ id }: RetrieveStoreStepInput, { container }) => { - const storeModuleService: IStoreModuleService = - container.resolve(Modules.STORE) - - const store = await storeModuleService.retrieveStore(id) - - return new StepResponse({ store }) - } - ) - - type RetrieveProductsToUpdateStepInput = { - last_sync_date?: string - } - - const retrieveProductsToUpdateStep = createStep( - "retrieve-products-to-update-step", - async ({ last_sync_date }: RetrieveProductsToUpdateStepInput, { container }) => { - const productModuleService: IProductModuleService = - container.resolve(Modules.PRODUCT) - - const products = await productModuleService.listProducts({ - updated_at: { - $gt: last_sync_date, - }, - }) - - return new StepResponse({ products }) - } - ) - - type SyncProductsStepInput = { - products: ProductDTO[] - } - - const syncProductsStep = createStep( - "sync-products-step", - async ({ products }: SyncProductsStepInput, { container }) => { - const productSyncModuleService = container.resolve( - "productSyncModuleService" - ) - - const productsBeforeSync = await productSyncModuleService.listProductSyncs({ - id: products.map((product) => product.id), - }) - - for (const product of products) { - await productSyncModuleService.sync(product) - } - - return new StepResponse({}, { - products: productsBeforeSync, - }) - }, - async ({ products }, { container }) => { - const productSyncModuleService = container.resolve( - "productSyncModuleService" - ) - - for (const product of products) { - await productSyncModuleService.sync(product) - } - } - ) - - type UpdateStoreLastSyncStepInput = { - store: StoreDTO - } - - const updateStoreLastSyncStep = createStep( - "update-store-last-sync-step", - async ({ store }: UpdateStoreLastSyncStepInput, { container }) => { - const storeModuleService: IStoreModuleService = - container.resolve(Modules.STORE) - - const prevLastSyncDate = store.metadata.last_sync_date - - await storeModuleService.updateStores(store.id, { - metadata: { - last_sync_date: (new Date()).toString(), - }, - }) - - return new StepResponse({}, { - id: store.id, - last_sync_date: prevLastSyncDate, - }) - }, - async ({ id, last_sync_date }, { container }) => { - const storeModuleService: IStoreModuleService = - container.resolve(Modules.STORE) - - await storeModuleService.updateStores(id, { - metadata: { - last_sync_date, - }, - }) - } - ) - - type SyncProductsWorkflowInput = { - store_id: string - } - - export const syncProductsWorkflow = createWorkflow( - "sync-products-workflow", - function ({ store_id }: SyncProductsWorkflowInput) { - const { store } = retrieveStoreStep({ - id: store_id, - }) - - const { products } = retrieveProductsToUpdateStep({ - last_sync_date: store.metadata.last_sync_date, - }) - - syncProductsStep({ - products, - }) - - updateStoreLastSyncStep({ - store, - }) - } - ) - ``` - - This creates a workflow with the following steps: - - 1. Retrieve the store by its ID. - 2. Retrieve products to update based on the last date and time the products were synced. The last sync date is retrieved from the store's `metadata` property. - 3. Sync the retrieved products with a third-party service. It's assumed that the connection to the third-party service is implemented within a custom module's main service. - 4. Update the last sync date of the store to the current date. - - Then, create a scheduled job at `src/jobs/sync-products.ts` that executes the workflow at the specified interval: - - ```ts - import { MedusaContainer } from "@medusajs/framework/types" - import { - syncProductsWorkflow, - } from "../workflows/sync-products" - - export default async function syncProductsJob( - container: MedusaContainer - ) { - await syncProductsWorkflow(container) - .run({ - input: { - name: "John", - }, - }) - } - - export const config = { - name: "sync-products", - // execute every minute - schedule: "0 0 * * *", - numberOfExecutions: 3, - } - ``` - -
- --- ## Order Management Automation @@ -290,20 +84,7 @@ Using Medusa's architecture and commerce features, you can automate a large amou To handle events within an order flow and automate actions, create a subscriber. For example, create a subscriber that listens to the `order.placed` event and automatically creates a fulfillment if predefined conditions are met. - - -The `order.placed` event is currently not emitted. - - - - - -{/* */} +]} /> --- @@ -361,12 +142,6 @@ For example, to group customers with over twenty orders: 1. Create a subscriber that listens to the `order.placed` event. 2. If the customer has more than 20 orders, add them to the VIP customer group. - - -The `order.placed` event is currently not emitted. - - - -
- - Here’s an example of a subscriber that listens to the `order.placed` event and checks whether the customer should be added to the VIP customer group based on their number of orders: - - - - The `order.placed` event is currently not emitted. - - - - ```ts title="src/subscribers/add-custom-to-vip.ts" collapsibleLines="1-12" expandButtonLabel="Show Imports" - import type { - SubscriberArgs, - SubscriberConfig, - } from "@medusajs/framework" - import { - Modules, - } from "@medusajs/framework/utils" - import { - ICustomerModuleService, - IOrderModuleService, - } from "@medusajs/framework/types" - - export default async function orderCreatedHandler({ - event: { data }, - container, - }: SubscriberArgs<{ id: string }>) { - const orderId = data.id - - const orderModuleService: IOrderModuleService = container - .resolve(Modules.ORDER) - - const customerModuleService: - ICustomerModuleService = container.resolve( - Modules.CUSTOMER - ) - - // check if VIP group exists - const vipGroup = await customerModuleService - .listCustomerGroups({ - name: "VIP", - }, { - relations: ["customers"], - }) - - if (!vipGroup.length) { - return - } - - // retrieve the order - const order = await orderModuleService.retrieveOrder(orderId) - - if (!order || - !order.customer_id || - vipGroup[0].customers.find( - (customer) => customer.id === order.customer_id - ) !== undefined) { - return - } - - const [, count] = await orderModuleService.listAndCountOrders({ - customer_id: order.customer_id, - }) - - if (count < 20) { - return - } - - // add customer to VIP group - await customerModuleService.addCustomerToGroup({ - customer_group_id: vipGroup[0].id, - customer_id: order.customer_id, - }) - } - - export const config: SubscriberConfig = { - event: "order.placed", - } - ``` - -
- - --- ## Marketing Automation @@ -495,99 +193,3 @@ You can also create a scheduled job that checks whether the number of new produc icon: AcademicCapSolid, }, ]} /> - -
- - For example, create the file `src/subscribers/send-products-newsletter.ts` with the following content: - -export const newsletterHighlights = [ - ["32", "store", "Retrieve the first store in the application."], - ["34", "products", "Retrieve the products created since the last newsletter send date."], - ["40", "", "Check whether more than 10 products have been created before proceeding."], - ["44", "customers", "Retrieve all customers, assuming they're considered subscribed."], - ["46", "createNotifications", "Send a notification (newsletter) to each customer using the Notification Module."], - ["49", '"email"', "Send the notification through the email channel."], - ["50", '"newsletter_template"', "Specify the template name in the third-party service (for example, SendGrid)."], - ["52", "products", "Pass the created products to the template."], - ["57", "updateStores", "Update the store's `last_newsletter_send_date` property with the current date."] -] - - ```ts title="src/subscribers/send-products-newsletter.ts" highlights={newsletterHighlights} collapsibleLines="1-14" expandButtonLabel="Show Imports" - import type { - SubscriberArgs, - SubscriberConfig, - } from "@medusajs/framework" - import { - Modules, - } from "@medusajs/framework/utils" - import { - ICustomerModuleService, - IProductModuleService, - IStoreModuleService, - INotificationModuleService, - } from "@medusajs/framework/types" - - export default async function productCreateHandler({ - container, - }: SubscriberArgs<{ id: string }>) { - const productModuleService: IProductModuleService = - container.resolve(Modules.PRODUCT) - - const storeModuleService: IStoreModuleService = - container.resolve(Modules.STORE) - - const customerModuleService: ICustomerModuleService = - container.resolve(Modules.CUSTOMER) - - const notificationModuleService: - INotificationModuleService = container.resolve( - Modules.NOTIFICATION - ) - - const store = (await storeModuleService.listStores())[0] - - const products = await productModuleService.listProducts({ - created_at: { - $gt: store.metadata.last_newsletter_send_date, - }, - }) - - if (products.length < 10) { - return - } - - const customers = await customerModuleService.listCustomers() - - await notificationModuleService.createNotifications( - customers.map((customer) => ({ - to: customer.email, - channel: "email", - template: "newsletter_template", - data: { - products, - }, - })) - ) - - await storeModuleService.updateStores(store.id, { - metadata: { - last_newsletter_send_date: (new Date()).toString(), - }, - }) - } - - export const config: SubscriberConfig = { - event: "product.created", - } - ``` - - In the subscriber function, you: - - 1. Retrieve the first store in our application. - 2. Retrieve products created since the last time a newsletter is sent. The last send date is stored in the store's `metadata` property. - 3. If the count of last created products is less than 10, stop execution. - 4. Retrieve all customers. Here, it's assumed that all customers are considered subscribed for simplicity. - 5. Use the Notification Module to send a notification to the customer. This uses the Notification Module Provider configured for the `email` channel. - 6. Update the store's `last_newsletter_send_date` with the current date. - -
diff --git a/www/apps/resources/app/recipes/digital-products/page.mdx b/www/apps/resources/app/recipes/digital-products/page.mdx index 568fdddd0b1e7..d2643dc8bf138 100644 --- a/www/apps/resources/app/recipes/digital-products/page.mdx +++ b/www/apps/resources/app/recipes/digital-products/page.mdx @@ -1,5 +1,4 @@ import { AcademicCapSolid, BoltSolid, PuzzleSolid } from "@medusajs/icons" -import { LearningPath } from "docs-ui" export const metadata = { title: `Digital Products Recipe`, @@ -70,8 +69,8 @@ Then, you can link your custom data model to data models from other modules. For }, { href: "!docs!/learn/fundamentals/module-links", - title: "Module Links", - text: "Learn how to link data models of different modules.", + title: "Define Module Links", + text: "Define links between data models.", icon: AcademicCapSolid, }, ]} /> @@ -173,12 +172,6 @@ When a customer purchases a digital product, they should receive a link to downl You can create or install a fulfillment module provider that handles the logic of fulfilling the digital product. - - -Fulfillment providers are under development. - - - - - - ### Payment and Fulfillment Providers -Merchants choose which payment and fulfillment providers are available in each region. For example, one region can use Payment Provider A and B while another only uses Payment Provider B. +Merchants choose which payment providers are available in each region. For example, one region can use Payment Provider A and B while another only uses Payment Provider B. Merchants can also choose the fulfillment providers available in each stock location, and provide shipping options using the providers in those locations. -During checkout, customers only see the payment providers and shipping options configured for the region. This lets you give customers a localized experience that feels familiar and instills trust. +During checkout, customers only see the payment providers configured for the region, and they can only choose shipping options that can be used to fulfill items to their shipping address. This allows merchants to give customers a localized experience that feels familiar and instills trust. Medusa provides official module providers for payment and fulfillment. You can also create custom module providers. + + + --- ## Prices Per Region and Currency -Merchants sets the price of a product price per currency and region. This also applies to adding sales or overriding prices for specific conditions using the Pricing Module's features. +Merchants set the price of a product's variants per currency and region. This also applies to adding sales or overriding prices for specific conditions. -Using the tax-inclusive feature, merchants can specify prices including taxes per currency and region. Medusa then calculates the tax amount applied to a line item in the cart based on the region's tax configurations. +Using the tax-inclusive feature, merchants can also specify prices including taxes per currency and region. Medusa then calculates the tax amount applied to a line item in the cart based on the region's tax configurations. @@ -154,11 +131,19 @@ A multi-regional setup lets merchants manage their inventory through Medusa acro By integrating a third-party Content Management Systems (CMS), you benefit from rich content features including managing your content in multiple languages. This allows you to cater to customers’ different languages in the regions you serve. -To integrate a third-party system, create a custom module whose main service connects to that third-party service. +To integrate a third-party system, create a custom module whose main service connects to that third-party service. You can also follow the [Sanity integration guide](../../integrations/guides/sanity/page.mdx) to integrate Sanity with Medusa. - + \ No newline at end of file diff --git a/www/apps/resources/app/recipes/omnichannel/page.mdx b/www/apps/resources/app/recipes/omnichannel/page.mdx index 078c341c240cf..3d160a868fbd3 100644 --- a/www/apps/resources/app/recipes/omnichannel/page.mdx +++ b/www/apps/resources/app/recipes/omnichannel/page.mdx @@ -1,5 +1,4 @@ import { AcademicCapSolid, BoltSolid } from "@medusajs/icons" -import { LearningPath } from "docs-ui" export const metadata = { title: `Omnichannel Commerce Recipe`, @@ -15,7 +14,7 @@ Merchants selling across different channels need an efficient way to manage thei Omnichannel commerce also provides customers a seamless shopping experience, regardless of where they’re shopping. Whether they’re buying your products from your online store, a marketplace like Amazon, or through social media, you provide them with a good experience and handle orders consistently. -Medusa’s modular architecture facilitates building omnichannel commerce, as your server and storefront aren’t tightly coupled. You can also use the Sales Channel Module's features to expand your business into other avenues like marketplaces and social commerce. +Medusa’s modular architecture facilitates building omnichannel commerce, as your server and storefront aren’t tightly coupled. You can also use the [Sales Channel Module](../../commerce-modules/sales-channel/page.mdx)'s features to expand your business into other avenues like marketplaces and social commerce. --- diff --git a/www/apps/resources/app/recipes/oms/page.mdx b/www/apps/resources/app/recipes/oms/page.mdx index b1476af34f859..a607a722031a2 100644 --- a/www/apps/resources/app/recipes/oms/page.mdx +++ b/www/apps/resources/app/recipes/oms/page.mdx @@ -48,14 +48,16 @@ For example, you can support importing orders into Medusa through a custom API R text: "Learn how to create a custom API Route.", icon: AcademicCapSolid, }, - { - href: "!docs!/learn/fundamentals/scheduled-jobs", - title: "Create Scheduled Jobs", - text: "Learn how to create a scheduled job.", - icon: AcademicCapSolid, - } ]} /> + + --- ## Route Orders to Third-party Fulfillment Services @@ -68,12 +70,6 @@ Medusa uses the Fulfillment Module whenever a fulfillment action is performed, s In addition, create a subscriber that listen to fulfillment-related events, such as the `order.fulfillment_created` event, to perform actions with the third-party fulfillment provider. - - -Emitting of event `order.fulfillment_created` isn't implemented yet. - - - + + --- ## Process Payment with Third-Party Providers To integrate third-party payment providers with the Medusa application, create a payment module provider. -In addition, create a subscriber that listen to payment-related events, such as the `order.payment_captured` event, to perform actions in the third-party payment provider. - - - -Emitting of event `order.payment_captured` isn't implemented yet. - - +In addition, create a subscriber that listen to payment-related events, such as the `payment.captured` event, to perform actions in the third-party payment provider. + + --- ## Track Inventory Across Sales Channels @@ -153,24 +159,12 @@ When an order is placed, the item's quantity is reserved from the stock location ## Handle Returns, Exchanges, and Changes - - -All types of order changes are coming soon. - - - -In Medusa, items in an order can be returned or exchanged; these can be created by the merchant or requested by the customer. A merchant can also edit an order to add, update, or delete items. +In Medusa, items in an order can be returned or exchanged. A merchant can also edit an order to add, update, or delete items. When changes are made to an order by any of the mentioned actions, the changes are reflected on the order's totals and associated inventory. The integrated fulfillment and payment module providers are used if fulfillment or payment actions are required, such as fulfilling exchanged items. Medusa also emits events related to these actions, such as `order.return_requested`. So, you can create a subscriber that listens to these events and perform asynchronous actions, such as communicating with third-party services. - - -Emitting of event `order.return_requested` isn't implemented yet. - - - + + diff --git a/www/apps/resources/app/recipes/personalized-products/page.mdx b/www/apps/resources/app/recipes/personalized-products/page.mdx index 24ee70e236b81..5dc856aaa692f 100644 --- a/www/apps/resources/app/recipes/personalized-products/page.mdx +++ b/www/apps/resources/app/recipes/personalized-products/page.mdx @@ -1,5 +1,4 @@ import { AcademicCapSolid, NextJs } from "@medusajs/icons" -import { LearningPath } from "docs-ui" export const metadata = { title: `Personalized Products Recipe`, @@ -44,7 +43,7 @@ Two line items in the cart having different `metadata` attributes are not consid
-In more complex cases, you can create a custom module that stores and manages the personalization data models. You can also create a relationship between these data models and the `LineItem` data model. +In more complex cases, you can create a custom module that stores and manages the personalization data models. You can also create a link between these data models and the `LineItem` data model. --- ## Build a Custom Storefront -Due to Medusa's modular architecture, there are no restrictions on the framework you use to build the storefront, or design and experience you provide customers. The storefront connects to the Medusa application using the Store API Routes. +Medusa's modular architecture removes any restrictions on the framework you use to build the storefront, or design and experience you provide customers. The storefront connects to the Medusa application using the Store API Routes. You can build a unique experience around your products that focuses on the customer’s personalization capabilities. @@ -121,7 +120,7 @@ The Fulfillment Module registers your fulfillment module provider to use it to f diff --git a/www/apps/resources/app/recipes/pos/page.mdx b/www/apps/resources/app/recipes/pos/page.mdx index 17ac3fe827af6..0b86b86858835 100644 --- a/www/apps/resources/app/recipes/pos/page.mdx +++ b/www/apps/resources/app/recipes/pos/page.mdx @@ -1,5 +1,4 @@ import { AcademicCapSolid } from "@medusajs/icons" -import { LearningPath } from "docs-ui" export const metadata = { title: `Point-of-Sale (POS) Recipe`, @@ -68,50 +67,13 @@ To search through product variants by their barcode, create a custom API Route a ]} /> -
- -Here’s an example of creating a custom API Route at `/store/pos/search-barcode` that searches product variants by a barcode: - - ```ts title="src/api/store/pos/search-barcode/route.ts" collapsibleLines="1-8" expandButtonLabel="Show Imports" - import type { - MedusaRequest, - MedusaResponse, - } from "@medusajs/framework/http" - import { MedusaError } from "@medusajs/framework/utils" - import { Modules } from "@medusajs/framework/utils" - import { IProductModuleService } from "@medusajs/framework/types" - -export const GET = async (req: MedusaRequest, res: MedusaResponse) => { - const barcode = (req.query.barcode as string) || "" - if (!barcode) { - throw new MedusaError(MedusaError.Types.INVALID_DATA, "Barcode is required") - } - // get product service - const productModuleService: IProductModuleService = req.scope.resolve( - Modules.PRODUCT - ) - - // retrieve product variants by barcode - const productVariants = await productModuleService.listProductVariants({ - // @ts-ignore - barcode, - }) - - res.json({ - product_variants: productVariants, - }) -} -``` - -
- --- ## Access Accurate Inventory Details As you manage an online and offline store, it's essential to separate inventory quantity across different locations. -Medusa's Inventory, Stock Location, and Sales Channel modules allow merchants to manage the inventory items and their availability across locations and sales channels. +Medusa's [Inventory](../../commerce-modules/inventory/page.mdx), [Stock Location](../../commerce-modules/stock-location/page.mdx), and [Sales Channel](../../commerce-modules/sales-channel/page.mdx) modules allow merchants to manage the inventory items and their availability across locations and sales channels. ![Using Multi-warehouse features with POS](https://res.cloudinary.com/dza7lstvk/image/upload/v1709034731/Medusa%20Book/pos-multiwarehouse_r1z48x.jpg) @@ -133,22 +95,24 @@ This also opens the door for other business opportunities, such as an endless ai text: "Learn about the Stock Location Module.", icon: AcademicCapSolid, }, - { - href: "/commerce-modules/sales-channel", - title: "Sales Channel Module", - text: "Learn about the Sales Channel Module.", - icon: AcademicCapSolid, - }, ]} /> + + --- ## Build an Omni-channel Customer Experience -Using Medusa's Customer Module, you can retrieve a customer's details from the Medusa application and place an order on the POS under their account. The customer can then view their order details on their online profile as if they had placed the order online. +Using Medusa's [Customer Module](../../commerce-modules/customer/page.mdx), you can retrieve a customer's details from the Medusa application and place an order on the POS under their account. The customer can then view their order details on their online profile as if they had placed the order online. -In addition, using Medusa's Promotion Module, store operators can create promotions on the fly for customers using the POS system and apply them to their orders. +In addition, using Medusa's [Promotion Module](../../commerce-modules/promotion/page.mdx), store operators can create promotions on the fly for customers using the POS system and apply them to their orders. You can also create custom modules to provide features for a better customer experience, such as a rewards system or loyalty points. @@ -166,15 +130,17 @@ You can also create custom modules to provide features for a better customer exp text: "Learn about the Promotion Module.", icon: AcademicCapSolid, }, - { - href: "!docs!/learn/fundamentals/modules", - title: "Create a Module", - text: "Learn how to create a module.", - icon: AcademicCapSolid, - }, ]} /> + + --- ## Accept Payment, Place Order, and Use RMA Features diff --git a/www/apps/resources/app/recipes/subscriptions/page.mdx b/www/apps/resources/app/recipes/subscriptions/page.mdx index 276bfc7e1685a..720715a27301c 100644 --- a/www/apps/resources/app/recipes/subscriptions/page.mdx +++ b/www/apps/resources/app/recipes/subscriptions/page.mdx @@ -1,5 +1,4 @@ import { AcademicCapSolid, Github } from "@medusajs/icons" -import { LearningPath } from "docs-ui" export const metadata = { title: `Subscriptions Recipe`, @@ -77,7 +76,7 @@ Implementing the logic depends on your use case, but you'll mainly implement the 1. Create an API route in place of the [Complete Cart Store API Route](!api!/store#carts_postcartsidcomplete) that creates a subscription for the order. 2. Create a scheduled job that checks daily for subscriptions that need renewal. -3. Create a scheduled job that checks daily for subscriptions that are expired. +3. Create another scheduled job that checks daily for subscriptions that are expired. -{/* TODO add a link to cart object in API reference (once available). */} - The response of the Create Cart API route has a `cart` field, which is a cart object. Refer to the [Create Cart API reference](!api!/store#carts_postcarts) for details on other available request parameters. diff --git a/www/apps/resources/app/storefront-development/cart/retrieve/page.mdx b/www/apps/resources/app/storefront-development/cart/retrieve/page.mdx index fa34ede314adc..291a671495d32 100644 --- a/www/apps/resources/app/storefront-development/cart/retrieve/page.mdx +++ b/www/apps/resources/app/storefront-development/cart/retrieve/page.mdx @@ -118,9 +118,7 @@ export const highlights = [ -{/* TODO add a link to cart object in API reference (once available). */} - -The response of the Retrieve Cart API route has a `cart` field, which is a cart object. +The response of the [Get Cart API](!api!/store#carts_getcartsid) route has a `cart` field, which is a cart object. --- diff --git a/www/apps/resources/app/storefront-development/customers/addresses/page.mdx b/www/apps/resources/app/storefront-development/customers/addresses/page.mdx index 08f5871a6c7ba..abe1e2e2c308b 100644 --- a/www/apps/resources/app/storefront-development/customers/addresses/page.mdx +++ b/www/apps/resources/app/storefront-development/customers/addresses/page.mdx @@ -146,11 +146,7 @@ export const highlights = [ -The List Customer Addresses API route accepts pagination parameters to paginate the address. - -{/* TODO add a link to the address object */} - -It returns in the response the `addresses` field, which is an array of addresses. +The [List Customer Addresses API route](!api!/store#customers_getcustomersmeaddresses) accepts pagination parameters to paginate the address. It returns in the response the `addresses` field, which is an array of addresses. --- diff --git a/www/apps/resources/app/storefront-development/products/categories/products/page.mdx b/www/apps/resources/app/storefront-development/products/categories/products/page.mdx index 0dbdb208775b3..b8eb3161851d7 100644 --- a/www/apps/resources/app/storefront-development/products/categories/products/page.mdx +++ b/www/apps/resources/app/storefront-development/products/categories/products/page.mdx @@ -142,6 +142,4 @@ export const highlights = [ -{/* TODO add a link to product object in API reference (once available). */} - -The response has a `products` field, which is an array of products. +The response has a `products` field, which is an array of [products](!api!/store#products_product_schema). diff --git a/www/apps/resources/app/storefront-development/products/collections/list/page.mdx b/www/apps/resources/app/storefront-development/products/collections/list/page.mdx index f5270a22814ff..061c8f4bce439 100644 --- a/www/apps/resources/app/storefront-development/products/collections/list/page.mdx +++ b/www/apps/resources/app/storefront-development/products/collections/list/page.mdx @@ -96,9 +96,7 @@ export const highlights = [ -{/* TODO add link to product colleciton object */} - -The response has a `collections` field, which is an array of product collections. +The response has a `collections` field, which is an array of [product collections](!api!/store#collections_getcollections). --- diff --git a/www/apps/resources/app/storefront-development/products/collections/products/page.mdx b/www/apps/resources/app/storefront-development/products/collections/products/page.mdx index 9355204569359..50bf4d05d99d9 100644 --- a/www/apps/resources/app/storefront-development/products/collections/products/page.mdx +++ b/www/apps/resources/app/storefront-development/products/collections/products/page.mdx @@ -144,6 +144,4 @@ export const highlights = [ -{/* TODO add a link to product object in API reference (once available). */} - -The response has a `products` field, which is an array of products. +The response has a `products` field, which is an array of [products](!api!/store#products_product_schema). diff --git a/www/apps/resources/app/storefront-development/products/collections/retrieve/page.mdx b/www/apps/resources/app/storefront-development/products/collections/retrieve/page.mdx index 0a06a5f5312cb..7631a6c5c5e2f 100644 --- a/www/apps/resources/app/storefront-development/products/collections/retrieve/page.mdx +++ b/www/apps/resources/app/storefront-development/products/collections/retrieve/page.mdx @@ -104,9 +104,7 @@ export const highlights = [ -{/* TODO add link to product colleciton object */} - -The response has a `collection` field, which is a product collection object. +The response has a `collection` field, which is a [product collection object](!api!/store#collections_collection_schema). --- diff --git a/www/apps/resources/app/storefront-development/products/list/page.mdx b/www/apps/resources/app/storefront-development/products/list/page.mdx index 2dee6abeb6530..0e63a7978b43c 100644 --- a/www/apps/resources/app/storefront-development/products/list/page.mdx +++ b/www/apps/resources/app/storefront-development/products/list/page.mdx @@ -97,9 +97,7 @@ export const highlights = [ -{/* TODO add a link to product object in API reference (once available). */} - -The response has a `products` field, which is an array of products. +The response has a `products` field, which is an array of [products](!api!/store#products_product_schema). --- diff --git a/www/apps/resources/app/storefront-development/products/retrieve/page.mdx b/www/apps/resources/app/storefront-development/products/retrieve/page.mdx index 91c06946a855a..8ba6926d84633 100644 --- a/www/apps/resources/app/storefront-development/products/retrieve/page.mdx +++ b/www/apps/resources/app/storefront-development/products/retrieve/page.mdx @@ -121,9 +121,7 @@ export const highlights = [ -{/* TODO add a link to product object in API reference (once available). */} - -The response has a `product` field, which is a product object. +The response has a `product` field, which is a [product object](!api!/store#products_product_schema). --- diff --git a/www/apps/resources/app/storefront-development/publishable-api-keys/page.mdx b/www/apps/resources/app/storefront-development/publishable-api-keys/page.mdx index 38fe011c02fb7..4b2ee1447c232 100644 --- a/www/apps/resources/app/storefront-development/publishable-api-keys/page.mdx +++ b/www/apps/resources/app/storefront-development/publishable-api-keys/page.mdx @@ -24,9 +24,7 @@ Publishable API keys are associated with sales channels. Then, when the publisha ## How to Create a Publishable API Key? -{/* TODO replace link with admin how-to guide once available. */} - -You create a publishable API key either using the Medusa Admin or the [Admin API routes](!api!/admin#api-keys_postapikeys). +You create a publishable API key either using the [Medusa Admin](!user-guide!/settings/developer/publishable-api-keys) or the [Admin API routes](!api!/admin#api-keys_postapikeys). For example, using the [Create API Key API Route](!api!/admin#api-keys_postapikeys): diff --git a/www/apps/resources/app/troubleshooting/page.mdx b/www/apps/resources/app/troubleshooting/page.mdx index b76fd2ac403ad..648bcc99737a7 100644 --- a/www/apps/resources/app/troubleshooting/page.mdx +++ b/www/apps/resources/app/troubleshooting/page.mdx @@ -6,4 +6,10 @@ export const metadata = { # {metadata.title} + + +The following troubleshooting guides are intended for technical users. If you're not a technical user, refer your technical team to this documentation. + + + \ No newline at end of file diff --git a/www/apps/resources/app/usage/page.mdx b/www/apps/resources/app/usage/page.mdx index 425765484a5b1..732f5f371e651 100644 --- a/www/apps/resources/app/usage/page.mdx +++ b/www/apps/resources/app/usage/page.mdx @@ -98,11 +98,3 @@ To opt out of analytics collection in the Medusa Admin, set the following enviro ```bash MEDUSA_FF_ANALYTICS=false ``` - -{/* TODO check steps after admin is ready */} - -{/* 2. Alternatively, on your Medusa Admin, you can disable tracking by following these steps: - 1. Go to Settings → Personal Information. - 2. In the Usage insights section, click on the “Edit preferences” button. - 3. Enable the “Opt out of sharing my usage data” toggle. - 4. Click on the “Submit and close” button. */} diff --git a/www/apps/resources/generated/edit-dates.mjs b/www/apps/resources/generated/edit-dates.mjs index cfbee90c57980..0f310245190d4 100644 --- a/www/apps/resources/generated/edit-dates.mjs +++ b/www/apps/resources/generated/edit-dates.mjs @@ -13,91 +13,91 @@ export const generatedEditDates = { "app/commerce-modules/cart/page.mdx": "2025-01-09T13:41:05.278Z", "app/commerce-modules/currency/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/currency/_events/page.mdx": "2024-07-03T19:27:13+03:00", - "app/commerce-modules/currency/page.mdx": "2025-01-09T13:41:04.697Z", + "app/commerce-modules/currency/page.mdx": "2025-02-26T11:18:00.338Z", "app/commerce-modules/customer/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/customer/_events/page.mdx": "2024-07-03T19:27:13+03:00", - "app/commerce-modules/customer/customer-accounts/page.mdx": "2024-10-08T12:20:44.769Z", - "app/commerce-modules/customer/page.mdx": "2025-01-09T13:41:05.014Z", + "app/commerce-modules/customer/customer-accounts/page.mdx": "2025-02-26T11:17:42.327Z", + "app/commerce-modules/customer/page.mdx": "2025-02-26T11:18:00.342Z", "app/commerce-modules/fulfillment/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/fulfillment/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/fulfillment/concepts/page.mdx": "2024-06-19T13:02:16+00:00", - "app/commerce-modules/fulfillment/fulfillment-provider/page.mdx": "2024-10-08T14:34:16.019Z", + "app/commerce-modules/fulfillment/fulfillment-provider/page.mdx": "2025-02-26T11:21:56.242Z", "app/commerce-modules/fulfillment/item-fulfillment/page.mdx": "2024-10-08T14:38:15.496Z", "app/commerce-modules/fulfillment/module-options/page.mdx": "2024-10-15T12:51:56.118Z", "app/commerce-modules/fulfillment/shipping-option/page.mdx": "2024-10-08T14:36:02.660Z", - "app/commerce-modules/fulfillment/page.mdx": "2025-01-09T13:41:05.614Z", + "app/commerce-modules/fulfillment/page.mdx": "2025-02-26T11:18:00.354Z", "app/commerce-modules/inventory/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/inventory/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/inventory/concepts/page.mdx": "2025-02-13T12:37:28.918Z", "app/commerce-modules/inventory/inventory-in-flows/page.mdx": "2025-01-08T12:21:12.157Z", - "app/commerce-modules/inventory/page.mdx": "2025-01-09T13:41:05.212Z", + "app/commerce-modules/inventory/page.mdx": "2025-02-26T11:18:00.353Z", "app/commerce-modules/order/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/order/_events/page.mdx": "2024-07-03T19:27:13+03:00", - "app/commerce-modules/order/claim/page.mdx": "2024-10-09T10:11:12.090Z", + "app/commerce-modules/order/claim/page.mdx": "2025-02-26T11:23:55.003Z", "app/commerce-modules/order/concepts/page.mdx": "2024-10-09T10:12:49.399Z", - "app/commerce-modules/order/exchange/page.mdx": "2024-10-09T10:15:52.698Z", + "app/commerce-modules/order/exchange/page.mdx": "2025-02-26T11:23:29.845Z", "app/commerce-modules/order/order-versioning/page.mdx": "2024-10-09T07:41:22.201Z", "app/commerce-modules/order/promotion-adjustments/page.mdx": "2024-10-09T10:19:19.333Z", - "app/commerce-modules/order/return/page.mdx": "2024-10-09T10:19:40.731Z", + "app/commerce-modules/order/return/page.mdx": "2025-02-26T11:22:49.675Z", "app/commerce-modules/order/tax-lines/page.mdx": "2024-10-09T10:22:49.335Z", "app/commerce-modules/order/transactions/page.mdx": "2024-10-09T10:23:36.485Z", - "app/commerce-modules/order/page.mdx": "2025-01-09T13:41:05.344Z", + "app/commerce-modules/order/page.mdx": "2025-02-26T11:18:00.361Z", "app/commerce-modules/payment/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/payment/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/payment/module-options/page.mdx": "2024-10-15T12:51:40.574Z", "app/commerce-modules/payment/payment/page.mdx": "2024-10-09T10:59:08.463Z", "app/commerce-modules/payment/payment-collection/page.mdx": "2024-10-09T10:56:49.510Z", "app/commerce-modules/payment/payment-flow/page.mdx": "2025-01-16T10:43:25.958Z", - "app/commerce-modules/payment/payment-provider/stripe/page.mdx": "2024-12-16T13:21:03.554Z", - "app/commerce-modules/payment/payment-provider/page.mdx": "2024-10-09T11:07:27.269Z", + "app/commerce-modules/payment/payment-provider/stripe/page.mdx": "2025-02-26T11:31:21.090Z", + "app/commerce-modules/payment/payment-provider/page.mdx": "2025-02-26T11:25:50.645Z", "app/commerce-modules/payment/payment-session/page.mdx": "2024-10-09T10:58:00.960Z", "app/commerce-modules/payment/webhook-events/page.mdx": "2024-11-19T11:45:02.167Z", - "app/commerce-modules/payment/page.mdx": "2025-01-31T09:38:17.917Z", + "app/commerce-modules/payment/page.mdx": "2025-02-26T11:18:00.361Z", "app/commerce-modules/pricing/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/pricing/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/pricing/concepts/page.mdx": "2024-10-09T13:37:25.678Z", "app/commerce-modules/pricing/price-calculation/page.mdx": "2024-10-09T13:43:14.038Z", "app/commerce-modules/pricing/price-rules/page.mdx": "2024-10-09T13:38:47.112Z", "app/commerce-modules/pricing/tax-inclusive-pricing/page.mdx": "2024-10-09T13:48:23.261Z", - "app/commerce-modules/pricing/page.mdx": "2025-01-09T13:41:04.553Z", + "app/commerce-modules/pricing/page.mdx": "2025-02-26T11:18:00.362Z", "app/commerce-modules/product/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/product/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/product/guides/price/page.mdx": "2024-12-25T15:10:37.730Z", "app/commerce-modules/product/guides/price-with-taxes/page.mdx": "2024-12-25T15:10:40.879Z", - "app/commerce-modules/product/page.mdx": "2025-01-09T13:41:04.786Z", + "app/commerce-modules/product/page.mdx": "2025-02-26T11:18:00.365Z", "app/commerce-modules/promotion/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/promotion/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/promotion/actions/page.mdx": "2024-10-09T14:49:01.645Z", "app/commerce-modules/promotion/application-method/page.mdx": "2024-06-26T07:55:59+00:00", - "app/commerce-modules/promotion/campaign/page.mdx": "2024-05-29T11:08:06+00:00", - "app/commerce-modules/promotion/concepts/page.mdx": "2025-01-13T11:34:55.221Z", - "app/commerce-modules/promotion/page.mdx": "2025-01-09T13:41:04.946Z", + "app/commerce-modules/promotion/campaign/page.mdx": "2025-02-26T11:32:24.484Z", + "app/commerce-modules/promotion/concepts/page.mdx": "2025-02-26T11:31:54.391Z", + "app/commerce-modules/promotion/page.mdx": "2025-02-26T11:18:00.366Z", "app/commerce-modules/region/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/region/_events/page.mdx": "2024-07-03T19:27:13+03:00", - "app/commerce-modules/region/page.mdx": "2025-01-09T13:41:05.146Z", + "app/commerce-modules/region/page.mdx": "2025-02-26T11:18:00.368Z", "app/commerce-modules/sales-channel/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/sales-channel/_events/page.mdx": "2024-07-03T19:27:13+03:00", - "app/commerce-modules/sales-channel/publishable-api-keys/page.mdx": "2024-10-15T14:21:38.353Z", - "app/commerce-modules/sales-channel/page.mdx": "2025-01-09T13:41:04.880Z", + "app/commerce-modules/sales-channel/publishable-api-keys/page.mdx": "2025-02-26T11:33:40.415Z", + "app/commerce-modules/sales-channel/page.mdx": "2025-02-26T11:18:00.368Z", "app/commerce-modules/stock-location/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/stock-location/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/stock-location/concepts/page.mdx": "2024-10-15T14:32:21.875Z", - "app/commerce-modules/stock-location/page.mdx": "2025-01-09T13:41:05.080Z", + "app/commerce-modules/stock-location/page.mdx": "2025-02-26T11:18:00.382Z", "app/commerce-modules/store/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/store/_events/page.mdx": "2024-07-03T19:27:13+03:00", - "app/commerce-modules/store/page.mdx": "2025-01-09T13:41:04.629Z", + "app/commerce-modules/store/page.mdx": "2025-02-26T11:18:00.382Z", "app/commerce-modules/tax/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/tax/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/tax/module-options/page.mdx": "2024-10-15T14:35:46.117Z", "app/commerce-modules/tax/tax-calculation-with-provider/page.mdx": "2024-10-15T14:43:00.700Z", - "app/commerce-modules/tax/tax-rates-and-rules/page.mdx": "2024-10-15T14:38:06.889Z", - "app/commerce-modules/tax/tax-region/page.mdx": "2024-10-15T14:36:47.028Z", - "app/commerce-modules/tax/page.mdx": "2025-01-09T13:41:05.680Z", + "app/commerce-modules/tax/tax-rates-and-rules/page.mdx": "2025-02-26T11:35:15.214Z", + "app/commerce-modules/tax/tax-region/page.mdx": "2025-02-26T11:34:21.259Z", + "app/commerce-modules/tax/page.mdx": "2025-02-26T11:18:00.382Z", "app/commerce-modules/user/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/user/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/user/module-options/page.mdx": "2024-09-30T08:43:53.171Z", - "app/commerce-modules/user/user-creation-flows/page.mdx": "2024-10-15T14:51:37.311Z", - "app/commerce-modules/user/page.mdx": "2025-01-09T13:41:05.543Z", + "app/commerce-modules/user/user-creation-flows/page.mdx": "2025-02-26T11:35:54.685Z", + "app/commerce-modules/user/page.mdx": "2025-02-26T11:18:00.382Z", "app/commerce-modules/page.mdx": "2024-12-23T14:38:21.064Z", "app/contribution-guidelines/docs/page.mdx": "2024-12-12T11:06:12.250Z", "app/create-medusa-app/page.mdx": "2025-01-16T10:00:25.975Z", @@ -105,25 +105,25 @@ export const generatedEditDates = { "app/deployment/medusa-application/railway/page.mdx": "2025-02-24T07:35:43.421Z", "app/deployment/storefront/vercel/page.mdx": "2025-01-06T12:19:31.142Z", "app/deployment/page.mdx": "2024-11-25T14:31:45.277Z", - "app/integrations/page.mdx": "2024-12-16T16:46:12.395Z", + "app/integrations/page.mdx": "2025-02-26T11:37:17.771Z", "app/medusa-cli/page.mdx": "2024-08-28T11:25:32.382Z", "app/medusa-container-resources/page.mdx": "2025-01-06T11:19:35.623Z", "app/medusa-workflows-reference/page.mdx": "2025-01-20T08:21:29.962Z", - "app/nextjs-starter/page.mdx": "2025-01-06T12:19:31.143Z", - "app/recipes/b2b/page.mdx": "2025-01-29T11:35:23.247Z", - "app/recipes/commerce-automation/page.mdx": "2024-10-16T08:52:01.585Z", + "app/nextjs-starter/page.mdx": "2025-02-26T11:37:47.137Z", + "app/recipes/b2b/page.mdx": "2025-02-26T12:36:59.567Z", + "app/recipes/commerce-automation/page.mdx": "2025-02-26T12:38:15.404Z", "app/recipes/digital-products/examples/standard/page.mdx": "2025-02-13T15:24:15.868Z", - "app/recipes/digital-products/page.mdx": "2025-01-06T11:19:35.623Z", - "app/recipes/ecommerce/page.mdx": "2024-10-22T11:01:01.218Z", + "app/recipes/digital-products/page.mdx": "2025-02-26T12:37:12.721Z", + "app/recipes/ecommerce/page.mdx": "2025-02-26T12:20:52.092Z", "app/recipes/marketplace/examples/vendors/page.mdx": "2025-02-20T07:20:47.970Z", "app/recipes/marketplace/page.mdx": "2024-10-03T13:07:44.153Z", - "app/recipes/multi-region-store/page.mdx": "2024-10-03T13:07:13.813Z", - "app/recipes/omnichannel/page.mdx": "2024-10-03T13:07:14.384Z", - "app/recipes/oms/page.mdx": "2024-07-01T10:21:19+03:00", - "app/recipes/personalized-products/page.mdx": "2024-10-03T13:07:44.153Z", - "app/recipes/pos/page.mdx": "2024-10-03T13:07:13.964Z", + "app/recipes/multi-region-store/page.mdx": "2025-02-26T12:38:50.292Z", + "app/recipes/omnichannel/page.mdx": "2025-02-26T12:22:08.331Z", + "app/recipes/oms/page.mdx": "2025-02-26T12:41:00.030Z", + "app/recipes/personalized-products/page.mdx": "2025-02-26T12:41:48.547Z", + "app/recipes/pos/page.mdx": "2025-02-26T12:42:52.949Z", "app/recipes/subscriptions/examples/standard/page.mdx": "2025-02-11T14:21:09.533Z", - "app/recipes/subscriptions/page.mdx": "2024-10-03T13:07:44.155Z", + "app/recipes/subscriptions/page.mdx": "2025-02-26T12:31:49.933Z", "app/recipes/page.mdx": "2024-07-11T15:56:41+00:00", "app/service-factory-reference/methods/create/page.mdx": "2024-07-31T17:01:33+03:00", "app/service-factory-reference/methods/delete/page.mdx": "2024-07-31T17:01:33+03:00", @@ -136,9 +136,9 @@ export const generatedEditDates = { "app/service-factory-reference/tips/filtering/page.mdx": "2024-07-31T17:01:33+03:00", "app/service-factory-reference/page.mdx": "2024-07-26T14:40:56+00:00", "app/storefront-development/cart/context/page.mdx": "2025-01-06T16:00:34.296Z", - "app/storefront-development/cart/create/page.mdx": "2025-01-06T15:57:04.923Z", + "app/storefront-development/cart/create/page.mdx": "2025-02-26T11:44:58.922Z", "app/storefront-development/cart/manage-items/page.mdx": "2024-12-26T15:59:48.445Z", - "app/storefront-development/cart/retrieve/page.mdx": "2025-01-06T15:58:13.885Z", + "app/storefront-development/cart/retrieve/page.mdx": "2025-02-26T11:45:30.920Z", "app/storefront-development/cart/update/page.mdx": "2025-01-06T16:01:33.752Z", "app/storefront-development/cart/page.mdx": "2024-06-11T11:56:37+03:00", "app/storefront-development/checkout/address/page.mdx": "2025-02-03T16:32:02.682Z", @@ -148,7 +148,7 @@ export const generatedEditDates = { "app/storefront-development/checkout/payment/page.mdx": "2025-01-02T08:47:20.531Z", "app/storefront-development/checkout/shipping/page.mdx": "2025-01-13T11:31:35.361Z", "app/storefront-development/checkout/page.mdx": "2024-06-12T19:46:06+02:00", - "app/storefront-development/customers/addresses/page.mdx": "2025-01-06T16:59:53.878Z", + "app/storefront-development/customers/addresses/page.mdx": "2025-02-26T11:46:18.629Z", "app/storefront-development/customers/context/page.mdx": "2024-12-19T16:38:43.703Z", "app/storefront-development/customers/log-out/page.mdx": "2024-12-19T16:31:28.347Z", "app/storefront-development/customers/login/page.mdx": "2024-12-19T16:31:34.194Z", @@ -158,19 +158,19 @@ export const generatedEditDates = { "app/storefront-development/customers/page.mdx": "2024-06-13T12:21:54+03:00", "app/storefront-development/products/categories/list/page.mdx": "2024-12-19T16:33:06.547Z", "app/storefront-development/products/categories/nested-categories/page.mdx": "2025-01-06T15:50:56.324Z", - "app/storefront-development/products/categories/products/page.mdx": "2025-01-06T15:46:26.562Z", + "app/storefront-development/products/categories/products/page.mdx": "2025-02-26T11:46:56.674Z", "app/storefront-development/products/categories/retrieve/page.mdx": "2025-01-06T15:44:45.608Z", "app/storefront-development/products/categories/page.mdx": "2024-06-11T19:55:56+02:00", - "app/storefront-development/products/collections/list/page.mdx": "2024-12-19T16:33:43.902Z", - "app/storefront-development/products/collections/products/page.mdx": "2025-01-06T15:55:34.444Z", - "app/storefront-development/products/collections/retrieve/page.mdx": "2025-01-06T15:53:54.960Z", + "app/storefront-development/products/collections/list/page.mdx": "2025-02-26T11:47:22.010Z", + "app/storefront-development/products/collections/products/page.mdx": "2025-02-26T11:47:46.882Z", + "app/storefront-development/products/collections/retrieve/page.mdx": "2025-02-26T11:48:08.506Z", "app/storefront-development/products/collections/page.mdx": "2024-06-11T19:55:56+02:00", - "app/storefront-development/products/list/page.mdx": "2024-12-19T16:34:23.521Z", + "app/storefront-development/products/list/page.mdx": "2025-02-26T11:48:38.941Z", "app/storefront-development/products/price/examples/sale-price/page.mdx": "2025-01-06T15:39:33.475Z", "app/storefront-development/products/price/examples/show-price/page.mdx": "2025-01-06T15:37:57.350Z", "app/storefront-development/products/price/examples/tax-price/page.mdx": "2025-01-06T15:40:56.854Z", "app/storefront-development/products/price/page.mdx": "2024-12-19T16:35:19.471Z", - "app/storefront-development/products/retrieve/page.mdx": "2025-01-06T15:35:38.192Z", + "app/storefront-development/products/retrieve/page.mdx": "2025-02-26T11:48:25.232Z", "app/storefront-development/products/variants/page.mdx": "2025-01-06T15:36:41.374Z", "app/storefront-development/products/page.mdx": "2024-06-11T19:55:56+02:00", "app/storefront-development/regions/context/page.mdx": "2024-12-19T16:36:07.406Z", @@ -187,18 +187,18 @@ export const generatedEditDates = { "app/troubleshooting/errors-installing-cli/page.mdx": "2024-05-03T17:36:38+03:00", "app/troubleshooting/general-errors/page.mdx": "2024-05-03T17:36:38+03:00", "app/troubleshooting/s3/page.mdx": "2025-01-24T13:47:24.994Z", - "app/troubleshooting/page.mdx": "2024-07-18T08:57:11+02:00", - "app/usage/page.mdx": "2024-05-13T18:55:11+03:00", - "app/page.mdx": "2025-02-25T07:36:59.541Z", + "app/troubleshooting/page.mdx": "2025-02-26T11:40:54.162Z", + "app/usage/page.mdx": "2025-02-26T11:49:39.213Z", + "app/page.mdx": "2025-02-26T10:23:58.440Z", "app/commerce-modules/auth/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/auth/auth-flows/page.mdx": "2025-01-13T11:31:35.361Z", "app/commerce-modules/auth/_events/page.mdx": "2024-07-03T19:27:13+03:00", "app/commerce-modules/auth/auth-identity-and-actor-types/page.mdx": "2025-01-07T09:02:27.235Z", - "app/commerce-modules/api-key/page.mdx": "2025-01-09T13:41:04.492Z", + "app/commerce-modules/api-key/page.mdx": "2025-02-26T11:18:00.337Z", "app/commerce-modules/auth/create-actor-type/page.mdx": "2024-12-25T13:26:27.176Z", "app/architectural-modules/page.mdx": "2025-01-08T12:13:50.333Z", "app/architectural-modules/workflow-engine/redis/page.mdx": "2024-10-15T12:50:59.507Z", - "app/architectural-modules/notification/sendgrid/page.mdx": "2024-10-15T12:51:25.569Z", + "app/architectural-modules/notification/sendgrid/page.mdx": "2025-02-26T11:43:13.143Z", "app/commerce-modules/api-key/concepts/page.mdx": "2024-10-07T13:59:37.529Z", "app/architectural-modules/workflow-engine/page.mdx": "2025-01-08T12:16:04.157Z", "app/_events-reference/page.mdx": "2024-07-03T19:27:13+03:00", @@ -947,7 +947,7 @@ export const generatedEditDates = { "references/order/IOrderModuleService/methods/order.IOrderModuleService.updateOrderChangeActions/page.mdx": "2025-01-13T18:05:56.207Z", "references/types/ModulesSdkTypes/types/types.ModulesSdkTypes.RemoteQueryFunction/page.mdx": "2025-02-24T10:48:38.938Z", "references/types/types.CommonTypes/page.mdx": "2025-01-13T17:30:27.580Z", - "app/storefront-development/publishable-api-keys/page.mdx": "2024-12-25T16:00:18.474Z", + "app/storefront-development/publishable-api-keys/page.mdx": "2025-02-26T11:49:00.515Z", "references/api_key/types/api_key.ExpandScalar/page.mdx": "2024-09-17T00:10:59.563Z", "references/api_key/types/api_key.FilterQuery/page.mdx": "2024-11-27T16:33:40.706Z", "references/api_key/types/api_key.FilterValue/page.mdx": "2024-09-17T00:10:59.571Z", @@ -2107,7 +2107,7 @@ export const generatedEditDates = { "app/admin-components/layouts/single-column/page.mdx": "2024-10-07T11:16:06.435Z", "app/admin-components/layouts/two-column/page.mdx": "2024-10-07T11:16:10.092Z", "app/admin-components/components/forms/page.mdx": "2024-10-09T12:48:04.229Z", - "app/commerce-modules/auth/reset-password/page.mdx": "2024-12-25T13:26:32.595Z", + "app/commerce-modules/auth/reset-password/page.mdx": "2025-02-26T11:18:00.391Z", "app/storefront-development/customers/reset-password/page.mdx": "2024-12-19T16:32:00.724Z", "app/commerce-modules/api-key/links-to-other-modules/page.mdx": "2025-01-06T11:19:22.450Z", "app/commerce-modules/cart/extend/page.mdx": "2024-12-25T12:48:59.149Z", @@ -2120,7 +2120,7 @@ export const generatedEditDates = { "app/commerce-modules/product/links-to-other-modules/page.mdx": "2025-02-11T12:09:46.420Z", "app/commerce-modules/promotion/extend/page.mdx": "2024-12-11T09:07:24.137Z", "app/commerce-modules/promotion/links-to-other-modules/page.mdx": "2025-01-06T11:19:35.608Z", - "app/commerce-modules/order/edit/page.mdx": "2024-10-09T08:50:05.334Z", + "app/commerce-modules/order/edit/page.mdx": "2025-02-26T11:24:28.852Z", "app/commerce-modules/order/links-to-other-modules/page.mdx": "2025-01-06T11:19:35.604Z", "app/commerce-modules/order/order-change/page.mdx": "2024-10-09T09:59:40.745Z", "app/commerce-modules/payment/links-to-other-modules/page.mdx": "2025-01-31T09:22:05.326Z", @@ -5584,7 +5584,7 @@ export const generatedEditDates = { "references/types/DmlTypes/types/types.DmlTypes.RelationshipTypes/page.mdx": "2024-12-10T14:54:55.435Z", "app/recipes/commerce-automation/restock-notification/page.mdx": "2025-02-11T13:29:56.235Z", "app/troubleshooting/workflow-errors/page.mdx": "2024-12-11T08:44:36.598Z", - "app/integrations/guides/shipstation/page.mdx": "2025-01-07T14:40:42.561Z", + "app/integrations/guides/shipstation/page.mdx": "2025-02-26T11:21:46.879Z", "app/nextjs-starter/guides/customize-stripe/page.mdx": "2024-12-25T14:48:55.877Z", "references/core_flows/Cart/Workflows_Cart/functions/core_flows.Cart.Workflows_Cart.listShippingOptionsForCartWithPricingWorkflow/page.mdx": "2025-02-24T10:48:27.556Z", "references/core_flows/Cart/Workflows_Cart/variables/core_flows.Cart.Workflows_Cart.listShippingOptionsForCartWithPricingWorkflowId/page.mdx": "2024-12-17T16:57:22.044Z", @@ -5756,7 +5756,7 @@ export const generatedEditDates = { "references/types/StockLocationTypes/types/types.StockLocationTypes.UpdateStockLocationAddressInput/page.mdx": "2025-01-07T12:54:23.057Z", "references/types/StockLocationTypes/types/types.StockLocationTypes.UpsertStockLocationAddressInput/page.mdx": "2025-01-07T12:54:23.058Z", "app/storefront-development/guides/express-checkout/page.mdx": "2025-02-12T07:21:55.821Z", - "app/commerce-modules/inventory/inventory-kit/page.mdx": "2025-01-13T11:31:35.362Z", + "app/commerce-modules/inventory/inventory-kit/page.mdx": "2025-02-26T11:18:00.353Z", "app/commerce-modules/api-key/workflows/page.mdx": "2025-01-09T13:41:46.573Z", "app/commerce-modules/api-key/js-sdk/page.mdx": "2025-01-09T12:04:39.787Z", "app/commerce-modules/auth/js-sdk/page.mdx": "2025-01-09T13:27:54.016Z", @@ -5861,7 +5861,7 @@ export const generatedEditDates = { "references/core_flows/types/core_flows.ValidatePaymentsRefundStepInput/page.mdx": "2025-01-17T16:43:26.128Z", "references/core_flows/types/core_flows.ValidateRefundStepInput/page.mdx": "2025-02-24T10:48:34.159Z", "app/plugins/guides/wishlist/page.mdx": "2025-02-20T17:13:30.276Z", - "app/plugins/page.mdx": "2025-01-22T09:36:37.745Z", + "app/plugins/page.mdx": "2025-02-26T11:39:25.709Z", "app/admin-components/components/data-table/page.mdx": "2025-01-22T16:01:01.279Z", "references/order_models/variables/order_models.Order/page.mdx": "2025-01-27T11:43:58.788Z", "references/order_models/variables/order_models.OrderAddress/page.mdx": "2025-01-27T11:43:58.773Z", @@ -5900,7 +5900,7 @@ export const generatedEditDates = { "references/core_flows/Order/Steps_Order/variables/core_flows.Order.Steps_Order.updateOrderChangesStepId/page.mdx": "2025-01-27T11:43:49.278Z", "app/commerce-modules/payment/account-holder/page.mdx": "2025-01-31T09:37:41.595Z", "app/troubleshooting/test-errors/page.mdx": "2025-01-31T13:08:42.639Z", - "app/commerce-modules/product/variant-inventory/page.mdx": "2025-02-13T12:31:51.593Z", + "app/commerce-modules/product/variant-inventory/page.mdx": "2025-02-26T11:21:20.075Z", "app/examples/guides/custom-item-price/page.mdx": "2025-02-07T09:21:11.170Z", "references/core_flows/Cart/Steps_Cart/functions/core_flows.Cart.Steps_Cart.validateShippingStep/page.mdx": "2025-02-11T11:36:39.235Z", "references/core_flows/Cart/Steps_Cart/variables/core_flows.Cart.Steps_Cart.validateShippingStepId/page.mdx": "2025-02-11T11:36:39.228Z", diff --git a/www/apps/resources/generated/sidebar.mjs b/www/apps/resources/generated/sidebar.mjs index 1a249778c2738..be8c9c9233d2e 100644 --- a/www/apps/resources/generated/sidebar.mjs +++ b/www/apps/resources/generated/sidebar.mjs @@ -784,6 +784,26 @@ export const generatedSidebar = [ } ] }, + { + "loaded": true, + "isPathHref": true, + "type": "category", + "title": "Admin User Guides", + "autogenerate_tags": "userGuide+auth", + "initialOpen": false, + "autogenerate_as_ref": true, + "description": "Learn how to utilize and manage Auth features in the Medusa Admin dashboard.", + "children": [ + { + "loaded": true, + "isPathHref": true, + "type": "ref", + "title": "Reset Password", + "path": "https://docs.medusajs.com/user-guide/reset-password", + "children": [] + } + ] + }, { "loaded": true, "isPathHref": true, @@ -2280,6 +2300,26 @@ export const generatedSidebar = [ } ] }, + { + "loaded": true, + "isPathHref": true, + "type": "category", + "title": "Admin User Guides", + "autogenerate_tags": "userGuide+currency", + "initialOpen": false, + "autogenerate_as_ref": true, + "description": "Learn how to utilize and manage Currency features in the Medusa Admin dashboard.", + "children": [ + { + "loaded": true, + "isPathHref": true, + "type": "ref", + "title": "Manage Store", + "path": "https://docs.medusajs.com/user-guide/settings/store", + "children": [] + } + ] + }, { "loaded": true, "isPathHref": true, @@ -16033,6 +16073,14 @@ export const generatedSidebar = [ "autogenerate_as_ref": true, "description": "Learn how to utilize and manage User features in the Medusa Admin dashboard.", "children": [ + { + "loaded": true, + "isPathHref": true, + "type": "ref", + "title": "Reset Password", + "path": "https://docs.medusajs.com/user-guide/reset-password", + "children": [] + }, { "loaded": true, "isPathHref": true, diff --git a/www/apps/user-guide/app/reset-password/page.mdx b/www/apps/user-guide/app/reset-password/page.mdx new file mode 100644 index 0000000000000..f7c21ceb2824e --- /dev/null +++ b/www/apps/user-guide/app/reset-password/page.mdx @@ -0,0 +1,52 @@ +--- +sidebar_label: "Reset Password" +tags: + - user guide + - user + - auth +--- + +export const metadata = { + title: `Reset Password in Medusa Admin`, +} + +# {metadata.title} + +In this guide, you'll learn how to reset your admin user password using the Medusa Admin dashboard. + +## 1. Request to Reset Password + +Before resetting your password, you must request the reset, which will send you an email with instructions to reset your password. + +To reset your password: + +1. Open the Medusa Admin dashboard. +2. Click on "Reset" below the login form. +3. In the Reset Password form, enter your email address. +4. Click the "Send reset instructions" button. + +You will receive an email with instructions to reset your password. The email will contain a link that will redirect you to the [password reset form](#2-reset-password). + + + +If you don't receive an email, check with your technical team to ensure they have installed a [Notification Module Provider](!resources!/architectural-modules/notification) and configured the [password reset notification](!resources!/commerce-modules/auth/reset-password). + + + +![Request reset password form](https://res.cloudinary.com/dza7lstvk/image/upload/v1740567731/User%20Guide/Screenshot_2025-02-26_at_1.01.32_PM_pz36is.png) + +--- + +## 2. Reset Password + +After you've [requested to reset the password](#1-request-to-reset-password), you can reset your password using the link in the email you received. + +To reset your password: + +1. Open the link in the email you received. +2. In the Reset Password form, enter your new password and confirm it. +3. Click the "Reset password" button. + +Once you've reset your password, click the "Back to login" link to return to the login form. + +![Reset password form](https://res.cloudinary.com/dza7lstvk/image/upload/v1740568088/User%20Guide/Screenshot_2025-02-26_at_1.07.59_PM_st8r4s.png) diff --git a/www/apps/user-guide/app/settings/store/page.mdx b/www/apps/user-guide/app/settings/store/page.mdx index 106f468cc1a64..e2e7e2a91f725 100644 --- a/www/apps/user-guide/app/settings/store/page.mdx +++ b/www/apps/user-guide/app/settings/store/page.mdx @@ -4,6 +4,7 @@ sidebar_label: "Manage Store" tags: - user guide - store + - currency --- import { EllipsisHorizontal, ArrowUpRightOnBox, EllipsisVertical } from "@medusajs/icons" diff --git a/www/apps/user-guide/app/settings/tax-regions/page.mdx b/www/apps/user-guide/app/settings/tax-regions/page.mdx index c61c69c746f92..9d4a61c1bba17 100644 --- a/www/apps/user-guide/app/settings/tax-regions/page.mdx +++ b/www/apps/user-guide/app/settings/tax-regions/page.mdx @@ -9,7 +9,7 @@ tags: import { EllipsisHorizontal } from "@medusajs/icons" export const metadata = { - title: `Tax Regions in Medusa Admin`, + title: `Manage Tax Regions in Medusa Admin`, } # {metadata.title} diff --git a/www/apps/user-guide/generated/edit-dates.mjs b/www/apps/user-guide/generated/edit-dates.mjs index 48aa550b975c2..1c6d17bb83fea 100644 --- a/www/apps/user-guide/generated/edit-dates.mjs +++ b/www/apps/user-guide/generated/edit-dates.mjs @@ -13,7 +13,7 @@ export const generatedEditDates = { "app/settings/users/invites/page.mdx": "2025-02-19T11:38:54.009Z", "app/settings/developer/page.mdx": "2025-02-25T15:11:55.392Z", "app/settings/profile/page.mdx": "2025-02-25T16:24:21.165Z", - "app/settings/store/page.mdx": "2025-02-19T11:19:01.136Z", + "app/settings/store/page.mdx": "2025-02-26T10:33:07.346Z", "app/products/import/page.mdx": "2025-02-18T12:15:03.830Z", "app/products/categories/page.mdx": "2025-02-19T10:21:42.058Z", "app/inventory/reservations/page.mdx": "2025-02-18T13:56:28.134Z", @@ -54,5 +54,6 @@ export const generatedEditDates = { "app/settings/product-types/page.mdx": "2025-02-19T17:36:16.496Z", "app/settings/developer/publishable-api-keys/page.mdx": "2025-02-25T16:15:29.847Z", "app/settings/developer/secret-api-keys/page.mdx": "2025-02-25T16:17:40.621Z", - "app/settings/developer/workflows/page.mdx": "2025-02-25T15:52:48.349Z" + "app/settings/developer/workflows/page.mdx": "2025-02-25T15:52:48.349Z", + "app/reset-password/page.mdx": "2025-02-26T11:13:45.457Z" } \ No newline at end of file diff --git a/www/apps/user-guide/generated/sidebar.mjs b/www/apps/user-guide/generated/sidebar.mjs index b9de487bfa7a0..88079cdebc93c 100644 --- a/www/apps/user-guide/generated/sidebar.mjs +++ b/www/apps/user-guide/generated/sidebar.mjs @@ -7,6 +7,14 @@ export const generatedSidebar = [ "title": "Introduction", "children": [] }, + { + "loaded": true, + "isPathHref": true, + "type": "link", + "path": "/reset-password", + "title": "Reset Password", + "children": [] + }, { "type": "separator" }, @@ -22,7 +30,7 @@ export const generatedSidebar = [ "isPathHref": true, "type": "link", "path": "/tips/bulk-editor", - "title": "Bulk Editor", + "title": "Bulk Editor in Medusa Admin", "description": "", "children": [] }, @@ -31,7 +39,7 @@ export const generatedSidebar = [ "isPathHref": true, "type": "link", "path": "/tips/languages", - "title": "Admin Languages", + "title": "Languages in Medusa Admin", "description": "", "children": [] }, @@ -170,7 +178,7 @@ export const generatedSidebar = [ "isPathHref": true, "type": "link", "title": "Manage Variants", - "path": "/proucts/variants", + "path": "/products/variants", "children": [] }, { diff --git a/www/apps/user-guide/sidebar.mjs b/www/apps/user-guide/sidebar.mjs index c60b0acf6e7fb..51cd3f1d1eda1 100644 --- a/www/apps/user-guide/sidebar.mjs +++ b/www/apps/user-guide/sidebar.mjs @@ -9,6 +9,11 @@ export const sidebar = sidebarAttachHrefCommonOptions([ path: "/", title: "Introduction", }, + { + type: "link", + path: "/reset-password", + title: "Reset Password", + }, { type: "separator", }, @@ -97,7 +102,7 @@ export const sidebar = sidebarAttachHrefCommonOptions([ { type: "link", title: "Manage Variants", - path: "/proucts/variants", + path: "/products/variants", }, { type: "link", @@ -106,7 +111,7 @@ export const sidebar = sidebarAttachHrefCommonOptions([ }, { type: "link", - title: "Categories", + title: "Manage Categories", path: "/products/categories", }, { @@ -231,7 +236,7 @@ export const sidebar = sidebarAttachHrefCommonOptions([ children: [ { type: "link", - title: "Invites", + title: "Manage Invites", path: "/settings/users/invites", }, ], @@ -273,12 +278,12 @@ export const sidebar = sidebarAttachHrefCommonOptions([ children: [ { type: "link", - title: "Locations", + title: "Manage Locations", path: "/settings/locations-and-shipping/locations", }, { type: "link", - title: "Shipping Profiles", + title: "Manage Shipping Profiles", path: "/settings/locations-and-shipping/shipping-profiles", }, ], diff --git a/www/packages/tags/src/tags/auth.ts b/www/packages/tags/src/tags/auth.ts index bb3e7b498ac56..a27d1c5bfbb82 100644 --- a/www/packages/tags/src/tags/auth.ts +++ b/www/packages/tags/src/tags/auth.ts @@ -1,4 +1,8 @@ export const auth = [ + { + "title": "Reset Password", + "path": "https://docs.medusajs.com/user-guide/reset-password" + }, { "title": "Log-out Customer in Storefront", "path": "https://docs.medusajs.com/resources/storefront-development/customers/log-out" diff --git a/www/packages/tags/src/tags/currency.ts b/www/packages/tags/src/tags/currency.ts index 62fb51afcf59f..2e04ce5c5e247 100644 --- a/www/packages/tags/src/tags/currency.ts +++ b/www/packages/tags/src/tags/currency.ts @@ -1,4 +1,8 @@ export const currency = [ + { + "title": "Manage Store", + "path": "https://docs.medusajs.com/user-guide/settings/store" + }, { "title": "currency", "path": "https://docs.medusajs.com/resources/references/js-sdk/admin/currency" diff --git a/www/packages/tags/src/tags/index.ts b/www/packages/tags/src/tags/index.ts index 56b0829746d65..0bea586888e55 100644 --- a/www/packages/tags/src/tags/index.ts +++ b/www/packages/tags/src/tags/index.ts @@ -1,41 +1,41 @@ export * from "./user-guide.js" -export * from "./fulfillment.js" export * from "./payment.js" +export * from "./fulfillment.js" export * from "./pricing.js" export * from "./product.js" export * from "./promotion.js" -export * from "./api-key.js" export * from "./user.js" export * from "./workflow.js" +export * from "./auth.js" +export * from "./stock-location.js" export * from "./region.js" +export * from "./api-key.js" +export * from "./store.js" export * from "./sales-channel.js" -export * from "./inventory.js" +export * from "./currency.js" export * from "./customer.js" +export * from "./query.js" export * from "./order.js" +export * from "./tax.js" +export * from "./stripe.js" export * from "./concept.js" -export * from "./store.js" export * from "./storefront.js" export * from "./cart.js" -export * from "./server.js" -export * from "./stock-location.js" -export * from "./tax.js" -export * from "./stripe.js" +export * from "./product-category.js" export * from "./example.js" -export * from "./auth.js" -export * from "./js-sdk.js" export * from "./checkout.js" export * from "./product-collection.js" -export * from "./product-category.js" -export * from "./link.js" -export * from "./publishable-api-key.js" export * from "./step.js" +export * from "./publishable-api-key.js" +export * from "./inventory.js" +export * from "./remote-query.js" export * from "./logger.js" -export * from "./locking.js" -export * from "./query.js" +export * from "./link.js" export * from "./event-bus.js" +export * from "./file.js" export * from "./admin.js" export * from "./notification.js" -export * from "./file.js" -export * from "./remote-query.js" -export * from "./currency.js" +export * from "./locking.js" +export * from "./js-sdk.js" export * from "./draft-order.js" +export * from "./server.js" diff --git a/www/packages/tags/src/tags/user-guide.ts b/www/packages/tags/src/tags/user-guide.ts index c856c4d3e5c15..e5db7852a6157 100644 --- a/www/packages/tags/src/tags/user-guide.ts +++ b/www/packages/tags/src/tags/user-guide.ts @@ -123,6 +123,10 @@ export const userGuide = [ "title": "Promotions Overview", "path": "https://docs.medusajs.com/user-guide/promotions" }, + { + "title": "Reset Password", + "path": "https://docs.medusajs.com/user-guide/reset-password" + }, { "title": "Manage Publishable API Keys", "path": "https://docs.medusajs.com/user-guide/settings/developer/publishable-api-keys" diff --git a/www/packages/tags/src/tags/user.ts b/www/packages/tags/src/tags/user.ts index 58605513f2aad..e1952dd92f39e 100644 --- a/www/packages/tags/src/tags/user.ts +++ b/www/packages/tags/src/tags/user.ts @@ -1,4 +1,8 @@ export const user = [ + { + "title": "Reset Password", + "path": "https://docs.medusajs.com/user-guide/reset-password" + }, { "title": "Manage Profile", "path": "https://docs.medusajs.com/user-guide/settings/profile"