Create a Cart Percent Discount Promotion
POST
Create a Cart Percent Discount Promotion
https://api.moltin.com/v2/promotions/
Parameters
Headers
Name | Required | Type | Description |
---|---|---|---|
Authorization | Required | string | The Bearer token required to get access to the API. |
Body
Name | Required | Type | Description |
---|---|---|---|
type | Required | string | Specifies the type of the resource. The type of resource for promotions is, promotion . |
name | Required | string | Specifies a name for the promotion. |
description | Required | string | Specifies a description for the promotion. |
enabled | Required | boolean | Specifies whether the promotion is enabled. The options are true or false , and the default setting is false . |
automatic | Required | boolean | Specifies whether the promotion is applied automatically to the cart or a code is required to apply the promotion. The default setting is false . When this value is set to true , a code is autogenerated. If this value is set to false , you must create the code manually. For more information about creating codes, see the Create Promotion Codes section. |
promotion_type | Required | string | Specifies the type of the promotion. Use percent_discount for percentage discount for cart promotions. |
max_discount_value | Optional | array | Specifies an array of currency-value objects, max_discount_value[].currency and max_discount_value[].amount , that provides the maximum possible discount for the cart. |
min_cart_value | Optional | array | Specifies an array of currency-value objects, min_cart_value[].currency and min_cart_value[].amount , that provides the minimum cart value required for the promotion to apply. You can add one or several value specifications in different currencies. |
schema | Required | object | Specifies the promotion value, currency, and the products to be excluded from the promotion, if any. See the schema object. |
start | Required | string | Specifies the start date and time of the promotion or the start date of the promotion. You can provide a specific time in the HH:MM format. For example, "start": "2000-01-01 12:00" . If no time is specified, the default start and end time is set to 00:00 . |
end | Required | string | Specifies the end date and time of the promotion or the end date of the promotion. |
The schema
object
Promotions are defined by schemas that are used internally to verify promotions and calculate discounts. You must define a schema when you create the promotion.
Name | Required | Type | Description |
---|---|---|---|
schema.currencies[].currency | Required | string | Specifies a three-letter currency code. For example, USD. |
schema.currencies[].percentage | Required | number | Specifies the discount percentage of the cart total value. For example, 10 represents 10% discount of the cart value of $100. You can add up to six decimal places for the discount percentage to be applied for the promotion. |
schema.exclude.targets | Optional | array [string] | Specifies the the SKUs of the products to be excluded from the promotion. |
schema.exclude.nodes | Optional | array [string] | Specifies the unique identifiers of the nodes to be excluded from the promotion. |
schema.exclude.attributes[].template | Optional | string | Specifies the name of the template slug to be excluded from a promotion. |
schema.exclude.attributes[].field | Optional | string | Specifies the unique slug identifier for the field to be excluded from a promotion. |
schema.exclude.attributes[].type | Optional | string | Specifies the type of the field , such as string , integer , boolean , float , or date . |
schema.exclude.attributes[].value | Optional | Depending on the type of the field , value can be string , integer , boolean , float , or date . | Specifies the value of the field that was specified in the attributes.type . For example, you can specify any color in the value if you indicate color in the attributes.field . |
schema.exclude.conditions | Optional | array [object] | Specifies and /or conditions on nodes and attributes to be excluded from a promotion. For example, if you want to exclude t-shirts and pants that are blue or green in color from a promotion, the items that you wish to exclude should be in node-t-shirts or node-pants and have the color attribute with the value blue or green . |
schema.exclude.conditions.or | Optional | array [object] | Specifies or conditions on nodes and attributes to be excluded from a promotion. You can include up to 10 and conditions inside an or array. |
schema.exclude.conditions.or[].and | Optional | array[object] | Specifies and conditions on nodes and attributes to be excluded from a promotion. You can only have five items inside an and condition. |
schema.exclude.conditions.or[].and[].node | Optional | object | Includes values field to specify the unique identifiers of the nodes to be excluded from the promotion. |
schema.exclude.conditions.or[].and[].attribute | Optional | object | Specifies template , field , type , and values of the attribute to be excluded from the promotion. |
schema.target_catalogs | Optional | array [string] | Specifies the unique identifiers of the catalogs to be applied for the promotion. If you do not set this parameter, promotion will be applied to all catalogs. |
Request Example
curl -X POST 'https://api.moltin.com/v2/promotions' \
-H "Authorization: Bearer 68302a5f3742875fbc647a20186a1b8932cad231' \
-H 'accept: application/json' \
-H 'content-type: application/json' \
--data-raw '{
"data": {
"type": "promotion",
"name": "10% off",
"description": "10% off your order!",
"enabled": true,
"automatic": false,
"promotion_type": "percent_discount",
"max_discount_value": [
{
"amount": 1000,
"currency": "USD"
}
],
"min_cart_value": [
{
"amount": 10000,
"currency": "USD"
}
],
"schema": {
"currencies": [
{
"currency": "USD",
"percentage": 10
}
],
"exclude": {
"targets": [
"sku1",
"sku2"
],
"nodes": ["node1"],
"attributes": [
{
"template": "products(shoes)",
"field": "brand",
"type": "string",
"value": "adidas"
}
],
"conditions": {
"or": [
{
"and": [
{
"node": {
"values": ["3f817e96-2061-4d82-b20a-b840e52c4d7b", "4f817e96-2061-4d82-b20a-b840e52c4d7b"]
}
},
{
"attribute": {
"template": "products(shoes)",
"field": "brand",
"type": "string",
"values": ["puma"]
}
}
]
}
]
}
},
"target_catalogs": [
"{{catalogId}}"
]
},
"start": "2000-01-01",
"end": "2100-01-01"
}
}'
Response Example
201 Created
{
"data": {
"type": "promotion",
"id": "7ce1b0ca-5b2b-4946-b303-09899c2e6ab8",
"parent_id": "7ce1b0ca-5b2b-4946-b303-09899c2e6ab8",
"name": "10% off",
"description": "10% off your order!",
"enabled": true,
"current": true,
"promotion_type": "percent_discount",
"min_cart_value": [
{
"currency": "USD",
"amount": 10000
}
],
"max_discount_value": [
{
"currency": "USD",
"amount": 1000
}
],
"schema": {
"currencies": [
{
"currency": "USD",
"percentage": 10
}
],
"exclude": {
"targets": [
"sku1",
"sku2"
],
"nodes": [
"node1"
],
"attributes": [
{
"template": "products(shoes)",
"field": "brand",
"type": "string",
"value": "adidas"
}
],
"conditions": {
"or": [
{
"and": [
{
"node": {
"values": [
"3f817e96-2061-4d82-b20a-b840e52c4d7b",
"4f817e96-2061-4d82-b20a-b840e52c4d7b"
]
}
},
{
"attribute": {
"template": "products(shoes)",
"field": "brand",
"type": "string",
"values": [
"puma"
]
}
}
]
}
]
}
},
"target_catalogs": [
"2abfdd78-6a44-4fd1-9b6e-ec0d76378080"
]
},
"start": "2000-01-01T00:00:00Z",
"end": "2100-01-01T00:00:00Z",
"created_by": "seller@elasticpath.com",
"updated_by": "another_seller@elasticpath.com",
"meta": {
"timestamps": {
"created_at": "2023-02-02T20:16:02.079Z",
"updated_at": "2023-02-02T20:16:02.079Z"
}
}
}
}
The schema.exclude
criteria
When creating a promotion, you can specify when it should not be applied. The promotion will not be applied on any cart (or cart item, depending on the promotion type) that fulfills at least one of the schema.exclude
criteria. The following criteria can be set to exclude items from a promotion:
schema.exclude.targets
schema.exclude.nodes
schema.exclude.attributes
schema.exclude.conditions
For example, if you want to create a promotion with value as SKU1 in schema.exclude.targets
and and color yellow and size small in schema.exclude.attributes
, then any products with SKU1 or the color yellow or the size small will be excluded from the promotion.
To exclude products from a promotion based on multiple conditions at the same time, use schema.exclude.conditions
. For example, use schema.exclude.conditions
to exclude items that are both yellow in color and small in size.
The targeting fields criteria
The cart item's catalog is verified if you define the schema.target_catalogs
field. If the item is in any of the targeted catalogs specified in schema.target_catalogs
, the promotion will be applied. If the item is not in any of the catalogs, the promotion will not be applied.