* implement toc * added to projects * fixes and adapt for references * added product frontmatter * remove action menu from 404 pages
69 lines
2.2 KiB
Plaintext
69 lines
2.2 KiB
Plaintext
---
|
||
products:
|
||
- api key
|
||
---
|
||
|
||
import { CodeTabs, CodeTab } from "docs-ui"
|
||
|
||
export const metadata = {
|
||
title: `Publishable API Keys with Sales Channels`,
|
||
}
|
||
|
||
# {metadata.title}
|
||
|
||
In this document, you’ll learn what publishable API keys are and how to use them with sales channels.
|
||
|
||
## Publishable API Keys with Sales Channels
|
||
|
||
A publishable API key, provided by the API Key Module, is a client key scoped to one or more sales channels.
|
||
|
||
When sending a request to a Store API route, you must pass a publishable API key in the header of the request:
|
||
|
||
```bash
|
||
curl http://localhost:9000/store/products \
|
||
x-publishable-api-key: {your_publishable_api_key}
|
||
```
|
||
|
||
The Medusa application infers the associated sales channels and ensures that only data relevant to the sales channel are used.
|
||
|
||
---
|
||
|
||
## How to Create a Publishable API Key?
|
||
|
||
To create a publishable API key, either use the [Medusa Admin](!user-guide!/settings/developer/publishable-api-keys) or the [Admin API Routes](!api!/admin#publishable-api-keys).
|
||
|
||
---
|
||
|
||
## Access Sales Channels in Custom Store API Routes
|
||
|
||
If you create an API route under the `/store` prefix, you can access the sales channels associated with the request's publishable API key using the `publishable_key_context` property of the request object.
|
||
|
||
For example:
|
||
|
||
```ts
|
||
import { MedusaStoreRequest, MedusaResponse } from "@medusajs/framework/http"
|
||
import { getVariantAvailability } from "@medusajs/framework/utils"
|
||
|
||
export async function GET(
|
||
req: MedusaStoreRequest,
|
||
res: MedusaResponse
|
||
) {
|
||
const query = req.scope.resolve("query")
|
||
const sales_channel_ids = req.publishable_key_context.sales_channel_ids
|
||
|
||
res.json({
|
||
sales_channel_id: sales_channel_ids[0],
|
||
})
|
||
}
|
||
```
|
||
|
||
In this example, you retrieve the scope's sales channel IDs using `req.publishable_key_context.sales_channel_ids`, whose value is an array of IDs.
|
||
|
||
You can then use these IDs based on your business logic. For example, you can retrieve the sales channels' details using [Query](!docs!/learn/fundamentals/module-links/query).
|
||
|
||
<Note title="Tip">
|
||
|
||
Notice that the request object's type is `MedusaStoreRequest` instead of `MedusaRequest` to ensure the availability of the `publishable_key_context` property.
|
||
|
||
</Note>
|