curl --request POST \
--url https://api.fabric.inc/v3/promotions/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: <x-fabric-tenant-id>' \
--data '
{
"size": 10,
"offset": 10,
"filters": [
{
"field": "name",
"value": "Summer",
"operator": "EQUAL"
}
]
}
'import requests
url = "https://api.fabric.inc/v3/promotions/search"
payload = {
"size": 10,
"offset": 10,
"filters": [
{
"field": "name",
"value": "Summer",
"operator": "EQUAL"
}
]
}
headers = {
"x-fabric-tenant-id": "<x-fabric-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-fabric-tenant-id': '<x-fabric-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
size: 10,
offset: 10,
filters: [{field: 'name', value: 'Summer', operator: 'EQUAL'}]
})
};
fetch('https://api.fabric.inc/v3/promotions/search', 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://api.fabric.inc/v3/promotions/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'size' => 10,
'offset' => 10,
'filters' => [
[
'field' => 'name',
'value' => 'Summer',
'operator' => 'EQUAL'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-fabric-tenant-id: <x-fabric-tenant-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fabric.inc/v3/promotions/search"
payload := strings.NewReader("{\n \"size\": 10,\n \"offset\": 10,\n \"filters\": [\n {\n \"field\": \"name\",\n \"value\": \"Summer\",\n \"operator\": \"EQUAL\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-fabric-tenant-id", "<x-fabric-tenant-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fabric.inc/v3/promotions/search")
.header("x-fabric-tenant-id", "<x-fabric-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"size\": 10,\n \"offset\": 10,\n \"filters\": [\n {\n \"field\": \"name\",\n \"value\": \"Summer\",\n \"operator\": \"EQUAL\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fabric.inc/v3/promotions/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-fabric-tenant-id"] = '<x-fabric-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"size\": 10,\n \"offset\": 10,\n \"filters\": [\n {\n \"field\": \"name\",\n \"value\": \"Summer\",\n \"operator\": \"EQUAL\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"query": {
"size": 10,
"offset": 10,
"count": 50
},
"data": [
{
"id": "abcdefg1ee7ce20123456789",
"couponCodes": [
"SUMMER100",
"SUMMER20"
],
"couponCodesCount": 0,
"status": "SCHEDULED",
"name": "CREATE PROMO",
"startAt": "2019-08-24T14:15:22.000Z",
"endAt": "2019-08-25T14:15:22.000Z",
"updatedAt": "2019-08-20T14:15:22.000Z",
"singleMultiUse": "MULTI_USE",
"type": "PRODUCT",
"level": 1,
"stackingType": "STACKABLE",
"isStackable": true,
"isAlwaysApplied": false,
"additionalAttributes": [
{
"name": "type",
"values": "Birthday",
"attributeId": 100000
}
],
"promotionMessages": [
{
"title": "Buy 2 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": [
"en-CA"
],
"message": "Buy some more to get the discount!"
}
]
}
}
]
}{
"type": "BAD_REQUEST",
"message": "Bad request"
}{
"type": "UNAUTHORIZED",
"message": "Invalid credentials"
}{
"type": "INTERNAL_SERVER_ERROR",
"message": "Internal server error"
}Search for promotions
Use this endpoint to search for promotions based on specified filter conditions.
curl --request POST \
--url https://api.fabric.inc/v3/promotions/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: <x-fabric-tenant-id>' \
--data '
{
"size": 10,
"offset": 10,
"filters": [
{
"field": "name",
"value": "Summer",
"operator": "EQUAL"
}
]
}
'import requests
url = "https://api.fabric.inc/v3/promotions/search"
payload = {
"size": 10,
"offset": 10,
"filters": [
{
"field": "name",
"value": "Summer",
"operator": "EQUAL"
}
]
}
headers = {
"x-fabric-tenant-id": "<x-fabric-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-fabric-tenant-id': '<x-fabric-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
size: 10,
offset: 10,
filters: [{field: 'name', value: 'Summer', operator: 'EQUAL'}]
})
};
fetch('https://api.fabric.inc/v3/promotions/search', 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://api.fabric.inc/v3/promotions/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'size' => 10,
'offset' => 10,
'filters' => [
[
'field' => 'name',
'value' => 'Summer',
'operator' => 'EQUAL'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-fabric-tenant-id: <x-fabric-tenant-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fabric.inc/v3/promotions/search"
payload := strings.NewReader("{\n \"size\": 10,\n \"offset\": 10,\n \"filters\": [\n {\n \"field\": \"name\",\n \"value\": \"Summer\",\n \"operator\": \"EQUAL\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-fabric-tenant-id", "<x-fabric-tenant-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fabric.inc/v3/promotions/search")
.header("x-fabric-tenant-id", "<x-fabric-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"size\": 10,\n \"offset\": 10,\n \"filters\": [\n {\n \"field\": \"name\",\n \"value\": \"Summer\",\n \"operator\": \"EQUAL\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fabric.inc/v3/promotions/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-fabric-tenant-id"] = '<x-fabric-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"size\": 10,\n \"offset\": 10,\n \"filters\": [\n {\n \"field\": \"name\",\n \"value\": \"Summer\",\n \"operator\": \"EQUAL\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"query": {
"size": 10,
"offset": 10,
"count": 50
},
"data": [
{
"id": "abcdefg1ee7ce20123456789",
"couponCodes": [
"SUMMER100",
"SUMMER20"
],
"couponCodesCount": 0,
"status": "SCHEDULED",
"name": "CREATE PROMO",
"startAt": "2019-08-24T14:15:22.000Z",
"endAt": "2019-08-25T14:15:22.000Z",
"updatedAt": "2019-08-20T14:15:22.000Z",
"singleMultiUse": "MULTI_USE",
"type": "PRODUCT",
"level": 1,
"stackingType": "STACKABLE",
"isStackable": true,
"isAlwaysApplied": false,
"additionalAttributes": [
{
"name": "type",
"values": "Birthday",
"attributeId": 100000
}
],
"promotionMessages": [
{
"title": "Buy 2 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": [
"en-CA"
],
"message": "Buy some more to get the discount!"
}
]
}
}
]
}{
"type": "BAD_REQUEST",
"message": "Bad request"
}{
"type": "UNAUTHORIZED",
"message": "Invalid credentials"
}{
"type": "INTERNAL_SERVER_ERROR",
"message": "Internal server error"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
A header used by fabric to identify the tenant making the request. You must include tenant id in the authentication header for an API request to access any of fabric’s endpoints. You can retrieve the tenant id , which is also called account id, from Copilot. This header is required.
24x-fabric-channel-id identifies the sales channel where the API request is being made; primarily for multichannel use cases. The channel ids are 12 corresponding to US and 13 corresponding to Canada. The default channel id is 12. This field is required.
"12"
A unique request ID.
"263e731c-45c8-11ed-b878-0242ac120002"
Body
The search criteria.
The maximum number of records per page.
1 <= x <= 10010
The number of records to skip before returning records. For example, with an offset of 20 and limit of 10, you will get records from 21 to 30.
x >= 010
The criteria to sort the results. Use the format {sort order}{field name}, where - refers to a descending order and + refers to an ascending order.
+updatedAt, +name, +startAt, +endAt, +level, -updatedAt, -name, -startAt, -endAt, -level Show child attributes
Show child attributes
Was this page helpful?
