curl --request GET \
--url https://live.copilot.fabric.inc/api-offers/coupon/{couponId} \
--header 'Authorization: Bearer <token>' \
--header 'x-site-context: <x-site-context>'import requests
url = "https://live.copilot.fabric.inc/api-offers/coupon/{couponId}"
headers = {
"x-site-context": "<x-site-context>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-site-context': '<x-site-context>', Authorization: 'Bearer <token>'}
};
fetch('https://live.copilot.fabric.inc/api-offers/coupon/{couponId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://live.copilot.fabric.inc/api-offers/coupon/{couponId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://live.copilot.fabric.inc/api-offers/coupon/{couponId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-site-context", "<x-site-context>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://live.copilot.fabric.inc/api-offers/coupon/{couponId}")
.header("x-site-context", "<x-site-context>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://live.copilot.fabric.inc/api-offers/coupon/{couponId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-site-context"] = '<x-site-context>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"_id": "abcdefg1ee7ce20123456789",
"promoId": 100013,
"promoCodes": [
"SUMMER100",
"SUMMER20"
],
"state": "SCHEDULED",
"isImplicit": false,
"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": [
"A"
]
}
],
"targetProducts": [
{
"kind": "SKU",
"value": "*",
"operator": "IN",
"discountId": 1
}
],
"condition": [
{
"operator": "AND",
"conditions": [
{
"key": "SKU",
"value": "*",
"operator": "IN"
}
],
"includeOperator": "OR",
"excludeOperator": "AND",
"set": "A"
}
]
}
],
"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": [],
"note": "Independence day sale!",
"createdAt": "2019-08-20T14:15:22Z",
"updatedAt": "2019-08-20T14:15:22Z"
}{
"code": "PROMO_NOT_FOUND",
"message": "The promo code you entered doesn't exist."
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error."
}Get a specific coupon
Retrieves details of a specific coupon by ID
curl --request GET \
--url https://live.copilot.fabric.inc/api-offers/coupon/{couponId} \
--header 'Authorization: Bearer <token>' \
--header 'x-site-context: <x-site-context>'import requests
url = "https://live.copilot.fabric.inc/api-offers/coupon/{couponId}"
headers = {
"x-site-context": "<x-site-context>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-site-context': '<x-site-context>', Authorization: 'Bearer <token>'}
};
fetch('https://live.copilot.fabric.inc/api-offers/coupon/{couponId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://live.copilot.fabric.inc/api-offers/coupon/{couponId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://live.copilot.fabric.inc/api-offers/coupon/{couponId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-site-context", "<x-site-context>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://live.copilot.fabric.inc/api-offers/coupon/{couponId}")
.header("x-site-context", "<x-site-context>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://live.copilot.fabric.inc/api-offers/coupon/{couponId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-site-context"] = '<x-site-context>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"_id": "abcdefg1ee7ce20123456789",
"promoId": 100013,
"promoCodes": [
"SUMMER100",
"SUMMER20"
],
"state": "SCHEDULED",
"isImplicit": false,
"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": [
"A"
]
}
],
"targetProducts": [
{
"kind": "SKU",
"value": "*",
"operator": "IN",
"discountId": 1
}
],
"condition": [
{
"operator": "AND",
"conditions": [
{
"key": "SKU",
"value": "*",
"operator": "IN"
}
],
"includeOperator": "OR",
"excludeOperator": "AND",
"set": "A"
}
]
}
],
"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": [],
"note": "Independence day sale!",
"createdAt": "2019-08-20T14:15:22Z",
"updatedAt": "2019-08-20T14:15:22Z"
}{
"code": "PROMO_NOT_FOUND",
"message": "The promo code you entered doesn't exist."
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error."
}Authorizations
Headers
The x-site-context header is a JSON object that contains information about the source you wish to pull from. The mandatory account is the 24 character identifier found in Copilot. The channel (Sales channel ID), stage (environment name), and date attributes can be used to further narrow the scope of your data source.
"{\"date\": \"2023-01-01T00:00:00.000Z\", \"channel\": 12, \"account\": \"1234abcd5678efgh9ijklmno\",\"stage\":\"production\"}"
Response
OK
Promotion status.
ACTIVE: Promotion is applied to the SKUs or items for which it is set as Active. Active promotions cannot be disabled.
SCHEDULED: Promotion is scheduled to be applied to the SKUs or items based on the start date.
DISABLED: Promotion is set as disabled and is not in use. Only Disabled promotions can be enabled.
EXPIRED: Promotion is stopped by setting the expiration date. That is, the start date and end date are the same as current date. Only those promotions that are not expired can be enabled.
ACTIVE, SCHEDULED, DISABLED, EXPIRED "SCHEDULED"
Promotion type.
Product: SKU promotion. Promotion or discount on SKUs based on the value mentioned in discount object
CART: Cart promotion. Promotion or discount on minimum cart amount based on the ORDER_VALUE that is set in condition object
QUANTITY: Quantity promotion provides discounts based on the quantity requirement set in the promotion
BOGO: Buy One Get One promotion provides discounts based on the Buy conditions and Get discounts
SHIPPING: Shipping promotion provides discounts on the shipping cost
BUYGET: BuyGet promotion specifies the Buy conditions and Get discounts
SPEND_GET: SpendGet promotion can specify the requirement of cart order value and the corresponding Get discounts
PRODUCT, CART, QUANTITY, BOGO, SHIPPING, BUYGET, SPEND_GET "PRODUCT"
Defines the rules for how a promotion can be combined with other promotions. This field determines whether a specific promotion can be applied in conjunction with other active promotions during a transaction or if it must be used exclusively. Possible values: - STACKABLE: This promotion can be combined with other stackable promotions, allowing multiple
discounts to be applied together. The order in which stackable promotions are applied
is determined by the level field, with promotions having a higher priority (lower numeric value)
being applied before those with a lower priority.
EXCLUSIVE: This promotion cannot be combined with any other promotions. Thelevelfield is used to determine which exclusive promotion will be evaluated and applied first. Once an exclusive promotion is applied, no other promotions can be used in the same transaction.TYPE_EXCLUSIVE: This promotion cannot be combined with other promotions of the same type. Thelevelfield is used to determine which promotion within the same type will be evaluated and applied first.UNIVERSAL: This promotion can be combined with any other promotions without restrictions. Universal promotions will be evaluated last. We don't need to definelevelfor this type.
STACKABLE, EXCLUSIVE, TYPE_EXCLUSIVE, UNIVERSAL "STACKABLE"
The promotion execution order. Promotion types are assigned default execution orders. Initial evaluation begins with level 1 promotions. The result of level 1 is used as the base price for level 2. Similarly, the result of level 2 becomes the base price for level 3, and so on.
1
Was this page helpful?
