Update a specific promotion - Fabric
Update a Specific Promotion
Request
cURL
curl --request PUT \
--url https://live.copilot.fabric.inc/api-offers/promo/update/{promoId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-site-context: <x-site-context>' \
--data '
{
"title": "CREATE PROMO",
"promo": [
{
"discount": [
{
"unit": "%OFF",
"value": 10,
"ON": {
"kind": "SKU",
"value": "*",
"quantity": 2,
"includeOperator": "OR",
"excludeOperator": "AND"
},
"discountId": 1,
"autoAdd": false,
"set": []
}
],
"targetProducts": [
{
"kind": "SKU",
"value": "*",
"operator": "IN",
"discountId": 1
}
],
"condition": [
{
"conditions": [
{
"key": "SKU",
"value": "*",
"operator": "IN"
}
],
"id": "akjhfds1239klhasdsa",
"includeOperator": "OR",
"excludeOperator": "AND",
"set": "A"
}
]
}
],
"startDate": "2019-08-24T14:15:22Z",
"endDate": "2019-08-25T14:15:22Z",
"isExclusive": true,
"type": "PRODUCT",
"buyOperator": "OR",
"stackingType": "STACKABLE",
"level": 1,
"termsAndConditions": [
{
"title": "Terms Applied",
"description": "Items cannot be exchanged"
}
],
"promotionMessages": [
{
"title": "Buy 1 get 1 free",
"message": "Offer valid at participating stores through September 5, 2023.",
"pages": [
"PDP",
"Cart"
],
"locales": [
"en-CA",
"fr-CA"
]
}
],
"proximityMessages": [
{
"threshold": 1,
"localizedMessages": [
{
"locales": [
"<string>"
],
"message": "<string>"
}
]
}
],
"shipmentMethodIds": [
1000001
],
"eligiblePriceList": [
10000056
],
"limits": [
{
"kind": "ORDER",
"value": 2
}
],
"note": "Independence day sale!",
"additionalAttributes": [
{
"key": "type",
"value": "Birthday",
"attributeId": 100000
}
]
}
'
Python Example
import requests
url = "https://live.copilot.fabric.inc/api-offers/promo/update/{promoId}"
payload = {
"title": "CREATE PROMO",
"promo": [
{
"discount": [
{
"unit": "%OFF",
"value": 10,
"ON": {
"kind": "SKU",
"value": "*",
"quantity": 2,
"includeOperator": "OR",
"excludeOperator": "AND"
},
"discountId": 1,
"autoAdd": False,
"set": []
}
],
"targetProducts": [
{
"kind": "SKU",
"value": "*",
"operator": "IN",
"discountId": 1
}
],
"condition": [
{
"conditions": [
{
"key": "SKU",
"value": "*",
"operator": "IN"
}
],
"id": "akjhfds1239klhasdsa",
"includeOperator": "OR",
"excludeOperator": "AND",
"set": "A"
}
]
}
],
"startDate": "2019-08-24T14:15:22Z",
"endDate": "2019-08-25T14:15:22Z",
"isExclusive": True,
"type": "PRODUCT",
"buyOperator": "OR",
"stackingType": "STACKABLE",
"level": 1,
"termsAndConditions": [
{
"title": "Terms Applied",
"description": "Items cannot be exchanged"
}
],
"promotionMessages": [
{
"title": "Buy 1 get 1 free",
"message": "Offer valid at participating stores through September 5, 2023.",
"pages": ["PDP", "Cart"],
"locales": ["en-CA", "fr-CA"]
}
],
"proximityMessages": [
{
"threshold": 1,
"localizedMessages": [
{
"locales": ["<string>"],
"message": "<string>"
}
]
}
],
"shipmentMethodIds": [1000001],
"eligiblePriceList": [10000056],
"limits": [
{
"kind": "ORDER",
"value": 2
}
],
"note": "Independence day sale!",
"additionalAttributes": [
{
"key": "type",
"value": "Birthday",
"attributeId": 100000
}
]
}
headers = {
"x-site-context": "<x-site-context>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)
JavaScript Fetch Example
const options = {
method: 'PUT',
headers: {
'x-site-context': '<x-site-context>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: 'CREATE PROMO',
promo: [
{
discount: [
{
unit: '%OFF',
value: 10,
ON: {
kind: 'SKU',
value: '*',
quantity: 2,
includeOperator: 'OR',
excludeOperator: 'AND'
},
discountId: 1,
autoAdd: false,
set: []
}
],
targetProducts: [{kind: 'SKU', value: '*', operator: 'IN', discountId: 1}],
condition: [
{
conditions: [{key: 'SKU', value: '*', operator: 'IN'}],
id: 'akjhfds1239klhasdsa',
includeOperator: 'OR',
excludeOperator: 'AND',
set: 'A'
}
]
}
],
startDate: '2019-08-24T14:15:22Z',
endDate: '2019-08-25T14:15:22Z',
isExclusive: true,
type: 'PRODUCT',
buyOperator: 'OR',
stackingType: 'STACKABLE',
level: 1,
termsAndConditions: [{title: 'Terms Applied', description: 'Items cannot be exchanged'}],
promotionMessages: [{title: 'Buy 1 get 1 free', message: 'Offer valid at participating stores through September 5, 2023.', pages: ['PDP', 'Cart'], locales: ['en-CA', 'fr-CA']}],
proximityMessages: [{threshold: 1, localizedMessages: [{locales: ['<string>'], message: '<string>'}]}],
shipmentMethodIds: [1000001],
eligiblePriceList: [10000056],
limits: [{kind: 'ORDER', value: 2}],
note: 'Independence day sale!',
additionalAttributes: [{key: 'type', value: 'Birthday', attributeId: 100000}]
})
};
fetch('https://live.copilot.fabric.inc/api-offers/promo/update/{promoId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
PHP Example
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://live.copilot.fabric.inc/api-offers/promo/update/{promoId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'CREATE PROMO',
'promo' => [
[
'discount' => [
[
'unit' => '%OFF',
'value' => 10,
'ON' => [
'kind' => 'SKU',
'value' => '*',
'quantity' => 2,
'includeOperator' => 'OR',
'excludeOperator' => 'AND'
],
'discountId' => 1,
'autoAdd' => false,
'set' => [
]
]
],
'targetProducts' => [
[
'kind' => 'SKU',
'value' => '*',
'operator' => 'IN',
'discountId' => 1
]
],
'condition' => [
[
'conditions' => [
[
'key' => 'SKU',
'value' => '*',
'operator' => 'IN'
]
],
'id' => 'akjhfds1239klhasdsa',
'includeOperator' => 'OR',
'excludeOperator' => 'AND',
'set' => 'A'
]
]
]
],
'startDate' => '2019-08-24T14:15:22Z',
'endDate' => '2019-08-25T14:15:22Z',
'isExclusive' => true,
'type' => 'PRODUCT',
'buyOperator' => 'OR',
'stackingType' => 'STACKABLE',
'level' => 1,
'termsAndConditions' => [
[
'title' => 'Terms Applied',
'description' => 'Items cannot be exchanged'
]
],
'promotionMessages' => [
[
'title' => 'Buy 1 get 1 free',
'message' => 'Offer valid at participating stores through September 5, 2023.',
'pages' => [
'PDP',
'Cart'
],
'locales' => [
'en-CA',
'fr-CA'
]
]
],
'proximityMessages' => [
[
'threshold' => 1,
'localizedMessages' => [
[
'locales' => [
'<string>'
],
'message' => '<string>'
]
]
]
],
'shipmentMethodIds' => [
1000001
],
'eligiblePriceList' => [
10000056
],
'limits' => [
[
'kind' => 'ORDER',
'value' => 2
]
],
'note' => 'Independence day sale!',
'additionalAttributes' => [
[
'key' => 'type',
'value' => 'Birthday',
'attributeId' => 100000
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-site-context: <x-site-context>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Response
Expected Response (200 OK)
{
"_id": "abcdefg1ee7ce20123456789",
"promoId": 100013,
"promoCodes": [
"SUMMER100",
"SUMMER20"
],
"state": "SCHEDULED",
"isImplicit": true,
"title": "CREATE PROMO",
"buyOperator": "OR",
"promo": [
{
"discount": [
{
"unit": "%OFF",
"value": 10,
"ON": {
"kind": "SKU",
"value": "*",
"quantity": 2,
"includeOperator": "OR",
"excludeOperator": "AND"
},
"discountId": 1,
"autoAdd": false,
"set": []
}
],
"targetProducts": [
{
"kind": "SKU",
"value": "*",
"operator": "IN",
"discountId": 1
}
],
"condition": [
"620d84a715f2d00001234567"
]
}
],
"startDate": "2019-08-24T14:15:22Z",
"endDate": "2019-08-25T14:15:22Z",
"isExclusive": true,
"type": "PRODUCT",
"stackingType": "STACKABLE",
"level": 1,
"termsAndConditions": [
{
"title": "Terms Applied",
"description": "Items cannot be exchanged"
}
],
"promotionMessages": [
{
"title": "Buy 1 get 1 free",
"message": "Offer valid at participating stores through September 5, 2023.",
"pages": [
"PDP",
"Cart"
],
"locales": [
"en-CA",
"fr-CA"
]
}
],
"proximityMessages": [
{
"threshold": 1,
"localizedMessages": [
{
"locales": [
"<string>"
],
"message": "<string>"
}
]
}
],
"shipmentMethodIds": [
1000001
],
"eligiblePriceList": [
10000056
],
"limits": [
{
"kind": "ORDER",
"value": 2
}
],
"note": "Independence day sale!",
"createdAt": "2019-08-20T14:15:22Z",
"updatedAt": "2019-08-20T14:15:22Z"
}
Error Response Example
{
"code": "DATE_ERROR",
"message": "The start date should be earlier than the end date and it should be a future date."
}
{
"code": "PROMO_NOT_FOUND",
"message": "The promo code you entered doesn't exist."
}
{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error."
}