curl --request GET \
--url https://live.copilot.fabric.inc/api-product/v1/product \
--header 'Authorization: Bearer <token>' \
--header 'x-site-context: <x-site-context>'import requests
url = "https://live.copilot.fabric.inc/api-product/v1/product"
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-product/v1/product', 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-product/v1/product",
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-product/v1/product"
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-product/v1/product")
.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-product/v1/product")
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{
"totalSize": 100,
"pageSize": 10,
"pages": 10,
"products": [
{
"sku": "MOBO-X570",
"itemId": 4,
"children": [
{
"sku": "<string>",
"attributes": [
{
"id": "619a8ba6f1875f6dbcaf0521",
"name": "notes",
"description": "Notes for this particular category.",
"type": "TEXT",
"value": "Unable to fulfill demand.",
"mapping": "description"
}
]
}
],
"type": "ITEM",
"status": true,
"categories": [
{
"id": "621c121bff2e4507c199b7cb",
"name": "electronics",
"nodeId": 30,
"breadcrumbs": [
{
"id": "621c10f3ff2e4507c199b66b",
"nodeId": 31,
"name": "PRIMARY",
"attributes": [
{
"id": "619a8ba6f1875f6dbcaf0521",
"name": "notes",
"description": "Notes for this particular category.",
"type": "TEXT",
"value": "Unable to fulfill demand.",
"mapping": "description"
}
]
}
]
}
],
"attributes": [
{
"id": "619a8ba6f1875f6dbcaf0521",
"name": "notes",
"description": "Notes for this particular category.",
"type": "TEXT",
"value": "Unable to fulfill demand.",
"mapping": "description"
}
],
"createdOn": "2022-03-07T22:50:10.668Z",
"modifiedOn": "2022-03-07T22:52:01.720Z"
}
]
}{
"code": 400,
"message": "Client error"
}{
"code": 500,
"message": "An internal error occurred. If the issue persists please contact support@fabric.inc."
}Get items and children items
Items can be individual items or a bundle of items. This endpoints allows you to retrieve items - individual items and bundles, along with their attributes, children items and their details.
Note:
1) Optional filter parameters can be passed in as query to narrow down the search results.
2) This API will only return the count and details of Parent SKU and not its variants
curl --request GET \
--url https://live.copilot.fabric.inc/api-product/v1/product \
--header 'Authorization: Bearer <token>' \
--header 'x-site-context: <x-site-context>'import requests
url = "https://live.copilot.fabric.inc/api-product/v1/product"
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-product/v1/product', 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-product/v1/product",
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-product/v1/product"
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-product/v1/product")
.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-product/v1/product")
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{
"totalSize": 100,
"pageSize": 10,
"pages": 10,
"products": [
{
"sku": "MOBO-X570",
"itemId": 4,
"children": [
{
"sku": "<string>",
"attributes": [
{
"id": "619a8ba6f1875f6dbcaf0521",
"name": "notes",
"description": "Notes for this particular category.",
"type": "TEXT",
"value": "Unable to fulfill demand.",
"mapping": "description"
}
]
}
],
"type": "ITEM",
"status": true,
"categories": [
{
"id": "621c121bff2e4507c199b7cb",
"name": "electronics",
"nodeId": 30,
"breadcrumbs": [
{
"id": "621c10f3ff2e4507c199b66b",
"nodeId": 31,
"name": "PRIMARY",
"attributes": [
{
"id": "619a8ba6f1875f6dbcaf0521",
"name": "notes",
"description": "Notes for this particular category.",
"type": "TEXT",
"value": "Unable to fulfill demand.",
"mapping": "description"
}
]
}
]
}
],
"attributes": [
{
"id": "619a8ba6f1875f6dbcaf0521",
"name": "notes",
"description": "Notes for this particular category.",
"type": "TEXT",
"value": "Unable to fulfill demand.",
"mapping": "description"
}
],
"createdOn": "2022-03-07T22:50:10.668Z",
"modifiedOn": "2022-03-07T22:52:01.720Z"
}
]
}{
"code": 400,
"message": "Client error"
}{
"code": 500,
"message": "An internal error occurred. If the issue persists please contact support@fabric.inc."
}Authorizations
S2S access token (JWT) from fabric Identity service (during Login)
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\"}"
Query Parameters
Stock Keeping Units (SKUs).
Note: Either skus or itemIds can be used to get specific items. If they are omitted, all items are returned in a paginated response. Using the query parameters page and size, you can narrow down the search results.
Item IDs. Applicable only when skus are omitted.
Note: Either skus or itemIds can be used to get specific items. If they are omitted, all items are returned in a paginated response. Using the query parameters page and size, you can narrow down the search results.
Page number to be retrieved. Applicable only in a paginated response and always paired with size.
1
Number of records per page. Applicable only in a paginated response and always paired with page.
10
Item status.
Note:
1) Returns a paginated response.
2) When used as the only criteria, must be paired with size and page to narrow down the search results.
ACTIVE, INACTIVE "ACTIVE"
Lists items created after a specific date. Valid date formats are 'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'.
Note:
1) Applicable only when skus and itemIds are omitted.
2) Returns paginated response.
3) Must be paired with size and page to narrow down the search results.
"2021-05-28T16:36:50.055Z"
Lists items created before a specific date. Valid date formats are 'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'.
Note:
1) Applicable only when skus and itemIds are omitted.
2) Returns paginated response.
3) Must be paired with size and page to narrow down the search results.
"2021-05-28T16:36:50.055Z"
Lists items modified after a specific date. Valid date formats are 'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'.
Note:
1) Applicable only when skus or itemIds are omitted.
2) Returns paginated response.
3) Must be paired with size and page to narrow down the search results.
"2021-05-28T16:36:50.055Z"
Gets items modified before a specific date. Valid date formats are 'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'.
Note:
1) Applicable only when skus and itemIds are omitted.
2) Returns paginated response.
3) Must be paired with size and page to narrow down the search results.
"2021-05-28T16:36:50.055Z"
Attributes are included based on their exact, case-sensitive names. For example, if you specify the values as xyZ and Abc, the response will include these attributes in both parent and child objects.
Attributes are excluded based on their exact, case-sensitive names. For example, if you specify the values as xyZ and Abc, the response will exclude these attributes from both parent and child objects.
Note: When both onlyIncludeAttributes and onlyExcludeAttributes are used, the onlyIncludeAttributes takes precedence. As a result, attributes are first filtered based on onlyIncludeAttributes, and then onlyExcludeAttributes is applied to further refine the selection.
Was this page helpful?
