diff --git a/www/apps/resources/app/commerce-modules/api-key/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/api-key/links-to-other-modules/page.mdx
index 3ef22327a6..ed4bc382ef 100644
--- a/www/apps/resources/app/commerce-modules/api-key/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/api-key/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between API Key Module and Other Modules`,
}
@@ -6,6 +8,14 @@ export const metadata = {
This document showcases the module links defined between the API Key Module and other commerce modules.
+## Summary
+
+The API Key Module has the following links to other modules:
+
+- [`ApiKey` data model \<\> `SalesChannel` data model of Sales Channel Module](#sales-channel-module).
+
+---
+
## Sales Channel Module
You can create a publishable API key and associate it with a sales channel. Medusa defines a link between the `ApiKey` and the `SalesChannel` data models.
@@ -15,3 +25,86 @@ You can create a publishable API key and associate it with a sales channel. Medu
This is useful to avoid passing the sales channel's ID as a parameter of every request, and instead pass the publishable API key in the header of any request to the Store API route.
Learn more about this in the [Sales Channel Module's documentation](../../sales-channel/publishable-api-keys/page.mdx).
+
+### Retrieve with Query
+
+To retrieve the sales channels of an API key with [Query](!docs!/learn/fundamentals/module-links/query), pass `sales_channels.*` in `fields`:
+
+
+
+
+```ts
+const { data: apiKeys } = await query.graph({
+ entity: "api_key",
+ fields: [
+ "sales_channels.*"
+ ]
+})
+
+// apiKeys.sales_channels
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: apiKeys } = useQueryGraphStep({
+ entity: "api_key",
+ fields: [
+ "sales_channels.*"
+ ]
+})
+
+// apiKeys.sales_channels
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the sales channels of an API key, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.API_KEY]: {
+ api_key_id: "apk_123",
+ },
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.API_KEY]: {
+ api_key_id: "apk_123",
+ },
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+})
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/cart/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/cart/links-to-other-modules/page.mdx
index b6cf0c2054..341ec6d153 100644
--- a/www/apps/resources/app/commerce-modules/cart/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/cart/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Cart Module and Other Modules`,
}
@@ -6,30 +8,496 @@ export const metadata = {
This document showcases the module links defined between the Cart Module and other commerce modules.
-## Payment Module
+## Summary
-The Payment Module handles payment processing and management.
+The Cart Module has the following links to other modules:
-Medusa defines a link between the `Cart` and `PaymentCollection` data models. A cart has a payment collection which holds all the authorized payment sessions and payments made related to the cart.
+
-
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`Cart` data model \<\> `Customer` data model of Customer Module](#customer-module). (Read-only).
+- [`Order` data model of Order Module \<\> `Cart` data model](#order-module).
+- [`Cart` data model \<\> `PaymentCollection` data model of Payment Module](#payment-module).
+- [`LineItem` data model \<\> `Product` data model of Product Module](#product-module). (Read-only).
+- [`LineItem` data model \<\> `ProductVariant` data model of Product Module](#product-module). (Read-only).
+- [`Cart` data model \<\> `Promotion` data model of Promotion Module](#promotion-module).
+- [`Cart` data model \<\> `Region` data model of Region Module](#region-module). (Read-only).
+- [`Cart` data model \<\> `SalesChannel` data model of Sales Channel Module](#sales-channel-module). (Read-only).
---
-## Promotion Module
+## Customer Module
-The Promotion Module provides discount features.
+Medusa defines a read-only link between the `Cart` data model and the [Customer Module](../../customer/page.mdx)'s `Customer` data model. This means you can retrieve the details of a cart's customer, but you don't manage the links in a pivot table in the database. The customer of a cart is determined by the `customer_id` property of the `Cart` data model.
-Medusa defines a link between the `Cart` and `Promotion` data models. This indicates the promotions applied on a cart.
+### Retrieve with Query
-
+To retrieve the customer of a cart with [Query](!docs!/learn/fundamentals/module-links/query), pass `customer.*` in `fields`:
+
+
+
+
+```ts
+const { data: carts } = await query.graph({
+ entity: "cart",
+ fields: [
+ "customer.*"
+ ]
+})
+
+// carts.order
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: carts } = useQueryGraphStep({
+ entity: "cart",
+ fields: [
+ "customer.*"
+ ]
+})
+
+// carts.order
+```
+
+
+
---
## Order Module
-The Order Module provides order-management features.
+The [Order Module](../../order/page.mdx) provides order-management features.
Medusa defines a link between the `Cart` and `Order` data models. The cart is linked to the order created once the cart is completed.

+
+### Retrieve with Query
+
+To retrieve the order of a cart with [Query](!docs!/learn/fundamentals/module-links/query), pass `order.*` in `fields`:
+
+
+
+
+```ts
+const { data: carts } = await query.graph({
+ entity: "cart",
+ fields: [
+ "order.*"
+ ]
+})
+
+// carts.order
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: carts } = useQueryGraphStep({
+ entity: "cart",
+ fields: [
+ "order.*"
+ ]
+})
+
+// carts.order
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the order of a cart, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Payment Module
+
+The [Payment Module](../../payment/page.mdx) handles payment processing and management.
+
+Medusa defines a link between the `Cart` and `PaymentCollection` data models. A cart has a payment collection which holds all the authorized payment sessions and payments made related to the cart.
+
+
+
+### Retrieve with Query
+
+To retrieve the payment collection of a cart with [Query](!docs!/learn/fundamentals/module-links/query), pass `payment_collection.*` in `fields`:
+
+
+
+
+```ts
+const { data: carts } = await query.graph({
+ entity: "cart",
+ fields: [
+ "payment_collection.*"
+ ]
+})
+
+// carts.payment_collection
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: carts } = useQueryGraphStep({
+ entity: "cart",
+ fields: [
+ "payment_collection.*"
+ ]
+})
+
+// carts.payment_collection
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the payment collection of a cart, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_collection_id: "paycol_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_collection_id: "paycol_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Product Module
+
+Medusa defines read-only links between:
+
+- the `LineItem` data model and the [Product Module](../../product/page.mdx)'s `Product` data model. This means you can retrieve the details of a line item's product, but you don't manage the links in a pivot table in the database. The product of a line item is determined by the `product_id` property of the `LineItem` data model.
+- the `LineItem` data model and the [Product Module](../../product/page.mdx)'s `ProductVariant` data model. This means you can retrieve the details of a line item's variant, but you don't manage the links in a pivot table in the database. The variant of a line item is determined by the `variant_id` property of the `LineItem` data model.
+
+### Retrieve with Query
+
+To retrieve the variant of a line item with [Query](!docs!/learn/fundamentals/module-links/query), pass `variant.*` in `fields`:
+
+
+
+To retrieve the product, pass `product.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: lineItems } = await query.graph({
+ entity: "line_item",
+ fields: [
+ "variant.*"
+ ]
+})
+
+// lineItems.variant
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: lineItems } = useQueryGraphStep({
+ entity: "line_item",
+ fields: [
+ "variant.*"
+ ]
+})
+
+// lineItems.variant
+```
+
+
+
+
+---
+
+## Promotion Module
+
+The [Promotion Module](../../promotion/page.mdx) provides discount features.
+
+Medusa defines a link between the `Cart` and `Promotion` data models. This indicates the promotions applied on a cart.
+
+
+
+Medusa also defines a read-only link between the `LineItemAdjustment` and `Promotion` data models. This means you can retrieve the details of the promotion applied on a line item, but you don't manage the links in a pivot table in the database. The promotion of a line item is determined by the `promotion_id` property of the `LineItemAdjustment` data model.
+
+### Retrieve with Query
+
+To retrieve the promotions of a cart with [Query](!docs!/learn/fundamentals/module-links/query), pass `promotions.*` in `fields`:
+
+
+
+To retrieve the promotion of a line item adjustment, pass `promotion.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: carts } = await query.graph({
+ entity: "cart",
+ fields: [
+ "promotions.*"
+ ]
+})
+
+// carts.promotions
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: carts } = useQueryGraphStep({
+ entity: "cart",
+ fields: [
+ "promotions.*"
+ ]
+})
+
+// carts.promotions
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the promotions of a cart, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.PROMOTION]: {
+ promotion_id: "promo_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.PROMOTION]: {
+ promotion_id: "promo_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Region Module
+
+Medusa defines a read-only link between the `Cart` data model and the [Region Module](../../region/page.mdx)'s `Region` data model. This means you can retrieve the details of a cart's region, but you don't manage the links in a pivot table in the database. The region of a cart is determined by the `region_id` property of the `Cart` data model.
+
+### Retrieve with Query
+
+To retrieve the region of a cart with [Query](!docs!/learn/fundamentals/module-links/query), pass `region.*` in `fields`:
+
+
+
+
+```ts
+const { data: carts } = await query.graph({
+ entity: "cart",
+ fields: [
+ "region.*"
+ ]
+})
+
+// carts.region
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: carts } = useQueryGraphStep({
+ entity: "cart",
+ fields: [
+ "region.*"
+ ]
+})
+
+// carts.region
+```
+
+
+
+
+---
+
+## Sales Channel Module
+
+Medusa defines a read-only link between the `Cart` data model and the [Sales Channel Module](../../sales-channel/page.mdx)'s `SalesChannel` data model. This means you can retrieve the details of a cart's sales channel, but you don't manage the links in a pivot table in the database. The sales channel of a cart is determined by the `sales_channel_id` property of the `Cart` data model.
+
+### Retrieve with Query
+
+To retrieve the sales channel of a cart with [Query](!docs!/learn/fundamentals/module-links/query), pass `sales_channel.*` in `fields`:
+
+
+
+
+```ts
+const { data: carts } = await query.graph({
+ entity: "cart",
+ fields: [
+ "sales_channel.*"
+ ]
+})
+
+// carts.sales_channel
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: carts } = useQueryGraphStep({
+ entity: "cart",
+ fields: [
+ "sales_channel.*"
+ ]
+})
+
+// carts.sales_channel
+```
+
+
+
diff --git a/www/apps/resources/app/commerce-modules/currency/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/currency/links-to-other-modules/page.mdx
new file mode 100644
index 0000000000..2ea00ee4de
--- /dev/null
+++ b/www/apps/resources/app/commerce-modules/currency/links-to-other-modules/page.mdx
@@ -0,0 +1,68 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
+export const metadata = {
+ title: `Links between Currency Module and Other Modules`,
+}
+
+# {metadata.title}
+
+This document showcases the module links defined between the Currency Module and other commerce modules.
+
+## Summary
+
+The Currency Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`Currency` data model of Store Module \<\> `Currency` data model of Currency Module](#store-module). (Read-only).
+
+---
+
+## Store Module
+
+The Store Module has a `Currency` data model that stores the supported currencies of a store. However, these currencies don't hold all the details of a currency, such as its name or symbol.
+
+Instead, Medusa defines a read-only link between the Currency Module's `Currency` data model and the [Store Module](../../store/page.mdx)'s `Currency` data model. This means you can retrieve the details of a store's supported currencies, but you don't manage the links in a pivot table in the database. The currencies of a store are determined by the `currency_code` of the `Currency` data model in the Store Module.
+
+### Retrieve with Query
+
+To retrieve the details of a store's currencies with [Query](!docs!/learn/fundamentals/module-links/query), pass `supported_currencies.currency.*` in `fields`:
+
+
+
+
+```ts
+const { data: stores } = await query.graph({
+ entity: "store",
+ fields: [
+ "supported_currencies.currency.*"
+ ]
+})
+
+// stores.supported_currencies
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: stores } = useQueryGraphStep({
+ entity: "store",
+ fields: [
+ "supported_currencies.currency.*"
+ ]
+})
+
+// stores.supported_currencies
+```
+
+
+
diff --git a/www/apps/resources/app/commerce-modules/customer/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/customer/links-to-other-modules/page.mdx
new file mode 100644
index 0000000000..7dac5330fe
--- /dev/null
+++ b/www/apps/resources/app/commerce-modules/customer/links-to-other-modules/page.mdx
@@ -0,0 +1,112 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
+export const metadata = {
+ title: `Links between Customer Module and Other Modules`,
+}
+
+# {metadata.title}
+
+This document showcases the module links defined between the Customer Module and other commerce modules.
+
+## Summary
+
+The Customer Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`Cart` data model of Cart Module \<\> `Customer` data model](#cart-module). (Read-only).
+- [`Order` data model of Order Module \<\> `Customer` data model](#order-module). (Read-only).
+
+---
+
+## Cart Module
+
+Medusa defines a read-only link between the `Customer` data model and the [Cart Module](../../cart/page.mdx)'s `Cart` data model. This means you can retrieve the details of a customer's carts, but you don't manage the links in a pivot table in the database. The customer of a cart is determined by the `customer_id` property of the `Cart` data model.
+
+### Retrieve with Query
+
+To retrieve a customer's carts with [Query](!docs!/learn/fundamentals/module-links/query), pass `carts.*` in `fields`:
+
+
+
+
+```ts
+const { data: customers } = await query.graph({
+ entity: "customer",
+ fields: [
+ "carts.*"
+ ]
+})
+
+// customers.carts
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: customers } = useQueryGraphStep({
+ entity: "customer",
+ fields: [
+ "carts.*"
+ ]
+})
+
+// customers.carts
+```
+
+
+
+
+---
+
+## Order Module
+
+Medusa defines a read-only link between the `Customer` data model and the [Order Module](../../order/page.mdx)'s `Order` data model. This means you can retrieve the details of a customer's orders, but you don't manage the links in a pivot table in the database. The customer of an order is determined by the `customer_id` property of the `Order` data model.
+
+### Retrieve with Query
+
+To retrieve a customer's orders with [Query](!docs!/learn/fundamentals/module-links/query), pass `orders.*` in `fields`:
+
+
+
+
+```ts
+const { data: customers } = await query.graph({
+ entity: "customer",
+ fields: [
+ "orders.*"
+ ]
+})
+
+// customers.orders
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: customers } = useQueryGraphStep({
+ entity: "customer",
+ fields: [
+ "orders.*"
+ ]
+})
+
+// customers.orders
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/fulfillment/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/fulfillment/links-to-other-modules/page.mdx
index 461f244937..234ac7d107 100644
--- a/www/apps/resources/app/commerce-modules/fulfillment/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/fulfillment/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Fulfillment Module and Other Modules`,
}
@@ -6,9 +8,21 @@ export const metadata = {
This document showcases the module links defined between the Fulfillment Module and other commerce modules.
+## Summary
+
+The Fulfillment Module has the following links to other modules:
+
+- [`Order` data model of the Order Module \<\> `Fulfillment` data model](#order-module).
+- [`Return` data model of the Order Module \<\> `Fulfillment` data model](#order-module).
+- [`PriceSet` data model of the Pricing Module \<\> `ShippingOption` data model](#pricing-module).
+- [`StockLocation` data model of the Stock Location Module \<\> `FulfillmentProvider` data model](#stock-location-module).
+- [`StockLocation` data model of the Stock Location Module \<\> `FulfillmentSet` data model](#stock-location-module).
+
+---
+
## Order Module
-The Order Module provides order-management functionalities.
+The [Order Module](../../order/page.mdx) provides order-management functionalities.
Medusa defines a link between the `Fulfillment` and `Order` data models. A fulfillment is created for an orders' items.
@@ -18,6 +32,95 @@ A fulfillment is also created for a return's items. So, Medusa defines a link be

+### Retrieve with Query
+
+To retrieve the order of a fulfillment with [Query](!docs!/learn/fundamentals/module-links/query), pass `order.*` in `fields`:
+
+
+
+To retrieve the return, pass `return.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: fulfillments } = await query.graph({
+ entity: "fulfillment",
+ fields: [
+ "order.*"
+ ]
+})
+
+// fulfillments.order
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: fulfillments } = useQueryGraphStep({
+ entity: "fulfillment",
+ fields: [
+ "order.*"
+ ]
+})
+
+// fulfillments.order
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the order of a cart, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.FULFILLMENT]: {
+ fulfillment_id: "ful_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.FULFILLMENT]: {
+ fulfillment_id: "ful_123",
+ },
+})
+```
+
+
+
+
---
## Pricing Module
@@ -28,6 +131,89 @@ Medusa defines a link between the `PriceSet` and `ShippingOption` data models. A

+### Retrieve with Query
+
+To retrieve the price set of a shipping option with [Query](!docs!/learn/fundamentals/module-links/query), pass `price_set.*` in `fields`:
+
+
+
+
+```ts
+const { data: shippingOptions } = await query.graph({
+ entity: "shipping_option",
+ fields: [
+ "price_set.*"
+ ]
+})
+
+// shippingOptions.price_set
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: shippingOptions } = useQueryGraphStep({
+ entity: "shipping_option",
+ fields: [
+ "price_set.*"
+ ]
+})
+
+// shippingOptions.price_set
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the price set of a shipping option, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.FULFILLMENT]: {
+ shipping_option_id: "so_123",
+ },
+ [Modules.PRICING]: {
+ price_set_id: "pset_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.FULFILLMENT]: {
+ shipping_option_id: "so_123",
+ },
+ [Modules.PRICING]: {
+ price_set_id: "pset_123",
+ },
+})
+```
+
+
+
+
---
## Stock Location Module
@@ -41,3 +227,92 @@ Medusa defines a link between the `FulfillmentSet` and `StockLocation` data mode
Medusa also defines a link between the `FulfillmentProvider` and `StockLocation` data models to indicate the providers that can be used in a location.

+
+### Retrieve with Query
+
+To retrieve the stock location of a fulfillment set with [Query](!docs!/learn/fundamentals/module-links/query), pass `location.*` in `fields`:
+
+
+
+To retrieve the stock location of a fulfillment provider, pass `locations.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: fulfillmentSets } = await query.graph({
+ entity: "fulfillment_set",
+ fields: [
+ "location.*"
+ ]
+})
+
+// fulfillmentSets.location
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: fulfillmentSets } = useQueryGraphStep({
+ entity: "fulfillment_set",
+ fields: [
+ "location.*"
+ ]
+})
+
+// fulfillmentSets.location
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the stock location of a fulfillment set, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.STOCK_LOCATION]: {
+ stock_location_id: "sloc_123",
+ },
+ [Modules.FULFILLMENT]: {
+ fulfillment_set_id: "fset_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.STOCK_LOCATION]: {
+ stock_location_id: "sloc_123",
+ },
+ [Modules.FULFILLMENT]: {
+ fulfillment_set_id: "fset_123",
+ },
+})
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/inventory/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/inventory/links-to-other-modules/page.mdx
index 56aed72916..2b8f3134c9 100644
--- a/www/apps/resources/app/commerce-modules/inventory/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/inventory/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Inventory Module and Other Modules`,
}
@@ -6,6 +8,21 @@ export const metadata = {
This document showcases the module links defined between the Inventory Module and other commerce modules.
+## Summary
+
+The Inventory Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`ProductVariant` data model of Product Module \<\> `InventoryItem` data model](#product-module).
+- [`InventoryLevel` data model \<\> `StockLocation` data model of Stock Location Module](#stock-location-module). (Read-only).
+
+---
+
## Product Module
Each product variant has different inventory details. Medusa defines a link between the `ProductVariant` and `InventoryItem` data models.
@@ -13,3 +30,131 @@ Each product variant has different inventory details. Medusa defines a link betw

A product variant whose `manage_inventory` property is enabled has an associated inventory item. Through that inventory's items relations in the Inventory Module, you can manage and check the variant's inventory quantity.
+
+### Retrieve with Query
+
+To retrieve the product variants of an inventory item with [Query](!docs!/learn/fundamentals/module-links/query), pass `variants.*` in `fields`:
+
+
+
+
+```ts
+const { data: inventoryItems } = await query.graph({
+ entity: "inventory_item",
+ fields: [
+ "variants.*"
+ ]
+})
+
+// inventoryItems.variants
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: inventoryItems } = useQueryGraphStep({
+ entity: "inventory_item",
+ fields: [
+ "variants.*"
+ ]
+})
+
+// inventoryItems.variants
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the variants of an inventory item, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.PRODUCT]: {
+ variant_id: "variant_123",
+ },
+ [Modules.INVENTORY]: {
+ inventory_item_id: "iitem_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.PRODUCT]: {
+ variant_id: "variant_123",
+ },
+ [Modules.INVENTORY]: {
+ inventory_item_id: "iitem_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Stock Location Module
+
+Medusa defines a read-only link between the `InventoryLevel` data model and the [Stock Location Module](../../stock-location/page.mdx)'s `StockLocation` data model. This means you can retrieve the details of an inventory level's stock locations, but you don't manage the links in a pivot table in the database. The stock location of an inventory level is determined by the `location_id` property of the `InventoryLevel` data model.
+
+### Retrieve with Query
+
+To retrieve the stock locations of an inventory level with [Query](!docs!/learn/fundamentals/module-links/query), pass `stock_locations.*` in `fields`:
+
+
+
+
+```ts
+const { data: inventoryLevels } = await query.graph({
+ entity: "inventory_level",
+ fields: [
+ "stock_locations.*"
+ ]
+})
+
+// inventoryLevels.stock_locations
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: inventoryLevels } = useQueryGraphStep({
+ entity: "inventory_level",
+ fields: [
+ "stock_locations.*"
+ ]
+})
+
+// inventoryLevels.stock_locations
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/order/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/order/links-to-other-modules/page.mdx
index 51c0410437..07c028281b 100644
--- a/www/apps/resources/app/commerce-modules/order/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/order/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Order Module and Other Modules`,
}
@@ -6,14 +8,166 @@ export const metadata = {
This document showcases the module links defined between the Order Module and other commerce modules.
+## Summary
+
+The Order Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`Order` data model \<\> `Customer` data model of Customer Module](#customer-module). (Read-only).
+- [`Order` data model \<\> `Cart` data model of Cart Module](#cart-module).
+- [`Order` data model \<\> `Fulfillment` data model of Fulfillment Module](#fulfillment-module).
+- [`Return` data model \<\> `Fulfillment` data model of Fulfillment Module](#fulfillment-module).
+- [`Order` data model \<\> `PaymentCollection` data model of Payment Module](#payment-module).
+- [`OrderClaim` data model \<\> `PaymentCollection` data model of Payment Module](#payment-module).
+- [`OrderExchange` data model \<\> `PaymentCollection` data model of Payment Module](#payment-module).
+- [`Order` data model \<\> `Product` data model of Product Module](#product-module). (Read-only).
+- [`Order` data model \<\> `Promotion` data model of Promotion Module](#promotion-module).
+- [`Order` data model \<\> `Region` data model of Region Module](#region-module). (Read-only).
+- [`Order` data model \<\> `SalesChannel` data model of Sales Channel Module](#sales-channel-module). (Read-only).
+
+---
+
+## Customer Module
+
+Medusa defines a read-only link between the `Order` data model and the [Customer Module](../../customer/page.mdx)'s `Customer` data model. This means you can retrieve the details of an order's customer, but you don't manage the links in a pivot table in the database. The customer of an order is determined by the `customer_id` property of the `Order` data model.
+
+### Retrieve with Query
+
+To retrieve the customer of an order with [Query](!docs!/learn/fundamentals/module-links/query), pass `customer.*` in `fields`:
+
+
+
+
+```ts
+const { data: orders } = await query.graph({
+ entity: "order",
+ fields: [
+ "customer.*"
+ ]
+})
+
+// orders.customer
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: orders } = useQueryGraphStep({
+ entity: "order",
+ fields: [
+ "customer.*"
+ ]
+})
+
+// orders.customer
+```
+
+
+
+
+---
+
## Cart Module
-The Cart Module provides cart-management features.
+The [Cart Module](../../cart/page.mdx) provides cart-management features.
Medusa defines a link between the `Order` and `Cart` data models. The order is linked to the cart used for the purchased.

+### Retrieve with Query
+
+To retrieve the cart of an order with [Query](!docs!/learn/fundamentals/module-links/query), pass `cart.*` in `fields`:
+
+
+
+
+```ts
+const { data: orders } = await query.graph({
+ entity: "order",
+ fields: [
+ "cart.*"
+ ]
+})
+
+// orders.cart
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: orders } = useQueryGraphStep({
+ entity: "order",
+ fields: [
+ "cart.*"
+ ]
+})
+
+// orders.cart
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the cart of an order, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+})
+```
+
+
+
+
---
## Fulfillment Module
@@ -22,11 +176,99 @@ A fulfillment is created for an orders' items. Medusa defines a link between the

-
A fulfillment is also created for a return's items. So, Medusa defines a link between the `Fulfillment` and `Return` data models.

+### Retrieve with Query
+
+To retrieve the fulfillments of an order with [Query](!docs!/learn/fundamentals/module-links/query), pass `fulfillments.*` in `fields`:
+
+
+
+To retrieve the fulfillments of a return, pass `fulfillments.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: orders } = await query.graph({
+ entity: "order",
+ fields: [
+ "fulfillments.*"
+ ]
+})
+
+// orders.fulfillments
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: orders } = useQueryGraphStep({
+ entity: "order",
+ fields: [
+ "fulfillments.*"
+ ]
+})
+
+// orders.fulfillments
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the fulfillments of an order, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.FULFILLMENT]: {
+ fulfillment_id: "ful_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.FULFILLMENT]: {
+ fulfillment_id: "ful_123",
+ },
+})
+```
+
+
+
+
---
## Payment Module
@@ -37,6 +279,143 @@ So, Medusa defines links between the `PaymentCollection` data model and the `Ord

+### Retrieve with Query
+
+To retrieve the payment collections of an order, order exchange, or order claim with [Query](!docs!/learn/fundamentals/module-links/query), pass `payment_collections.*` in `fields`:
+
+
+
+
+```ts
+const { data: orders } = await query.graph({
+ entity: "order",
+ fields: [
+ "payment_collections.*"
+ ]
+})
+
+// orders.payment_collections
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: orders } = useQueryGraphStep({
+ entity: "order",
+ fields: [
+ "payment_collections.*"
+ ]
+})
+
+// orders.payment_collections
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the payment collections of an order, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_collection_id: "paycol_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_collection_id: "paycol_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Product Module
+
+Medusa defines read-only links between:
+
+- the `OrderLineItem` data model and the [Product Module](../../product/page.mdx)'s `Product` data model. This means you can retrieve the details of a line item's product, but you don't manage the links in a pivot table in the database. The product of a line item is determined by the `product_id` property of the `OrderLineItem` data model.
+- the `OrderLineItem` data model and the [Product Module](../../product/page.mdx)'s `ProductVariant` data model. This means you can retrieve the details of a line item's variant, but you don't manage the links in a pivot table in the database. The variant of a line item is determined by the `variant_id` property of the `OrderLineItem` data model.
+
+### Retrieve with Query
+
+To retrieve the variant of a line item with [Query](!docs!/learn/fundamentals/module-links/query), pass `variant.*` in `fields`:
+
+
+
+To retrieve the product, pass `product.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: lineItems } = await query.graph({
+ entity: "order_line_item",
+ fields: [
+ "variant.*"
+ ]
+})
+
+// lineItems.variant
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: lineItems } = useQueryGraphStep({
+ entity: "order_line_item",
+ fields: [
+ "variant.*"
+ ]
+})
+
+// lineItems.variant
+```
+
+
+
+
---
## Promotion Module
@@ -44,3 +423,176 @@ So, Medusa defines links between the `PaymentCollection` data model and the `Ord
An order is associated with the promotion applied on it. Medusa defines a link between the `Order` and `Promotion` data models.

+
+### Retrieve with Query
+
+To retrieve the promotion applied on an order with [Query](!docs!/learn/fundamentals/module-links/query), pass `promotion.*` in `fields`:
+
+
+
+
+```ts
+const { data: orders } = await query.graph({
+ entity: "order",
+ fields: [
+ "promotion.*"
+ ]
+})
+
+// orders.promotion
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: orders } = useQueryGraphStep({
+ entity: "order",
+ fields: [
+ "promotion.*"
+ ]
+})
+
+// orders.promotion
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the promotion of an order, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.PROMOTION]: {
+ promotion_id: "promo_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.PROMOTION]: {
+ promotion_id: "promo_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Region Module
+
+Medusa defines a read-only link between the `Order` data model and the [Region Module](../../region/page.mdx)'s `Region` data model. This means you can retrieve the details of an order's region, but you don't manage the links in a pivot table in the database. The region of an order is determined by the `region_id` property of the `Order` data model.
+
+### Retrieve with Query
+
+To retrieve the region of an order with [Query](!docs!/learn/fundamentals/module-links/query), pass `region.*` in `fields`:
+
+
+
+
+```ts
+const { data: orders } = await query.graph({
+ entity: "order",
+ fields: [
+ "region.*"
+ ]
+})
+
+// orders.region
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: orders } = useQueryGraphStep({
+ entity: "order",
+ fields: [
+ "region.*"
+ ]
+})
+
+// orders.region
+```
+
+
+
+
+---
+
+## Sales Channel Module
+
+Medusa defines a read-only link between the `Order` data model and the [Sales Channel Module](../../sales-channel/page.mdx)'s `SalesChannel` data model. This means you can retrieve the details of an order's sales channel, but you don't manage the links in a pivot table in the database. The sales channel of an order is determined by the `sales_channel_id` property of the `Order` data model.
+
+### Retrieve with Query
+
+To retrieve the sales channel of an order with [Query](!docs!/learn/fundamentals/module-links/query), pass `sales_channel.*` in `fields`:
+
+
+
+
+```ts
+const { data: orders } = await query.graph({
+ entity: "order",
+ fields: [
+ "sales_channel.*"
+ ]
+})
+
+// orders.sales_channel
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: orders } = useQueryGraphStep({
+ entity: "order",
+ fields: [
+ "sales_channel.*"
+ ]
+})
+
+// orders.sales_channel
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/payment/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/payment/links-to-other-modules/page.mdx
index 5e32a58e64..14af06d51b 100644
--- a/www/apps/resources/app/commerce-modules/payment/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/payment/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Payment Module and Other Modules`,
}
@@ -6,6 +8,18 @@ export const metadata = {
This document showcases the module links defined between the Payment Module and other commerce modules.
+## Summary
+
+The Payment Module has the following links to other modules:
+
+- [`Cart` data model of Cart Module \<\> `PaymentCollection` data model](#cart-module).
+- [`Order` data model of Order Module \<\> `PaymentCollection` data model](#order-module).
+- [`OrderClaim` data model of Order Module \<\> `PaymentCollection` data model](#order-module).
+- [`OrderExchange` data model of Order Module \<\> `PaymentCollection` data model](#order-module).
+- [`Region` data model of Region Module \<\> `PaymentProvider` data model](#region-module).
+
+---
+
## Cart Module
The Cart Module provides cart-related features, but not payment processing.
@@ -14,6 +28,88 @@ Medusa defines a link between the `Cart` and `PaymentCollection` data models. A
Learn more about this relation in [this documentation](../payment-collection/page.mdx#usage-with-the-cart-module).
+### Retrieve with Query
+
+To retrieve the cart associated with the payment collection with [Query](!docs!/learn/fundamentals/module-links/query), pass `cart.*` in `fields`:
+
+
+
+
+```ts
+const { data: paymentCollections } = await query.graph({
+ entity: "payment_collection",
+ fields: [
+ "cart.*"
+ ]
+})
+
+// paymentCollections.cart
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: paymentCollections } = useQueryGraphStep({
+ entity: "payment_collection",
+ fields: [
+ "cart.*"
+ ]
+})
+
+// paymentCollections.cart
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the payment collection of a cart, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_collection_id: "paycol_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_collection_id: "paycol_123",
+ },
+})
+```
+
+
+
+
---
## Order Module
@@ -24,6 +120,89 @@ So, Medusa defines links between the `PaymentCollection` data model and the `Ord

+### Retrieve with Query
+
+To retrieve the order of a payment collection with [Query](!docs!/learn/fundamentals/module-links/query), pass `order.*` in `fields`:
+
+
+
+
+```ts
+const { data: paymentCollections } = await query.graph({
+ entity: "payment_collection",
+ fields: [
+ "order.*"
+ ]
+})
+
+// paymentCollections.order
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: paymentCollections } = useQueryGraphStep({
+ entity: "payment_collection",
+ fields: [
+ "order.*"
+ ]
+})
+
+// paymentCollections.order
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the payment collections of an order, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_collection_id: "paycol_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_collection_id: "paycol_123",
+ },
+})
+```
+
+
+
+
---
## Region Module
@@ -33,3 +212,86 @@ You can specify for each region which payment providers are available. The Medus

This increases the flexibility of your store. For example, you only show during checkout the payment providers associated with the cart's region.
+
+### Retrieve with Query
+
+To retrieve the regions of a payment provider with [Query](!docs!/learn/fundamentals/module-links/query), pass `regions.*` in `fields`:
+
+
+
+
+```ts
+const { data: paymentProviders } = await query.graph({
+ entity: "payment_provider",
+ fields: [
+ "regions.*"
+ ]
+})
+
+// paymentProviders.regions
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: paymentProviders } = useQueryGraphStep({
+ entity: "payment_provider",
+ fields: [
+ "regions.*"
+ ]
+})
+
+// paymentProviders.regions
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the payment providers in a region, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.REGION]: {
+ region_id: "reg_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_provider_id: "pp_stripe_stripe",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.REGION]: {
+ region_id: "reg_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_provider_id: "pp_stripe_stripe",
+ },
+})
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/pricing/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/pricing/links-to-other-modules/page.mdx
index debc6df062..5fb0e16c40 100644
--- a/www/apps/resources/app/commerce-modules/pricing/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/pricing/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Pricing Module and Other Modules`,
}
@@ -6,6 +8,15 @@ export const metadata = {
This document showcases the module links defined between the Pricing Module and other commerce modules.
+## Summary
+
+The Pricing Module has the following links to other modules:
+
+- [`ShippingOption` data model of Fulfillment Module \<\> `PriceSet` data model](#fulfillment-module).
+- [`ProductVariant` data model of Product Module \<\> `PriceSet` data model](#product-module).
+
+---
+
## Fulfillment Module
The Fulfillment Module provides fulfillment-related functionalities, including shipping options that the customer chooses from when they place their order. However, it doesn't provide pricing-related functionalities for these options.
@@ -14,6 +25,89 @@ Medusa defines a link between the `PriceSet` and `ShippingOption` data models. A

+### Retrieve with Query
+
+To retrieve the shipping option of a price set with [Query](!docs!/learn/fundamentals/module-links/query), pass `shipping_option.*` in `fields`:
+
+
+
+
+```ts
+const { data: priceSets } = await query.graph({
+ entity: "price_set",
+ fields: [
+ "shipping_option.*"
+ ]
+})
+
+// priceSets.shipping_option
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: priceSets } = useQueryGraphStep({
+ entity: "price_set",
+ fields: [
+ "shipping_option.*"
+ ]
+})
+
+// priceSets.shipping_option
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the price set of a shipping option, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.FULFILLMENT]: {
+ shipping_option_id: "so_123",
+ },
+ [Modules.PRICING]: {
+ price_set_id: "pset_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.FULFILLMENT]: {
+ shipping_option_id: "so_123",
+ },
+ [Modules.PRICING]: {
+ price_set_id: "pset_123",
+ },
+})
+```
+
+
+
+
---
## Product Module
@@ -27,3 +121,86 @@ Medusa defines a link between the `ProductVariant` and the `PriceSet`. A product
So, when you want to add prices for a product variant, you create a price set and add the prices to it.
You can then benefit from adding rules to prices or using the `calculatePrices` method to retrieve the price of a product variant within a specified context.
+
+### Retrieve with Query
+
+To retrieve the variant of a price set with [Query](!docs!/learn/fundamentals/module-links/query), pass `variant.*` in `fields`:
+
+
+
+
+```ts
+const { data: priceSets } = await query.graph({
+ entity: "price_set",
+ fields: [
+ "variant.*"
+ ]
+})
+
+// priceSets.variant
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: priceSets } = useQueryGraphStep({
+ entity: "price_set",
+ fields: [
+ "variant.*"
+ ]
+})
+
+// priceSets.variant
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the price set of a variant, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.PRODUCT]: {
+ variant_id: "variant_123",
+ },
+ [Modules.PRICING]: {
+ price_set_id: "pset_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.PRODUCT]: {
+ variant_id: "variant_123",
+ },
+ [Modules.PRICING]: {
+ price_set_id: "pset_123",
+ },
+})
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/product/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/product/links-to-other-modules/page.mdx
index d4c39b7f43..04fd9fedbf 100644
--- a/www/apps/resources/app/commerce-modules/product/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/product/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Product Module and Other Modules`,
}
@@ -6,25 +8,75 @@ export const metadata = {
This document showcases the module links defined between the Product Module and other commerce modules.
-## Pricing Module
+## Summary
-The Product Module doesn't provide pricing-related features.
+The Product Module has the following links to other modules:
-Instead, Medusa defines a link between the `ProductVariant` and the `PriceSet` data models. A product variant’s prices are stored belonging to a price set.
+
-
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
-So, to add prices for a product variant, create a price set and add the prices to it.
+
+
+- [`Product` data model \<\> `Cart` data model of Cart Module](#cart-module). (Read-only).
+- [`Product` data model \<\> `InventoryItem` data model of Inventory Module](#inventory-module).
+- [`Product` data model \<\> `Order` data model of Order Module](#order-module). (Read-only).
+- [`ProductVariant` data model \<\> `PriceSet` data model of Pricing Module](#pricing-module).
+- [`Product` data model \<\> `SalesChannel` data model of Sales Channel Module](#sales-channel-module).
---
-## Sales Channel Module
+## Cart Module
-The Sales Channel Module provides functionalities to manage multiple selling channels in your store.
+Medusa defines read-only links between:
-Medusa defines a link between the `Product` and `SalesChannel` data models. A product can have different availability in different sales channels.
+- The `Product` data model and the [Cart Module](../../cart/page.mdx)'s `LineItem` data model. This means you can retrieve the details of a line item's product, but you don't manage the links in a pivot table in the database. The product of a line item is determined by the `product_id` property of the `LineItem` data model.
+- The `ProductVariant` data model and the [Cart Module](../../cart/page.mdx)'s `LineItem` data model. This means you can retrieve the details of a line item's variant, but you don't manage the links in a pivot table in the database. The variant of a line item is determined by the `variant_id` property of the `LineItem` data model.
-
+### Retrieve with Query
+
+To retrieve the line items of a variant with [Query](!docs!/learn/fundamentals/module-links/query), pass `line_items.*` in `fields`:
+
+
+
+To retrieve the line items of a product, pass `line_items.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: variants } = await query.graph({
+ entity: "variant",
+ fields: [
+ "line_items.*"
+ ]
+})
+
+// variants.line_items
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: variants } = useQueryGraphStep({
+ entity: "variant",
+ fields: [
+ "line_items.*"
+ ]
+})
+
+// variants.line_items
+```
+
+
+
---
@@ -37,3 +89,328 @@ Medusa defines a link between the `ProductVariant` and `InventoryItem` data mode

When the `manage_inventory` property of a product variant is enabled, you can manage the variant's inventory in different locations through this relation.
+
+### Retrieve with Query
+
+To retrieve the inventory items of a product variant with [Query](!docs!/learn/fundamentals/module-links/query), pass `inventory_items.*` in `fields`:
+
+
+
+
+```ts
+const { data: variants } = await query.graph({
+ entity: "variant",
+ fields: [
+ "inventory_items.*"
+ ]
+})
+
+// variants.inventory_items
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: variants } = useQueryGraphStep({
+ entity: "variant",
+ fields: [
+ "inventory_items.*"
+ ]
+})
+
+// variants.inventory_items
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the inventory items of a variant, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.PRODUCT]: {
+ variant_id: "variant_123",
+ },
+ [Modules.INVENTORY]: {
+ inventory_item_id: "iitem_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.PRODUCT]: {
+ variant_id: "variant_123",
+ },
+ [Modules.INVENTORY]: {
+ inventory_item_id: "iitem_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Order Module
+
+Medusa defines read-only links between:
+
+- the `Product` data model and the [Order Module](../../order/page.mdx)'s `OrderLineItem` data model. This means you can retrieve the details of a line item's product, but you don't manage the links in a pivot table in the database. The product of a line item is determined by the `product_id` property of the `OrderLineItem` data model.
+- the `ProductVariant` data model and the [Order Module](../../order/page.mdx)'s `OrderLineItem` data model. This means you can retrieve the details of a line item's variant, but you don't manage the links in a pivot table in the database. The variant of a line item is determined by the `variant_id` property of the `OrderLineItem` data model.
+
+### Retrieve with Query
+
+To retrieve the order line items of a variant with [Query](!docs!/learn/fundamentals/module-links/query), pass `order_items.*` in `fields`:
+
+
+
+To retrieve a product's order line items, pass `order_items.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: variants } = await query.graph({
+ entity: "variant",
+ fields: [
+ "order_items.*"
+ ]
+})
+
+// variants.order_items
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: variants } = useQueryGraphStep({
+ entity: "variant",
+ fields: [
+ "order_items.*"
+ ]
+})
+
+// variants.order_items
+```
+
+
+
+
+---
+
+## Pricing Module
+
+The Product Module doesn't provide pricing-related features.
+
+Instead, Medusa defines a link between the `ProductVariant` and the `PriceSet` data models. A product variant’s prices are stored belonging to a price set.
+
+
+
+So, to add prices for a product variant, create a price set and add the prices to it.
+
+### Retrieve with Query
+
+To retrieve the price set of a variant with [Query](!docs!/learn/fundamentals/module-links/query), pass `price_set.*` in `fields`:
+
+
+
+
+```ts
+const { data: variants } = await query.graph({
+ entity: "variant",
+ fields: [
+ "price_set.*"
+ ]
+})
+
+// variants.price_set
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: variants } = useQueryGraphStep({
+ entity: "variant",
+ fields: [
+ "price_set.*"
+ ]
+})
+
+// variants.price_set
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the price set of a variant, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.PRODUCT]: {
+ variant_id: "variant_123",
+ },
+ [Modules.PRICING]: {
+ price_set_id: "pset_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.PRODUCT]: {
+ variant_id: "variant_123",
+ },
+ [Modules.PRICING]: {
+ price_set_id: "pset_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Sales Channel Module
+
+The Sales Channel Module provides functionalities to manage multiple selling channels in your store.
+
+Medusa defines a link between the `Product` and `SalesChannel` data models. A product can have different availability in different sales channels.
+
+
+
+### Retrieve with Query
+
+To retrieve the sales channels of a product with [Query](!docs!/learn/fundamentals/module-links/query), pass `sales_channels.*` in `fields`:
+
+
+
+
+```ts
+const { data: products } = await query.graph({
+ entity: "product",
+ fields: [
+ "sales_channels.*"
+ ]
+})
+
+// products.sales_channels
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: products } = useQueryGraphStep({
+ entity: "product",
+ fields: [
+ "sales_channels.*"
+ ]
+})
+
+// products.sales_channels
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the sales channels of a product, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.PRODUCT]: {
+ product_id: "prod_123",
+ },
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.PRODUCT]: {
+ product_id: "prod_123",
+ },
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+})
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/promotion/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/promotion/links-to-other-modules/page.mdx
index c81834fbee..356a3f9134 100644
--- a/www/apps/resources/app/commerce-modules/promotion/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/promotion/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Promotion Module and Other Modules`,
}
@@ -6,16 +8,206 @@ export const metadata = {
This document showcases the module links defined between the Promotion Module and other commerce modules.
+## Summary
+
+The Promotion Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`Cart` data model of the Cart Module \<\> `Promotion` data model](#cart-module).
+- [`LineItemAdjustment` data model of the Cart Module \<\> `Promotion` data model](#cart-module). (Read-only).
+- [`Order` data model of the Order Module \<\> `Promotion` data model](#order-module).
+
+---
+
## Cart Module
-A promotion can be applied on line items and shipping methods of a cart. Medusa defines a link between the `Cart`, `LineItemAdjustment`, and `Promotion` data models.
+A promotion can be applied on line items and shipping methods of a cart. Medusa defines a link between the `Cart` and `Promotion` data models.

+Medusa also defines a read-only link between the `Promotion` data model and the [Cart Module](../../cart/page.mdx)'s `LineItemAdjustment` data model. This means you can retrieve the details of the promotion applied on a line item, but you don't manage the links in a pivot table in the database. The promotion of a line item is determined by the `promotion_id` property of the `LineItemAdjustment` data model.
+
+### Retrieve with Query
+
+To retrieve the carts that a promotion is applied on with [Query](!docs!/learn/fundamentals/module-links/query), pass `carts.*` in `fields`:
+
+
+
+To retrieve the line item adjustments of a promotion, pass `line_item_adjustments.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: promotions } = await query.graph({
+ entity: "promotion",
+ fields: [
+ "carts.*"
+ ]
+})
+
+// promotions.carts
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: promotions } = useQueryGraphStep({
+ entity: "promotion",
+ fields: [
+ "carts.*"
+ ]
+})
+
+// promotions.carts
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the promotions of a cart, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.PROMOTION]: {
+ promotion_id: "promo_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.CART]: {
+ cart_id: "cart_123",
+ },
+ [Modules.PROMOTION]: {
+ promotion_id: "promo_123",
+ },
+})
+```
+
+
+
+
---
## Order Module
An order is associated with the promotion applied on it. Medusa defines a link between the `Order` and `Promotion` data models.
-
\ No newline at end of file
+
+
+### Retrieve with Query
+
+To retrieve the orders a promotion is applied on with [Query](!docs!/learn/fundamentals/module-links/query), pass `orders.*` in `fields`:
+
+
+
+
+```ts
+const { data: promotions } = await query.graph({
+ entity: "promotion",
+ fields: [
+ "orders.*"
+ ]
+})
+
+// promotions.orders
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: promotions } = useQueryGraphStep({
+ entity: "promotion",
+ fields: [
+ "orders.*"
+ ]
+})
+
+// promotions.orders
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the promotion of an order, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.PROMOTION]: {
+ promotion_id: "promo_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.ORDER]: {
+ order_id: "order_123",
+ },
+ [Modules.PROMOTION]: {
+ promotion_id: "promo_123",
+ },
+})
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/region/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/region/links-to-other-modules/page.mdx
index a3cd4b4a86..0888143599 100644
--- a/www/apps/resources/app/commerce-modules/region/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/region/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Region Module and Other Modules`,
}
@@ -6,6 +8,112 @@ export const metadata = {
This document showcases the module links defined between the Region Module and other commerce modules.
+## Summary
+
+The Region Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`Region` data model \<\> `Cart` data model of the Cart Module](#cart-module). (Read-only)
+- [`Region` data model \<\> `Order` data model of the Order Module](#order-module). (Read-only)
+- [`Region` data model \<\> `PaymentProvider` data model of the Payment Module](#payment-module).
+
+---
+
+## Cart Module
+
+Medusa defines a read-only link between the `Region` data model and the [Cart Module](../../cart/page.mdx)'s `Cart` data model. This means you can retrieve the details of a region's carts, but you don't manage the links in a pivot table in the database. The region of a cart is determined by the `region_id` property of the `Cart` data model.
+
+### Retrieve with Query
+
+To retrieve the carts of a region with [Query](!docs!/learn/fundamentals/module-links/query), pass `carts.*` in `fields`:
+
+
+
+
+```ts
+const { data: regions } = await query.graph({
+ entity: "region",
+ fields: [
+ "carts.*"
+ ]
+})
+
+// regions.carts
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: regions } = useQueryGraphStep({
+ entity: "region",
+ fields: [
+ "carts.*"
+ ]
+})
+
+// regions.carts
+```
+
+
+
+
+---
+
+## Order Module
+
+Medusa defines a read-only link between the `Region` data model and the [Cart Module](../../cart/page.mdx)'s `Cart` data model. This means you can retrieve the details of a region's orders, but you don't manage the links in a pivot table in the database. The region of an order is determined by the `region_id` property of the `Order` data model.
+
+### Retrieve with Query
+
+To retrieve the orders of a region with [Query](!docs!/learn/fundamentals/module-links/query), pass `orders.*` in `fields`:
+
+
+
+
+```ts
+const { data: regions } = await query.graph({
+ entity: "region",
+ fields: [
+ "orders.*"
+ ]
+})
+
+// regions.orders
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: regions } = useQueryGraphStep({
+ entity: "region",
+ fields: [
+ "orders.*"
+ ]
+})
+
+// regions.orders
+```
+
+
+
+
+---
+
## Payment Module
You can specify for each region which payment providers are available for use.
@@ -13,3 +121,86 @@ You can specify for each region which payment providers are available for use.
Medusa defines a module link between the `PaymentProvider` and the `Region` data models.

+
+### Retrieve with Query
+
+To retrieve the payment providers of a region with [Query](!docs!/learn/fundamentals/module-links/query), pass `payment_providers.*` in `fields`:
+
+
+
+
+```ts
+const { data: regions } = await query.graph({
+ entity: "region",
+ fields: [
+ "payment_providers.*"
+ ]
+})
+
+// regions.payment_providers
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: regions } = useQueryGraphStep({
+ entity: "region",
+ fields: [
+ "payment_providers.*"
+ ]
+})
+
+// regions.payment_providers
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the payment providers in a region, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.REGION]: {
+ region_id: "reg_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_provider_id: "pp_stripe_stripe",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.REGION]: {
+ region_id: "reg_123",
+ },
+ [Modules.PAYMENT]: {
+ payment_provider_id: "pp_stripe_stripe",
+ },
+})
+```
+
+
+
\ No newline at end of file
diff --git a/www/apps/resources/app/commerce-modules/sales-channel/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/sales-channel/links-to-other-modules/page.mdx
index 379c586909..fb68fb6608 100644
--- a/www/apps/resources/app/commerce-modules/sales-channel/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/sales-channel/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Sales Channel Module and Other Modules`,
}
@@ -6,6 +8,24 @@ export const metadata = {
This document showcases the module links defined between the Sales Channel Module and other commerce modules.
+## Summary
+
+The Sales Channel Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`ApiKey` data model of the API Key Module \<\> `SalesChannel` data model](#api-key-module).
+- [`SalesChannel` data model \<\> `Cart` data model of the Cart Module](#cart-module). (Read-only)
+- [`SalesChannel` data model \<\> `Order` data model of the Order Module](#order-module). (Read-only)
+- [`Product` data model of the Product Module \<\> `SalesChannel` data model](#product-module).
+- [`SalesChannel` data model \<\> `StockLocation` data model of the Stock Location Module](#stock-location-module).
+
+---
+
## API Key Module
A publishable API key allows you to easily specify the sales channel scope in a client request.
@@ -14,6 +34,179 @@ Medusa defines a link between the `ApiKey` and the `SalesChannel` data models.

+### Retrieve with Query
+
+To retrieve the API keys associated with a sales channel with [Query](!docs!/learn/fundamentals/module-links/query), pass `publishable_api_keys.*` in `fields`:
+
+
+
+
+```ts
+const { data: salesChannels } = await query.graph({
+ entity: "sales_channel",
+ fields: [
+ "publishable_api_keys.*"
+ ]
+})
+
+// salesChannels.publishable_api_keys
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: salesChannels } = useQueryGraphStep({
+ entity: "sales_channel",
+ fields: [
+ "publishable_api_keys.*"
+ ]
+})
+
+// salesChannels.publishable_api_keys
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the sales channels of an API key, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.API_KEY]: {
+ api_key_id: "apk_123",
+ },
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.API_KEY]: {
+ api_key_id: "apk_123",
+ },
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Cart Module
+
+Medusa defines a read-only link between the `SalesChannel` data model and the [Cart Module](../../cart/page.mdx)'s `SalesChannel` data model. This means you can retrieve the details of a sales channel's carts, but you don't manage the links in a pivot table in the database. The sales channel of a cart is determined by the `sales_channel_id` property of the `Cart` data model.
+
+### Retrieve with Query
+
+To retrieve the carts of a sales channel with [Query](!docs!/learn/fundamentals/module-links/query), pass `carts.*` in `fields`:
+
+
+
+
+```ts
+const { data: salesChannels } = await query.graph({
+ entity: "sales_channel",
+ fields: [
+ "carts.*"
+ ]
+})
+
+// salesChannels.carts
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: salesChannels } = useQueryGraphStep({
+ entity: "sales_channel",
+ fields: [
+ "carts.*"
+ ]
+})
+
+// salesChannels.carts
+```
+
+
+
+
+---
+
+## Order Module
+
+Medusa defines a read-only link between the `SalesChannel` data model and the [Order Module](../../order/page.mdx)'s `Order` data model. This means you can retrieve the details of a sales channel's orders, but you don't manage the links in a pivot table in the database. The sales channel of an order is determined by the `sales_channel_id` property of the `Order` data model.
+
+### Retrieve with Query
+
+To retrieve the orders of a sales channel with [Query](!docs!/learn/fundamentals/module-links/query), pass `orders.*` in `fields`:
+
+
+
+
+```ts
+const { data: salesChannels } = await query.graph({
+ entity: "sales_channel",
+ fields: [
+ "orders.*"
+ ]
+})
+
+// salesChannels.orders
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: salesChannels } = useQueryGraphStep({
+ entity: "sales_channel",
+ fields: [
+ "orders.*"
+ ]
+})
+
+// salesChannels.orders
+```
+
+
+
+
---
## Product Module
@@ -24,6 +217,89 @@ A product has different availability for different sales channels. Medusa define
A product can be available in more than one sales channel. You can retrieve only the products of a sales channel.
+### Retrieve with Query
+
+To retrieve the products of a sales channel with [Query](!docs!/learn/fundamentals/module-links/query), pass `products.*` in `fields`:
+
+
+
+
+```ts
+const { data: salesChannels } = await query.graph({
+ entity: "sales_channel",
+ fields: [
+ "products.*"
+ ]
+})
+
+// salesChannels.products
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: salesChannels } = useQueryGraphStep({
+ entity: "sales_channel",
+ fields: [
+ "products.*"
+ ]
+})
+
+// salesChannels.products
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the sales channels of a product, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.PRODUCT]: {
+ product_id: "prod_123",
+ },
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.PRODUCT]: {
+ product_id: "prod_123",
+ },
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+})
+```
+
+
+
+
---
## Stock Location Module
@@ -33,3 +309,86 @@ A stock location is associated with a sales channel. This scopes inventory quant
Medusa defines a link between the `SalesChannel` and `StockLocation` data models.

+
+### Retrieve with Query
+
+To retrieve the stock locations of a sales channel with [Query](!docs!/learn/fundamentals/module-links/query), pass `stock_locations.*` in `fields`:
+
+
+
+
+```ts
+const { data: salesChannels } = await query.graph({
+ entity: "sales_channel",
+ fields: [
+ "stock_locations.*"
+ ]
+})
+
+// salesChannels.stock_locations
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: salesChannels } = useQueryGraphStep({
+ entity: "sales_channel",
+ fields: [
+ "stock_locations.*"
+ ]
+})
+
+// salesChannels.stock_locations
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the stock locations of a sales channel, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+ [Modules.STOCK_LOCATION]: {
+ sales_channel_id: "sloc_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+ [Modules.STOCK_LOCATION]: {
+ sales_channel_id: "sloc_123",
+ },
+})
+```
+
+
+
diff --git a/www/apps/resources/app/commerce-modules/stock-location/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/stock-location/links-to-other-modules/page.mdx
index 75639acbb0..1845c55247 100644
--- a/www/apps/resources/app/commerce-modules/stock-location/links-to-other-modules/page.mdx
+++ b/www/apps/resources/app/commerce-modules/stock-location/links-to-other-modules/page.mdx
@@ -1,3 +1,5 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
export const metadata = {
title: `Links between Stock Location Module and Other Modules`,
}
@@ -6,6 +8,23 @@ export const metadata = {
This document showcases the module links defined between the Stock Location Module and other commerce modules.
+## Summary
+
+The Stock Location Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`FulfillmentSet` data model of the Fulfillment Module \<\> `StockLocation` data model](#fulfillment-module).
+- [`FulfillmentProvider` data model of the Fulfillment Module \<\> `StockLocation` data model](#fulfillment-module).
+- [`StockLocation` data model \<\> `Inventory` data model of the Inventory Module](#inventory-module).
+- [`SalesChannel` data model of the Sales Channel Module \<\> `StockLocation` data model](#sales-channel-module).
+
+---
+
## Fulfillment Module
A fulfillment set can be conditioned to a specific stock location.
@@ -18,6 +37,140 @@ Medusa also defines a link between the `FulfillmentProvider` and `StockLocation`

+### Retrieve with Query
+
+To retrieve the fulfillment sets of a stock location with [Query](!docs!/learn/fundamentals/module-links/query), pass `fulfillment_sets.*` in `fields`:
+
+
+
+To retrieve the fulfillment providers, pass `fulfillment_providers.*` in `fields`.
+
+
+
+
+
+
+```ts
+const { data: stockLocations } = await query.graph({
+ entity: "stock_location",
+ fields: [
+ "fulfillment_sets.*"
+ ]
+})
+
+// stockLocations.fulfillment_sets
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: stockLocations } = useQueryGraphStep({
+ entity: "stock_location",
+ fields: [
+ "fulfillment_sets.*"
+ ]
+})
+
+// stockLocations.fulfillment_sets
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the stock location of a fulfillment set, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.STOCK_LOCATION]: {
+ stock_location_id: "sloc_123",
+ },
+ [Modules.FULFILLMENT]: {
+ fulfillment_set_id: "fset_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.STOCK_LOCATION]: {
+ stock_location_id: "sloc_123",
+ },
+ [Modules.FULFILLMENT]: {
+ fulfillment_set_id: "fset_123",
+ },
+})
+```
+
+
+
+
+---
+
+## Inventory Module
+
+Medusa defines a read-only link between the `StockLocation` data model and the [Inventory Module](../../inventory/page.mdx)'s `InventoryLevel` data model. This means you can retrieve the details of a stock location's inventory levels, but you don't manage the links in a pivot table in the database. The stock location of an inventory level is determined by the `location_id` property of the `InventoryLevel` data model.
+
+### Retrieve with Query
+
+To retrieve the inventory levels of a stock location with [Query](!docs!/learn/fundamentals/module-links/query), pass `inventory_levels.*` in `fields`:
+
+
+
+
+```ts
+const { data: stockLocations } = await query.graph({
+ entity: "stock_location",
+ fields: [
+ "inventory_levels.*"
+ ]
+})
+
+// stockLocations.inventory_levels
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: stockLocations } = useQueryGraphStep({
+ entity: "stock_location",
+ fields: [
+ "inventory_levels.*"
+ ]
+})
+
+// stockLocations.inventory_levels
+```
+
+
+
+
---
## Sales Channel Module
@@ -27,3 +180,86 @@ A stock location is associated with a sales channel. This scopes inventory quant
Medusa defines a link between the `SalesChannel` and `StockLocation` data models.

+
+### Retrieve with Query
+
+To retrieve the sales channels of a stock location with [Query](!docs!/learn/fundamentals/module-links/query), pass `sales_channels.*` in `fields`:
+
+
+
+
+```ts
+const { data: stockLocations } = await query.graph({
+ entity: "stock_location",
+ fields: [
+ "sales_channels.*"
+ ]
+})
+
+// stockLocations.sales_channels
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: stockLocations } = useQueryGraphStep({
+ entity: "stock_location",
+ fields: [
+ "sales_channels.*"
+ ]
+})
+
+// stockLocations.sales_channels
+```
+
+
+
+
+### Manage with Remote Link
+
+To manage the stock locations of a sales channel, use [Remote Link](!docs!/learn/fundamentals/module-links/remote-link):
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+
+// ...
+
+await remoteLink.create({
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+ [Modules.STOCK_LOCATION]: {
+ sales_channel_id: "sloc_123",
+ },
+})
+```
+
+
+
+
+```ts
+import { Modules } from "@medusajs/framework/utils"
+import { createRemoteLinkStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+createRemoteLinkStep({
+ [Modules.SALES_CHANNEL]: {
+ sales_channel_id: "sc_123",
+ },
+ [Modules.STOCK_LOCATION]: {
+ sales_channel_id: "sloc_123",
+ },
+})
+```
+
+
+
diff --git a/www/apps/resources/app/commerce-modules/store/links-to-other-modules/page.mdx b/www/apps/resources/app/commerce-modules/store/links-to-other-modules/page.mdx
new file mode 100644
index 0000000000..a9710b966b
--- /dev/null
+++ b/www/apps/resources/app/commerce-modules/store/links-to-other-modules/page.mdx
@@ -0,0 +1,68 @@
+import { CodeTabs, CodeTab } from "docs-ui"
+
+export const metadata = {
+ title: `Links between Store Module and Other Modules`,
+}
+
+# {metadata.title}
+
+This document showcases the module links defined between the Store Module and other commerce modules.
+
+## Summary
+
+The Store Module has the following links to other modules:
+
+
+
+Read-only links are used to query data across modules, but the relations aren't stored in a pivot table in the database.
+
+
+
+- [`Currency` data model \<\> `Currency` data model of Currency Module](#currency-module). (Read-only).
+
+---
+
+## Currency Module
+
+The Store Module has a `Currency` data model that stores the supported currencies of a store. However, these currencies don't hold all the details of a currency, such as its name or symbol.
+
+Instead, Medusa defines a read-only link between the [Currency Module](../../currency/page.mdx)'s `Currency` data model and the Store Module's `Currency` data model. This means you can retrieve the details of a store's supported currencies, but you don't manage the links in a pivot table in the database. The currencies of a store are determined by the `currency_code` of the `Currency` data model in the Store Module.
+
+### Retrieve with Query
+
+To retrieve the details of a store's currencies with [Query](!docs!/learn/fundamentals/module-links/query), pass `supported_currencies.currency.*` in `fields`:
+
+
+
+
+```ts
+const { data: stores } = await query.graph({
+ entity: "store",
+ fields: [
+ "supported_currencies.currency.*"
+ ]
+})
+
+// stores.supported_currencies
+```
+
+
+
+
+```ts
+import { useQueryGraphStep } from "@medusajs/medusa/core-flows"
+
+// ...
+
+const { data: stores } = useQueryGraphStep({
+ entity: "store",
+ fields: [
+ "supported_currencies.currency.*"
+ ]
+})
+
+// stores.supported_currencies
+```
+
+
+
diff --git a/www/apps/resources/generated/edit-dates.mjs b/www/apps/resources/generated/edit-dates.mjs
index 543900d7e0..abca5cdb60 100644
--- a/www/apps/resources/generated/edit-dates.mjs
+++ b/www/apps/resources/generated/edit-dates.mjs
@@ -2148,21 +2148,21 @@ export const generatedEditDates = {
"app/admin-components/components/forms/page.mdx": "2024-10-09T12:48:04.229Z",
"app/commerce-modules/auth/reset-password/page.mdx": "2024-11-27T13:33:55.940Z",
"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": "2024-10-08T08:05:36.596Z",
+ "app/commerce-modules/api-key/links-to-other-modules/page.mdx": "2024-12-24T14:36:06.109Z",
"app/commerce-modules/cart/extend/page.mdx": "2024-12-11T09:05:37.041Z",
- "app/commerce-modules/cart/links-to-other-modules/page.mdx": "2024-10-08T08:22:35.190Z",
+ "app/commerce-modules/cart/links-to-other-modules/page.mdx": "2024-12-24T14:46:49.847Z",
"app/commerce-modules/customer/extend/page.mdx": "2024-12-16T14:11:47.517Z",
- "app/commerce-modules/fulfillment/links-to-other-modules/page.mdx": "2024-10-08T14:58:24.935Z",
- "app/commerce-modules/inventory/links-to-other-modules/page.mdx": "2024-10-08T15:18:30.109Z",
- "app/commerce-modules/pricing/links-to-other-modules/page.mdx": "2024-10-09T13:51:49.986Z",
+ "app/commerce-modules/fulfillment/links-to-other-modules/page.mdx": "2024-12-24T14:49:54.535Z",
+ "app/commerce-modules/inventory/links-to-other-modules/page.mdx": "2024-12-24T14:50:25.574Z",
+ "app/commerce-modules/pricing/links-to-other-modules/page.mdx": "2024-12-24T14:53:39.198Z",
"app/commerce-modules/product/extend/page.mdx": "2024-12-11T09:07:25.252Z",
- "app/commerce-modules/product/links-to-other-modules/page.mdx": "2024-10-09T14:14:09.401Z",
+ "app/commerce-modules/product/links-to-other-modules/page.mdx": "2024-12-24T14:55:21.779Z",
"app/commerce-modules/promotion/extend/page.mdx": "2024-12-11T09:07:24.137Z",
- "app/commerce-modules/promotion/links-to-other-modules/page.mdx": "2024-10-09T14:51:37.194Z",
+ "app/commerce-modules/promotion/links-to-other-modules/page.mdx": "2024-12-24T14:56:11.410Z",
"app/commerce-modules/order/edit/page.mdx": "2024-10-09T08:50:05.334Z",
- "app/commerce-modules/order/links-to-other-modules/page.mdx": "2024-10-09T11:23:05.488Z",
+ "app/commerce-modules/order/links-to-other-modules/page.mdx": "2024-12-24T14:52:22.813Z",
"app/commerce-modules/order/order-change/page.mdx": "2024-10-09T09:59:40.745Z",
- "app/commerce-modules/payment/links-to-other-modules/page.mdx": "2024-10-09T11:23:02.023Z",
+ "app/commerce-modules/payment/links-to-other-modules/page.mdx": "2024-12-24T14:53:08.217Z",
"references/core_flows/Common/Steps_Common/functions/core_flows.Common.Steps_Common.useQueryGraphStep/page.mdx": "2024-12-23T12:30:23.699Z",
"references/core_flows/Payment/Workflows_Payment/functions/core_flows.Payment.Workflows_Payment.processPaymentWorkflow/page.mdx": "2024-12-23T12:30:26.014Z",
"references/helper_steps/functions/helper_steps.useQueryGraphStep/page.mdx": "2024-12-10T14:55:09.191Z",
@@ -2211,10 +2211,10 @@ export const generatedEditDates = {
"references/fulfillment/interfaces/fulfillment.IFulfillmentModuleService/page.mdx": "2024-12-17T16:57:25.097Z",
"references/types/CommonTypes/interfaces/types.CommonTypes.RequestQueryFields/page.mdx": "2024-12-09T13:21:32.865Z",
"references/utils/utils.ProductUtils/page.mdx": "2024-12-10T14:54:57.156Z",
- "app/commerce-modules/region/links-to-other-modules/page.mdx": "2024-10-15T14:10:50.853Z",
- "app/commerce-modules/sales-channel/links-to-other-modules/page.mdx": "2024-10-15T14:25:29.097Z",
- "app/commerce-modules/stock-location/links-to-other-modules/page.mdx": "2024-10-15T14:33:11.483Z",
- "app/commerce-modules/store/links-to-other-modules/page.mdx": "2024-06-26T07:19:49.931Z",
+ "app/commerce-modules/region/links-to-other-modules/page.mdx": "2024-12-24T14:56:43.092Z",
+ "app/commerce-modules/sales-channel/links-to-other-modules/page.mdx": "2024-12-24T14:57:34.314Z",
+ "app/commerce-modules/stock-location/links-to-other-modules/page.mdx": "2024-12-24T14:58:09.715Z",
+ "app/commerce-modules/store/links-to-other-modules/page.mdx": "2024-12-24T14:58:24.038Z",
"app/examples/page.mdx": "2024-12-11T09:07:47.589Z",
"app/medusa-cli/commands/build/page.mdx": "2024-11-11T11:00:49.665Z",
"app/js-sdk/page.mdx": "2024-12-12T11:41:51.152Z",
@@ -5779,5 +5779,7 @@ export const generatedEditDates = {
"app/commerce-modules/stock-location/admin-widget-zones/page.mdx": "2024-12-24T08:38:38.403Z",
"app/commerce-modules/store/admin-widget-zones/page.mdx": "2024-12-24T08:46:28.646Z",
"app/commerce-modules/tax/admin-widget-zones/page.mdx": "2024-12-24T08:47:13.176Z",
- "app/commerce-modules/user/admin-widget-zones/page.mdx": "2024-12-24T08:48:14.186Z"
+ "app/commerce-modules/user/admin-widget-zones/page.mdx": "2024-12-24T08:48:14.186Z",
+ "app/commerce-modules/currency/links-to-other-modules/page.mdx": "2024-12-24T14:47:10.556Z",
+ "app/commerce-modules/customer/links-to-other-modules/page.mdx": "2024-12-24T14:48:54.689Z"
}
\ No newline at end of file
diff --git a/www/apps/resources/generated/files-map.mjs b/www/apps/resources/generated/files-map.mjs
index 7102e40c1f..840f7219eb 100644
--- a/www/apps/resources/generated/files-map.mjs
+++ b/www/apps/resources/generated/files-map.mjs
@@ -231,6 +231,10 @@ export const filesMap = [
"filePath": "/www/apps/resources/app/commerce-modules/currency/examples/page.mdx",
"pathname": "/commerce-modules/currency/examples"
},
+ {
+ "filePath": "/www/apps/resources/app/commerce-modules/currency/links-to-other-modules/page.mdx",
+ "pathname": "/commerce-modules/currency/links-to-other-modules"
+ },
{
"filePath": "/www/apps/resources/app/commerce-modules/currency/page.mdx",
"pathname": "/commerce-modules/currency"
@@ -255,6 +259,10 @@ export const filesMap = [
"filePath": "/www/apps/resources/app/commerce-modules/customer/extend/page.mdx",
"pathname": "/commerce-modules/customer/extend"
},
+ {
+ "filePath": "/www/apps/resources/app/commerce-modules/customer/links-to-other-modules/page.mdx",
+ "pathname": "/commerce-modules/customer/links-to-other-modules"
+ },
{
"filePath": "/www/apps/resources/app/commerce-modules/customer/page.mdx",
"pathname": "/commerce-modules/customer"
@@ -591,6 +599,10 @@ export const filesMap = [
"filePath": "/www/apps/resources/app/commerce-modules/store/examples/page.mdx",
"pathname": "/commerce-modules/store/examples"
},
+ {
+ "filePath": "/www/apps/resources/app/commerce-modules/store/links-to-other-modules/page.mdx",
+ "pathname": "/commerce-modules/store/links-to-other-modules"
+ },
{
"filePath": "/www/apps/resources/app/commerce-modules/store/page.mdx",
"pathname": "/commerce-modules/store"
diff --git a/www/apps/resources/generated/sidebar.mjs b/www/apps/resources/generated/sidebar.mjs
index 78178f2275..1c6b6b6a9d 100644
--- a/www/apps/resources/generated/sidebar.mjs
+++ b/www/apps/resources/generated/sidebar.mjs
@@ -1324,6 +1324,22 @@ export const generatedSidebar = [
"title": "Examples",
"children": []
},
+ {
+ "loaded": true,
+ "isPathHref": true,
+ "type": "sub-category",
+ "title": "Concepts",
+ "children": [
+ {
+ "loaded": true,
+ "isPathHref": true,
+ "type": "link",
+ "path": "/commerce-modules/currency/links-to-other-modules",
+ "title": "Link to Modules",
+ "children": []
+ }
+ ]
+ },
{
"loaded": true,
"isPathHref": true,
@@ -1450,6 +1466,14 @@ export const generatedSidebar = [
"path": "/commerce-modules/customer/customer-accounts",
"title": "Customer Accounts",
"children": []
+ },
+ {
+ "loaded": true,
+ "isPathHref": true,
+ "type": "link",
+ "path": "/commerce-modules/customer/links-to-other-modules",
+ "title": "Link to Modules",
+ "children": []
}
]
},
@@ -7215,6 +7239,22 @@ export const generatedSidebar = [
"title": "Examples",
"children": []
},
+ {
+ "loaded": true,
+ "isPathHref": true,
+ "type": "sub-category",
+ "title": "Concepts",
+ "children": [
+ {
+ "loaded": true,
+ "isPathHref": true,
+ "type": "link",
+ "path": "/commerce-modules/store/links-to-other-modules",
+ "title": "Link to Modules",
+ "children": []
+ }
+ ]
+ },
{
"loaded": true,
"isPathHref": true,
diff --git a/www/apps/resources/sidebars/currency.mjs b/www/apps/resources/sidebars/currency.mjs
index e4f9c082bd..57a53b2bc9 100644
--- a/www/apps/resources/sidebars/currency.mjs
+++ b/www/apps/resources/sidebars/currency.mjs
@@ -15,6 +15,17 @@ export const currencySidebar = [
path: "/commerce-modules/currency/examples",
title: "Examples",
},
+ {
+ type: "sub-category",
+ title: "Concepts",
+ children: [
+ {
+ type: "link",
+ path: "/commerce-modules/currency/links-to-other-modules",
+ title: "Link to Modules",
+ },
+ ],
+ },
{
type: "sub-category",
title: "References",
diff --git a/www/apps/resources/sidebars/customer.mjs b/www/apps/resources/sidebars/customer.mjs
index 631c947e57..3f1d6ec450 100644
--- a/www/apps/resources/sidebars/customer.mjs
+++ b/www/apps/resources/sidebars/customer.mjs
@@ -29,6 +29,11 @@ export const customerSidebar = [
path: "/commerce-modules/customer/customer-accounts",
title: "Customer Accounts",
},
+ {
+ type: "link",
+ path: "/commerce-modules/customer/links-to-other-modules",
+ title: "Link to Modules",
+ },
],
},
{
diff --git a/www/apps/resources/sidebars/store.mjs b/www/apps/resources/sidebars/store.mjs
index 985d6e1ff4..08d87591ba 100644
--- a/www/apps/resources/sidebars/store.mjs
+++ b/www/apps/resources/sidebars/store.mjs
@@ -15,6 +15,17 @@ export const storeSidebar = [
path: "/commerce-modules/store/examples",
title: "Examples",
},
+ {
+ type: "sub-category",
+ title: "Concepts",
+ children: [
+ {
+ type: "link",
+ path: "/commerce-modules/store/links-to-other-modules",
+ title: "Link to Modules",
+ },
+ ],
+ },
{
type: "sub-category",
title: "References",