diff --git a/docs/content/advanced/admin/use-customergroups-api.mdx b/docs/content/advanced/admin/use-customergroups-api.mdx new file mode 100644 index 0000000000..775a0a0218 --- /dev/null +++ b/docs/content/advanced/admin/use-customergroups-api.mdx @@ -0,0 +1,463 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# How to Use CustomerGroup APIs + +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. + +## Overview + +Using the Admin API you can manage customer groups by creating, retrieving, updating, and deleting them. You can also manage the customers in a customer group. + +Using the PriceList API you can specify among the conditions the customer groups that the prices will apply to. + +This guide covers how to use these APIs to perform these tasks. + +--- + +## Prerequisites + +### Medusa Components + +It is assumed that you already have a Medusa server installed and set up. If not, you can follow our [quickstart guide](../../quickstart/quick-start.md) 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](https://docs.medusajs.com/api/admin/#section/Authentication). + +--- + +## Create Customer Groups + +You can create a customer group by sending a request to the Create Customer Group endpoint: + + + + +```jsx +medusa.admin.customerGroups.create({ + name: 'VIP' +}) +.then(({ customer_group }) => { + console.log(customer_group.id); +}); +``` + + + + +```jsx +fetch(`/admin/customer-groups`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + name: 'VIP' + }) +}) +.then((response) => response.json()) +.then(({ customer_group }) => { + console.log(customer_group.id) +}); +``` + + + + +```bash +curl --location --request POST '/admin/customer-groups' \ +--header 'Authorization: Bearer ' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "name": "VIP" +}' +``` + + + + +This request requires the `name` parameter and optionally accepts the `metadata` object parameter to be passed in the body. It returns the created customer group. + +--- + +## List Customer Groups + +You can get a list of all customer groups by sending a request to the List Customer Groups endpoint: + + + + +```jsx +medusa.admin.customerGroups.list() +.then(({ customer_groups, limit, offset, count }) => { + console.log(customer_groups.length); +}); +``` + + + + +```jsx +fetch(`/admin/customer-groups`) +.then((response) => response.json()) +.then(({ customer_groups, limit, offset, count }) => { + console.log(customer_groups.length) +}); +``` + + + + +```bash +curl --location --request GET '/admin/customer-groups' \ +--header 'Authorization: Bearer ' +``` + + + + +This request returns an array of customer groups, as well as pagination fields. + +You can also pass filters and other selection query parameters to the request. Check out the [API reference](https://docs.medusajs.com/api/admin/#tag/Customer-Group/operation/GetCustomerGroups) for more details on available query parameters. + +--- + +## Retrieve a Customer Group + +You can retrieve a single customer group by sending a request to the Get a Customer Group endpoint: + + + + +```jsx +medusa.admin.customerGroups.retrieve(customerGroupId) +.then(({ customer_group }) => { + console.log(customer_group.id); +}); +``` + + + + +```jsx +fetch(`/admin/customer-groups/${customerGroupId}`) +.then((response) => response.json()) +.then(({ customer_group }) => { + console.log(customer_group.id) +}); +``` + + + + +```bash +curl --location --request GET '/admin/customer-groups/' \ +--header 'Authorization: Bearer ' +``` + + + + +This request accepts the ID of the customer group to retrieve as a path parameter. It returns the customer group of that ID. + +--- + +## Update a Customer Group + +You can update a customer group’s data by sending a request to the Update Customer Group endpoint: + + + + +```jsx +medusa.admin.customerGroups.update(customerGroupId, { + metadata: { + is_seller: true + } +}) +.then(({ customer_group }) => { + console.log(customer_group.id); +}); +``` + + + + +```jsx +fetch(`/admin/customer-groups/${customerGroupId}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + metadata: { + is_seller: true + } + }) +}) +.then((response) => response.json()) +.then(({ customer_group }) => { + console.log(customer_group.id) +}); +``` + + + + +```bash +curl --location --request POST '/admin/customer-groups/' \ +--header 'Authorization: Bearer ' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "metadata": { + "is_seller": true + } +}' +``` + + + + +This request accepts the ID of the customer group as a path parameter, and optionally accepts the `name` or `metadata` fields as body parameters. It returns the updated customer group. + +--- + +## Delete Customer Group + +You can delete a customer group by sending a request to the Delete a Customer Group endpoint: + + + + +```jsx +medusa.admin.customerGroups.delete(customerGroupId) +.then(({ id, object, deleted }) => { + console.log(id); +}); +``` + + + + +```jsx +fetch(`/admin/customer-groups/${customerGroupId}`, { + method: 'DELETE' +}) +.then((response) => response.json()) +.then(({ id, object, deleted }) => { + console.log(id) +}); +``` + + + + +```bash +curl --location --request DELETE '/admin/customer-groups/' \ +--header 'Authorization: Bearer ' +``` + + + + +This request accepts the ID of the customer group to delete as a path parameter. It returns the ID of the deleted entity. + +--- + +## Manage Customers + +### Add Customer to Group + +You can add a customer to a group by sending a request to the Customer Group’s Add Customer endpoint: + + + + +```jsx +medusa.admin.customerGroups.addCustomers(customerGroupId, { + customer_ids: [ + { + id: customerId + } + ] +}) +.then(({ customer_group }) => { + console.log(customer_group.id); +}); +``` + + + + +```jsx +fetch(`/admin/customer-groups/${customerGroupId}/customers/batch`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + customer_ids: [ + { + id: customerId + } + ] + }) +}) +.then((response) => response.json()) +.then(({ customer_group }) => { + console.log(customer_group.id) +}); +``` + + + + +```bash +curl --location --request POST '/admin/customer-groups//customers/batch' \ +--header 'Authorization: Bearer ' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "customer_ids": [ + { + "id": "" + } + ] +}' +``` + + + + +This request accepts the ID of the customer group as a path parameter. In its body, it accepts a `customer_ids` array of objects. Each object in the array must have the `id` property with its value being the ID of the customer you want to add. + +### List Customers + +You can retrieve a list of all customers in a customer group using the List Customers endpoint: + + + + +```jsx +medusa.admin.customerGroups.listCustomers(customerGroupId) +.then(({ customers, count, offset, limit }) => { + console.log(customers.length); +}); +``` + + + + +```jsx +fetch(`/admin/customer-groups/${customerGroupId}/customers`) +.then((response) => response.json()) +.then(({ customers, count, offset, limit }) => { + console.log(customers.length) +}); +``` + + + + +```bash +curl --location --request GET '/admin/customer-groups//customers' \ +--header 'Authorization: Bearer ' +``` + + + + +This request accepts the ID of the customer group as a path parameter. It returns an array of customers along with pagination fields. + +### Remove Customers from a Group + +:::info + +Removing customers from a group does not remove them entirely. They’ll still be available in your store. + +::: + +You can remove customers from a customer group by sending a request to the Remove Customers endpoint: + + + + +```jsx +medusa.admin.customerGroups.removeCustomers(customer_group_id, { + customer_ids: [ + { + id: customer_id + } + ] +}) +.then(({ customer_group }) => { + console.log(customer_group.id); +}); +``` + + + + +```jsx +fetch(`/admin/customer-groups/${customerGroupId}/customers/batch`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + customer_ids: [ + { + id: customerId + } + ] + }) +}) +.then((response) => response.json()) +.then(({ customer_group }) => { + console.log(customer_group.id) +}); +``` + + + + +```bash +curl --location --request DELETE '/admin/customer-groups//customers/batch' \ +--header 'Authorization: Bearer ' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "customer_ids": [ + { + "id": "" + } + ] +}' +``` + + + + +This request accepts as a path parameter the ID of the customer group to remove customers from. In its body, it accepts a `customer_ids` array of objects. Each object in the array must have the `id` property with the value being the ID of the customer to remove from the group. + +This request returns the customer group. + +--- + +## Use Customer Groups as Conditions in a Price List + +When you create or update a price list, you can specify one or more customer groups as conditions for the price list. You can learn how to do that in the [PriceList API documentation](../backend/price-lists/use-api.mdx). + +--- + +## What’s Next 🚀 + +- Learn more about [Customer Groups](../backend/customer-groups/index.md). +- Learn about [how to use Sales Channels](../backend/sales-channels/manage-admin.mdx). \ No newline at end of file diff --git a/docs/content/advanced/backend/customer-groups/index.md b/docs/content/advanced/backend/customer-groups/index.md index 5ae627f29d..32d4829ca1 100644 --- a/docs/content/advanced/backend/customer-groups/index.md +++ b/docs/content/advanced/backend/customer-groups/index.md @@ -56,4 +56,5 @@ The relation between the `PriceList` and `CustomerGroup` entities is available o ## What’s Next 🚀 +- Learn [how to manage customer groups using the Admin APIs](../../admin/use-customergroups-api.mdx). - Learn more about [Price Lists and how they work](../price-lists/index.md). diff --git a/docs/content/advanced/backend/price-lists/use-api.mdx b/docs/content/advanced/backend/price-lists/use-api.mdx index 10b30f6265..a65ab648e4 100644 --- a/docs/content/advanced/backend/price-lists/use-api.mdx +++ b/docs/content/advanced/backend/price-lists/use-api.mdx @@ -1,7 +1,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -# Use PriceList API +# How to Use PriceList APIs In this document, you’ll learn how to use the PriceList Admin APIs to create, update, and manage prices in a price list. diff --git a/docs/content/advanced/backend/sales-channels/manage-admin.mdx b/docs/content/advanced/backend/sales-channels/manage-admin.mdx index 72c03cf14b..d93f27be8a 100644 --- a/docs/content/advanced/backend/sales-channels/manage-admin.mdx +++ b/docs/content/advanced/backend/sales-channels/manage-admin.mdx @@ -1,7 +1,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -# Manage Sales Channels +# How to Use SalesChannels APIs In this document, you’ll learn how to manage sales channels and their products and orders using the Admin APIs. diff --git a/www/docs/sidebars.js b/www/docs/sidebars.js index e1695937a4..c63e8e3e1e 100644 --- a/www/docs/sidebars.js +++ b/www/docs/sidebars.js @@ -222,12 +222,18 @@ module.exports = { }, { type: "doc", - id: "advanced/backend/price-lists/use-api" + id: "advanced/backend/price-lists/use-api", + label: "Use PriceList APIs" }, { type: "doc", id: "advanced/backend/sales-channels/manage-admin", - label: "Manage Sales Channels" + label: "Use SalesChannel APIs" + }, + { + type: "doc", + id: "advanced/admin/use-customergroups-api", + label: "Use CustomerGroup APIs" }, ] },