Discounts
Queries and Mutations listed here are used to send requests to the Admin Discount API Routes.
All hooks listed require authentication.
Admins can create discounts with conditions and rules, providing them with advanced settings for variety of cases. The methods in this class can be used to manage discounts, their conditions, resources, and more.
Related Guide: How to manage discounts.
Mutations
useAdminAddDiscountConditionResourceBatch
This hook adds a batch of resources to a discount condition. The type of resource depends on the type of discount condition.
For example, if the discount condition's type is products
, the resources being added should be products.
Example
To add resources to a discount condition:
import React from "react"
import {
useAdminAddDiscountConditionResourceBatch
} from "medusa-react"
type Props = {
discountId: string
conditionId: string
}
const DiscountCondition = ({
discountId,
conditionId
}: Props) => {
const addConditionResources = useAdminAddDiscountConditionResourceBatch(
discountId,
conditionId
)
// ...
const handleAdd = (itemId: string) => {
addConditionResources.mutate({
resources: [
{
id: itemId
}
]
}, {
onSuccess: ({ discount }) => {
console.log(discount.id)
}
})
}
// ...
}
export default DiscountCondition
To specify relations to include in the returned discount:
import React from "react"
import {
useAdminAddDiscountConditionResourceBatch
} from "medusa-react"
type Props = {
discountId: string
conditionId: string
}
const DiscountCondition = ({
discountId,
conditionId
}: Props) => {
const addConditionResources = useAdminAddDiscountConditionResourceBatch(
discountId,
conditionId,
{
expand: "rule"
}
)
// ...
const handleAdd = (itemId: string) => {
addConditionResources.mutate({
resources: [
{
id: itemId
}
]
}, {
onSuccess: ({ discount }) => {
console.log(discount.id)
}
})
}
// ...
}
export default DiscountCondition
Hook Parameters
discountId
stringRequiredconditionId
stringRequiredConfigurations to apply on the retrieved discount.
Mutation Function Parameters
AdminPostDiscountsDiscountConditionsConditionBatchReq
AdminPostDiscountsDiscountConditionsConditionBatchReqRequiredThe details of the resources to add.
AdminPostDiscountsDiscountConditionsConditionBatchReq
AdminPostDiscountsDiscountConditionsConditionBatchReqRequiredMutation Function Returned Data
The discount's details.
useAdminDeleteDiscountConditionResourceBatch
This hook remove a batch of resources from a discount condition. This will only remove the association between the resource and the discount condition, not the resource itself.
Example
import React from "react"
import {
useAdminDeleteDiscountConditionResourceBatch
} from "medusa-react"
type Props = {
discountId: string
conditionId: string
}
const DiscountCondition = ({
discountId,
conditionId
}: Props) => {
const deleteConditionResource = useAdminDeleteDiscountConditionResourceBatch(
discountId,
conditionId,
)
// ...
const handleDelete = (itemId: string) => {
deleteConditionResource.mutate({
resources: [
{
id: itemId
}
]
}, {
onSuccess: ({ discount }) => {
console.log(discount.id)
}
})
}
// ...
}
export default DiscountCondition
Hook Parameters
discountId
stringRequiredconditionId
stringRequiredMutation Function Parameters
AdminDeleteDiscountsDiscountConditionsConditionBatchReq
AdminDeleteDiscountsDiscountConditionsConditionBatchReqRequiredThe resources to remove.
AdminDeleteDiscountsDiscountConditionsConditionBatchReq
AdminDeleteDiscountsDiscountConditionsConditionBatchReqRequiredMutation Function Returned Data
The discount's details.
useAdminCreateDiscount
This hook creates a discount with a given set of rules that defines how the discount is applied.
Example
import React from "react"
import {
useAdminCreateDiscount,
} from "medusa-react"
import {
AllocationType,
DiscountRuleType,
} from "@medusajs/medusa"
const CreateDiscount = () => {
const createDiscount = useAdminCreateDiscount()
// ...
const handleCreate = (
currencyCode: string,
regionId: string
) => {
// ...
createDiscount.mutate({
code: currencyCode,
rule: {
type: DiscountRuleType.FIXED,
value: 10,
allocation: AllocationType.ITEM,
},
regions: [
regionId,
],
is_dynamic: false,
is_disabled: false,
})
}
// ...
}
export default CreateDiscount
Mutation Function Parameters
The details of the discount to create.
Mutation Function Returned Data
The discount's details.
useAdminUpdateDiscount
This hook updates a discount with a given set of rules that define how the discount is applied.
Example
import React from "react"
import { useAdminUpdateDiscount } from "medusa-react"
type Props = {
discountId: string
}
const Discount = ({ discountId }: Props) => {
const updateDiscount = useAdminUpdateDiscount(discountId)
// ...
const handleUpdate = (isDisabled: boolean) => {
updateDiscount.mutate({
is_disabled: isDisabled,
})
}
// ...
}
export default Discount
Hook Parameters
id
stringRequiredMutation Function Parameters
The details of the discount to update.
Mutation Function Returned Data
The discount's details.
useAdminDeleteDiscount
This hook deletes a discount. Deleting the discount will make it unavailable for customers to use.
Example
Hook Parameters
id
stringRequiredMutation Function Returned Data
The response returned for a
DELETE
request.
DELETE
request.useAdminDiscountAddRegion
This hook adds a Region to the list of Regions a Discount can be used in.
Example
import React from "react"
import { useAdminDiscountAddRegion } from "medusa-react"
type Props = {
discountId: string
}
const Discount = ({ discountId }: Props) => {
const addRegion = useAdminDiscountAddRegion(discountId)
// ...
const handleAdd = (regionId: string) => {
addRegion.mutate(regionId, {
onSuccess: ({ discount }) => {
console.log(discount.regions)
}
})
}
// ...
}
export default Discount
Hook Parameters
id
stringRequiredMutation Function Parameters
string
stringRequiredMutation Function Returned Data
The discount's details.
useAdminDiscountRemoveRegion
This hook removes a Region from the list of Regions that a Discount can be used in. This does not delete a region, only the association between it and the discount.
Example
import React from "react"
import { useAdminDiscountRemoveRegion } from "medusa-react"
type Props = {
discountId: string
}
const Discount = ({ discountId }: Props) => {
const deleteRegion = useAdminDiscountRemoveRegion(discountId)
// ...
const handleDelete = (regionId: string) => {
deleteRegion.mutate(regionId, {
onSuccess: ({ discount }) => {
console.log(discount.regions)
}
})
}
// ...
}
export default Discount
Hook Parameters
id
stringRequiredMutation Function Parameters
string
stringRequiredMutation Function Returned Data
The discount's details.
useAdminCreateDynamicDiscountCode
This hook creates a dynamic unique code that can map to a parent discount. This is useful if you want to automatically generate codes with the same rules and conditions.
Example
import React from "react"
import { useAdminCreateDynamicDiscountCode } from "medusa-react"
type Props = {
discountId: string
}
const Discount = ({ discountId }: Props) => {
const createDynamicDiscount = useAdminCreateDynamicDiscountCode(discountId)
// ...
const handleCreate = (
code: string,
usageLimit: number
) => {
createDynamicDiscount.mutate({
code,
usage_limit: usageLimit
}, {
onSuccess: ({ discount }) => {
console.log(discount.is_dynamic)
}
})
}
// ...
}
export default Discount
Hook Parameters
id
stringRequiredMutation Function Parameters
The details of the dynamic discount to create.
Mutation Function Returned Data
The discount's details.
useAdminDeleteDynamicDiscountCode
This hook deletes a dynamic code from a discount.
Example
import React from "react"
import { useAdminDeleteDynamicDiscountCode } from "medusa-react"
type Props = {
discountId: string
}
const Discount = ({ discountId }: Props) => {
const deleteDynamicDiscount = useAdminDeleteDynamicDiscountCode(discountId)
// ...
const handleDelete = (code: string) => {
deleteDynamicDiscount.mutate(code, {
onSuccess: ({ discount }) => {
console.log(discount.is_dynamic)
}
})
}
// ...
}
export default Discount
Hook Parameters
id
stringRequiredMutation Function Parameters
string
stringRequiredMutation Function Returned Data
The discount's details.
useAdminDiscountCreateCondition
This hook creates a discount condition. Only one of products
, product_types
, product_collections
, product_tags
, and customer_groups
should be provided in the payload
parameter, based on the type of discount condition. For example, if the discount condition's type is products
,
the products
field should be provided in the payload
parameter.
Example
import React from "react"
import { DiscountConditionOperator } from "@medusajs/medusa"
import { useAdminDiscountCreateCondition } from "medusa-react"
type Props = {
discountId: string
}
const Discount = ({ discountId }: Props) => {
const createCondition = useAdminDiscountCreateCondition(discountId)
// ...
const handleCreateCondition = (
operator: DiscountConditionOperator,
products: string[]
) => {
createCondition.mutate({
operator,
products
}, {
onSuccess: ({ discount }) => {
console.log(discount.id)
}
})
}
// ...
}
export default Discount
Hook Parameters
discountId
stringRequiredMutation Function Parameters
Fields to create or update a discount condition.
Mutation Function Returned Data
The discount's details.
useAdminDiscountUpdateCondition
Update a discount condition. Only one of products
, product_types
, product_collections
, product_tags
, and customer_groups
should be provided in the payload
parameter, based on the type of discount condition. For example, if the discount condition's
type is products
, the products
field should be provided in the payload
parameter.
Example
import React from "react"
import { useAdminDiscountUpdateCondition } from "medusa-react"
type Props = {
discountId: string
conditionId: string
}
const DiscountCondition = ({
discountId,
conditionId
}: Props) => {
const update = useAdminDiscountUpdateCondition(
discountId,
conditionId
)
// ...
const handleUpdate = (
products: string[]
) => {
update.mutate({
products
}, {
onSuccess: ({ discount }) => {
console.log(discount.id)
}
})
}
// ...
}
export default DiscountCondition
Hook Parameters
discountId
stringRequiredconditionId
stringRequiredMutation Function Parameters
Fields to create or update a discount condition.
Mutation Function Returned Data
The discount's details.
useAdminDiscountRemoveCondition
This hook deletes a discount condition. This doesn't delete resources associated to the discount condition.
Example
import React from "react"
import { useAdminDiscountRemoveCondition } from "medusa-react"
type Props = {
discountId: string
}
const Discount = ({ discountId }: Props) => {
const deleteCondition = useAdminDiscountRemoveCondition(
discountId
)
// ...
const handleDelete = (
conditionId: string
) => {
deleteCondition.mutate(conditionId, {
onSuccess: ({ id, object, deleted }) => {
console.log(deleted)
}
})
}
// ...
}
export default Discount
Hook Parameters
discountId
stringRequiredMutation Function Parameters
string
stringRequiredMutation Function Returned Data
The response returned for a
DELETE
request.
DELETE
request.Queries
useAdminDiscounts
This hook retrieves a list of Discounts. The discounts can be filtered by fields such as rule
or is_dynamic
.
The discounts can also be paginated.
Example
To list discounts:
import React from "react"
import { useAdminDiscounts } from "medusa-react"
const Discounts = () => {
const { discounts, isLoading } = useAdminDiscounts()
return (
<div>
{isLoading && <span>Loading...</span>}
{discounts && !discounts.length && (
<span>No customers</span>
)}
{discounts && discounts.length > 0 && (
<ul>
{discounts.map((discount) => (
<li key={discount.id}>{discount.code}</li>
))}
</ul>
)}
</div>
)
}
export default Discounts
To specify relations that should be retrieved within the discounts:
import React from "react"
import { useAdminDiscounts } from "medusa-react"
const Discounts = () => {
const { discounts, isLoading } = useAdminDiscounts({
expand: "rule"
})
return (
<div>
{isLoading && <span>Loading...</span>}
{discounts && !discounts.length && (
<span>No customers</span>
)}
{discounts && discounts.length > 0 && (
<ul>
{discounts.map((discount) => (
<li key={discount.id}>{discount.code}</li>
))}
</ul>
)}
</div>
)
}
export default Discounts
By default, only the first 20
records are retrieved. You can control pagination by specifying the limit
and offset
properties:
import React from "react"
import { useAdminDiscounts } from "medusa-react"
const Discounts = () => {
const {
discounts,
limit,
offset,
isLoading
} = useAdminDiscounts({
expand: "rule",
limit: 10,
offset: 0
})
return (
<div>
{isLoading && <span>Loading...</span>}
{discounts && !discounts.length && (
<span>No customers</span>
)}
{discounts && discounts.length > 0 && (
<ul>
{discounts.map((discount) => (
<li key={discount.id}>{discount.code}</li>
))}
</ul>
)}
</div>
)
}
export default Discounts
Hook Parameters
Filters and pagination configurations to apply on the retrieved discounts.
Query Returned Data
limit
numberRequiredoffset
numberRequiredcount
numberRequiredThe list of discounts.
useAdminDiscount
This hook retrieves a discount.
Example
import React from "react"
import { useAdminDiscount } from "medusa-react"
type Props = {
discountId: string
}
const Discount = ({ discountId }: Props) => {
const { discount, isLoading } = useAdminDiscount(
discountId
)
return (
<div>
{isLoading && <span>Loading...</span>}
{discount && <span>{discount.code}</span>}
</div>
)
}
export default Discount
Hook Parameters
id
stringRequiredConfigurations to apply on the retrieved discount.
Query Returned Data
Discount details.
useAdminGetDiscountByCode
This hook adds a batch of resources to a discount condition. The type of resource depends on the type of discount condition. For example, if the discount condition's type is products
,
the resources being added should be products.
Example
import React from "react"
import { useAdminGetDiscountByCode } from "medusa-react"
type Props = {
discountCode: string
}
const Discount = ({ discountCode }: Props) => {
const { discount, isLoading } = useAdminGetDiscountByCode(
discountCode
)
return (
<div>
{isLoading && <span>Loading...</span>}
{discount && <span>{discount.code}</span>}
</div>
)
}
export default Discount
Hook Parameters
code
stringRequiredQuery Returned Data
Discount details.
useAdminGetDiscountCondition
This hook retries a Discount Condition's details.
Example
import React from "react"
import { useAdminGetDiscountCondition } from "medusa-react"
type Props = {
discountId: string
discountConditionId: string
}
const DiscountCondition = ({
discountId,
discountConditionId
}: Props) => {
const {
discount_condition,
isLoading
} = useAdminGetDiscountCondition(
discountId,
discountConditionId
)
return (
<div>
{isLoading && <span>Loading...</span>}
{discount_condition && (
<span>{discount_condition.type}</span>
)}
</div>
)
}
export default DiscountCondition
Hook Parameters
id
stringRequiredconditionId
stringRequired