docs: added Manage Customers documentation (#2911)
* docs: added Manage Customers documentation * fixed link
This commit is contained in:
1 parent
f89759f069
commit
123d910ef6
9 files changed
+257
-22
No files matched your search
@@ -0,0 +1,230 @@
|
|||||||
|
import Tabs from '@theme/Tabs';
|
||||||
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
|
# How to Manage Customers
|
||||||
|
|
||||||
|
In this document, you’ll learn how to implement customer management functionalities for admin users.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Using the customer admin REST APIs, you can manage customers, including creating, updating, and listing them.
|
||||||
|
|
||||||
|
### Scenario
|
||||||
|
|
||||||
|
You want to add or use the following admin functionalities:
|
||||||
|
|
||||||
|
- List customers
|
||||||
|
- Add a new customer
|
||||||
|
- Edit a customer’s details
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
### Medusa Components
|
||||||
|
|
||||||
|
It is assumed that you already have a Medusa server installed and set up. If not, you can follow the [quickstart guide](../../quickstart/quick-start.mdx) to get started.
|
||||||
|
|
||||||
|
### JS Client
|
||||||
|
|
||||||
|
This guide includes code snippets to send requests to your Medusa server using Medusa’s JS Client, JavaScript’s Fetch API, or cURL.
|
||||||
|
|
||||||
|
If you follow the JS Client code blocks, it’s assumed you already have [Medusa’s JS Client](../../js-client/overview.md) installed and have [created an instance of the client](../../js-client/overview.md#configuration).
|
||||||
|
|
||||||
|
### Authenticated Admin User
|
||||||
|
|
||||||
|
You must be an authenticated admin user before following along with the steps in the tutorial.
|
||||||
|
|
||||||
|
You can learn more about [authenticating as an admin user in the API reference](/api/admin/#section/Authentication).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## List Customers
|
||||||
|
|
||||||
|
You can show a list of customers by sending a request to the [List Customers](/api/admin/#tag/Customer/operation/GetCustomers) endpoint:
|
||||||
|
|
||||||
|
<Tabs groupId="request-type" wrapperClassName="code-tabs">
|
||||||
|
<TabItem value="client" label="Medusa JS Client" default>
|
||||||
|
|
||||||
|
```ts
|
||||||
|
medusa.admin.customers.list()
|
||||||
|
.then(({ customers, limit, offset, count }) => {
|
||||||
|
console.log(customers.length);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="fetch" label="Fetch API">
|
||||||
|
|
||||||
|
```ts
|
||||||
|
fetch(`<SERVER_URL>/admin/customers`, {
|
||||||
|
credentials: 'include',
|
||||||
|
})
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then(({ customers, limit, offset, count }) => {
|
||||||
|
console.log(customers.length);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="curl" label="cURL">
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -L -X GET '<SERVER_URL>/admin/customers' \
|
||||||
|
-H 'Authorization: Bearer <API_TOKEN>'
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
This request doesn’t require any path or query parameters. You can pass it optional parameters used for filtering and pagination. Check out the [API reference](/api/admin/#tag/Customer/operation/GetCustomers) to learn more.
|
||||||
|
|
||||||
|
This request returns the following data in the response:
|
||||||
|
|
||||||
|
- `customers`: An array of customers.
|
||||||
|
- `limit`: The maximum number of customers that can be returned in the request.
|
||||||
|
- `offset`: The number of customers skipped in the result.
|
||||||
|
- `count`: The total number of customers available.
|
||||||
|
|
||||||
|
:::info
|
||||||
|
|
||||||
|
You can learn more about pagination in the [API reference](/api/admin/#section/Pagination).
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Create a Customer
|
||||||
|
|
||||||
|
Admins can create customer accounts. They have to supply the customer’s credentials and basic info.
|
||||||
|
|
||||||
|
You can create a customer account by sending a request to the [Create a Customer](/api/admin/#tag/Customer/operation/PostCustomers) endpoint:
|
||||||
|
|
||||||
|
<Tabs groupId="request-type" wrapperClassName="code-tabs">
|
||||||
|
<TabItem value="client" label="Medusa JS Client" default>
|
||||||
|
|
||||||
|
```ts
|
||||||
|
medusa.admin.customers.create({
|
||||||
|
email,
|
||||||
|
password,
|
||||||
|
first_name,
|
||||||
|
last_name
|
||||||
|
})
|
||||||
|
.then(({ customer }) => {
|
||||||
|
console.log(customer.id);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="fetch" label="Fetch API">
|
||||||
|
|
||||||
|
```ts
|
||||||
|
fetch(`<SERVER_URL>/admin/customers`, {
|
||||||
|
method: 'POST',
|
||||||
|
credentials: 'include',
|
||||||
|
body: JSON.stringify({
|
||||||
|
email,
|
||||||
|
password,
|
||||||
|
first_name,
|
||||||
|
last_name
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then(({ customer }) => {
|
||||||
|
console.log(customer.id);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="curl" label="cURL">
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -L -X POST '<SERVER_URL>/admin/customers' \
|
||||||
|
-H 'Authorization: Bearer <API_TOKEN>' \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
--data-raw '{
|
||||||
|
"email": "<EMAIL>",
|
||||||
|
"first_name": "<FIRST_NAME>",
|
||||||
|
"last_name": "<LAST_NAME>",
|
||||||
|
"password": "<PASSWORD>"
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
This request requires the following body parameters:
|
||||||
|
|
||||||
|
- `email`: The email of the customer.
|
||||||
|
- `password`: The password of the customer.
|
||||||
|
- `first_name`: The customer’s first name.
|
||||||
|
- `last_name`: the customer’s last name.
|
||||||
|
|
||||||
|
You can also pass other optional parameters. To learn more, check out the [API reference](/api/admin/#tag/Customer/operation/PostCustomers).
|
||||||
|
|
||||||
|
The request returns the created customer object in the response.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Edit Customer’s Information
|
||||||
|
|
||||||
|
An admin can edit a customer’s basic information and credentials.
|
||||||
|
|
||||||
|
You can edit a customer’s information by sending a request to the [Update a Customer](/api/admin/#tag/Customer/operation/PostCustomersCustomer) endpoint:
|
||||||
|
|
||||||
|
<Tabs groupId="request-type" wrapperClassName="code-tabs">
|
||||||
|
<TabItem value="client" label="Medusa JS Client" default>
|
||||||
|
|
||||||
|
```ts
|
||||||
|
medusa.admin.customers.update(customerId, {
|
||||||
|
first_name
|
||||||
|
})
|
||||||
|
.then(({ customer }) => {
|
||||||
|
console.log(customer.id);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="fetch" label="Fetch API">
|
||||||
|
|
||||||
|
```ts
|
||||||
|
fetch(`<SERVER_URL>/admin/customers/${customerId}`, {
|
||||||
|
method: 'POST',
|
||||||
|
credentials: 'include',
|
||||||
|
body: JSON.stringify({
|
||||||
|
first_name
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then(({ customer }) => {
|
||||||
|
console.log(customer.id);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="curl" label="cURL">
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -L -X POST '<SERVER_URL>/admin/customers/<CUSTOMER_ID>' \
|
||||||
|
-H 'Authorization: Bearer <API_TOKEN>' \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
--data-raw '{
|
||||||
|
"first_name": "<FIRST_NAME>"
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
This request accepts any of the customer’s fields as body parameters. In this example, you update the customer’s first name. You can learn more about accepted body parameters in the [API reference](/api/admin/#tag/Customer/operation/PostCustomersCustomer).
|
||||||
|
|
||||||
|
This request returns the updated customer object in the response.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
- [Manage customer groups](./use-customergroups-api.mdx)
|
||||||
|
- [Customers admin API reference](/api/admin)
|
||||||
|
- [Customers overview](../backend/customers/index.md)
|
||||||
|
- [Implement customer profiles in the storefront](../storefront/customer-profiles.mdx)
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import Tabs from '@theme/Tabs';
|
import Tabs from '@theme/Tabs';
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
# Manage Discounts using Admin APIs
|
# How to Manage Discounts using Admin APIs
|
||||||
|
|
||||||
In this document, you’ll learn how to use the Admin’s Discount APIs to manage discounts, discount conditions, and more.
|
In this document, you’ll learn how to use the Admin’s Discount APIs to manage discounts, discount conditions, and more.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import Tabs from '@theme/Tabs';
|
import Tabs from '@theme/Tabs';
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
# Manage Regions using Admin APIs
|
# How to Manage Regions using Admin APIs
|
||||||
|
|
||||||
In this document, you’ll learn how to manage regions using the Admin APIs.
|
In this document, you’ll learn how to manage regions using the Admin APIs.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import Tabs from '@theme/Tabs';
|
import Tabs from '@theme/Tabs';
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
# How to Use CustomerGroup APIs
|
# How to Manage Customer Groups
|
||||||
|
|
||||||
In this document, you’ll learn how to use the customer groups admin APIs to manage customer groups and their associated customers and price lists.
|
In this document, you’ll learn how to use the customer groups admin APIs to manage customer groups and their associated customers and price lists.
|
||||||
|
|
||||||
|
|||||||
@@ -74,4 +74,5 @@ The relation between the `Customer` and `Address` entities is available on both
|
|||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
- [Implement customer profiles in the storefront](../../storefront/customer-profiles.mdx)
|
- [Implement customer profiles in the storefront](../../storefront/customer-profiles.mdx)
|
||||||
|
- [Manage customers using the admin APIs](../../admin/manage-customers.mdx)
|
||||||
- Customers [Admin](/api/admin/#tag/Customer) and [Storefront](/api/store/#tag/Customer) API References
|
- Customers [Admin](/api/admin/#tag/Customer) and [Storefront](/api/store/#tag/Customer) API References
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import Tabs from '@theme/Tabs';
|
import Tabs from '@theme/Tabs';
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
# How to Use SalesChannels APIs
|
# How to Manage Sales Channels
|
||||||
|
|
||||||
In this document, you’ll learn how to manage sales channels and their products and orders using the Admin APIs.
|
In this document, you’ll learn how to manage sales channels and their products and orders using the Admin APIs.
|
||||||
|
|
||||||
|
|||||||
@@ -547,3 +547,4 @@ You can learn more about pagination in the [API reference](/api/store/#section/P
|
|||||||
- [Implement order-claim flow](./implement-claim-order.mdx)
|
- [Implement order-claim flow](./implement-claim-order.mdx)
|
||||||
- [Customers Store API reference](/api/store)
|
- [Customers Store API reference](/api/store)
|
||||||
- [Customers overview](../backend/customers/index.md)
|
- [Customers overview](../backend/customers/index.md)
|
||||||
|
- [Manage customers using the admin APIs](../admin/manage-customers.mdx)
|
||||||
+21
-16
@@ -290,8 +290,18 @@ module.exports = {
|
|||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
type: "doc",
|
type: "doc",
|
||||||
id: "advanced/admin/manage-regions",
|
id: "advanced/admin/order-edit",
|
||||||
label: "Manage Regions"
|
label: "Edit an Order"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "doc",
|
||||||
|
id: "advanced/admin/manage-customers",
|
||||||
|
label: "Manage Customers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "doc",
|
||||||
|
id: "advanced/admin/use-customergroups-api",
|
||||||
|
label: "Manage Customer Groups"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "doc",
|
type: "doc",
|
||||||
@@ -306,27 +316,22 @@ module.exports = {
|
|||||||
{
|
{
|
||||||
type: "doc",
|
type: "doc",
|
||||||
id: "advanced/backend/price-lists/use-api",
|
id: "advanced/backend/price-lists/use-api",
|
||||||
label: "Use PriceList APIs"
|
label: "Manage PriceLists"
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "doc",
|
|
||||||
id: "advanced/backend/sales-channels/manage-admin",
|
|
||||||
label: "Use SalesChannel APIs"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "doc",
|
|
||||||
id: "advanced/admin/use-customergroups-api",
|
|
||||||
label: "Use CustomerGroup APIs"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "doc",
|
type: "doc",
|
||||||
id: "advanced/admin/manage-discounts",
|
id: "advanced/admin/manage-discounts",
|
||||||
label: "Use Discount APIs"
|
label: "Manage Discounts"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "doc",
|
type: "doc",
|
||||||
id: "advanced/admin/order-edit",
|
id: "advanced/admin/manage-regions",
|
||||||
label: "Edit an Order"
|
label: "Manage Regions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "doc",
|
||||||
|
id: "advanced/backend/sales-channels/manage-admin",
|
||||||
|
label: "Manage Sales Channels"
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ export default function FooterWrapper(props) {
|
|||||||
const { metadata } = useDoc()
|
const { metadata } = useDoc()
|
||||||
const { footerFeedback = { event: '' } } = useThemeConfig();
|
const { footerFeedback = { event: '' } } = useThemeConfig();
|
||||||
|
|
||||||
console.log(footerFeedback)
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{!metadata.frontMatter?.hide_footer && (
|
{!metadata.frontMatter?.hide_footer && (
|
||||||
|
|||||||
Reference in new issue
Block a user