curl --request GET \
--url https://api.fabric.inc/v3/published-products/skus/{sku}/collections \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fabric.inc/v3/published-products/skus/{sku}/collections"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fabric.inc/v3/published-products/skus/{sku}/collections', 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/published-products/skus/{sku}/collections",
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>"
],
]);
$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://api.fabric.inc/v3/published-products/skus/{sku}/collections"
req, _ := http.NewRequest("GET", url, nil)
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://api.fabric.inc/v3/published-products/skus/{sku}/collections")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fabric.inc/v3/published-products/skus/{sku}/collections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"name": "Demo Name",
"id": "5f7329dfd5288b0011332366",
"hierarchy": [
{
"id": "5f7329dfd5288b0011332366",
"type": "PRIMARY",
"isRoot": true,
"localizedProperties": [
{
"id": "5f7329dfd5288b0011332322",
"name": "color",
"value": "blue",
"type": "string"
}
],
"attributes": [
{
"id": "5f7329dfd5288b0011332322",
"name": "color",
"value": "blue",
"type": "string"
}
]
}
]
}
],
"offset": 10,
"limit": 10,
"count": 100
}{
"message": "Request was invalid",
"type": "Bad request",
"errors": [
{
"type": "CLIENT_ERROR",
"message": "Invalid request. Unable to find/create product"
}
]
}{
"message": "Request is unauthorized",
"type": "Unauthorized request",
"errors": [
{
"type": "UNAUTHORIZED_ERROR",
"message": "The requester is unauthorized"
}
]
}{
"type": "REQUEST_DENIED",
"message": "User doesn't have the required permission"
}{
"type": "NOT_FOUND",
"message": "Provided ID doesn't exist"
}{
"message": "Payload exceeds maximum configured size",
"type": "Payload limit exceeded",
"errors": [
{
"type": "PAYLOAD_LIMIT_EXCEEDED_ERROR",
"message": "Payload exceeds maximum configured size"
}
]
}{
"message": "Internal Server Error",
"type": "Internal Server Error",
"errors": [
{
"type": "SERVER_ERROR",
"message": "Internal Server Error"
}
]
}Get Collections by Product SKU
On your Storefront products are organized or grouped in logical groups called Collections. The main purpose of collection is distribution management by displaying products on your website based on separate browsing structures required to achieve specific merchandising objectives, such as organizational requirements, multi-regional assortments, multi-channel assortments, and collections. This endpoint gets the collection details of a published product by ID. You can refine your search results by specifying query parameters - collectionIds and collectionRootName. Note: If you don’t have SKU, use the corresponding item ID-based or product ID-based endpoints.
curl --request GET \
--url https://api.fabric.inc/v3/published-products/skus/{sku}/collections \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fabric.inc/v3/published-products/skus/{sku}/collections"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fabric.inc/v3/published-products/skus/{sku}/collections', 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/published-products/skus/{sku}/collections",
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>"
],
]);
$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://api.fabric.inc/v3/published-products/skus/{sku}/collections"
req, _ := http.NewRequest("GET", url, nil)
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://api.fabric.inc/v3/published-products/skus/{sku}/collections")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fabric.inc/v3/published-products/skus/{sku}/collections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"name": "Demo Name",
"id": "5f7329dfd5288b0011332366",
"hierarchy": [
{
"id": "5f7329dfd5288b0011332366",
"type": "PRIMARY",
"isRoot": true,
"localizedProperties": [
{
"id": "5f7329dfd5288b0011332322",
"name": "color",
"value": "blue",
"type": "string"
}
],
"attributes": [
{
"id": "5f7329dfd5288b0011332322",
"name": "color",
"value": "blue",
"type": "string"
}
]
}
]
}
],
"offset": 10,
"limit": 10,
"count": 100
}{
"message": "Request was invalid",
"type": "Bad request",
"errors": [
{
"type": "CLIENT_ERROR",
"message": "Invalid request. Unable to find/create product"
}
]
}{
"message": "Request is unauthorized",
"type": "Unauthorized request",
"errors": [
{
"type": "UNAUTHORIZED_ERROR",
"message": "The requester is unauthorized"
}
]
}{
"type": "REQUEST_DENIED",
"message": "User doesn't have the required permission"
}{
"type": "NOT_FOUND",
"message": "Provided ID doesn't exist"
}{
"message": "Payload exceeds maximum configured size",
"type": "Payload limit exceeded",
"errors": [
{
"type": "PAYLOAD_LIMIT_EXCEEDED_ERROR",
"message": "Payload exceeds maximum configured size"
}
]
}{
"message": "Internal Server Error",
"type": "Internal Server Error",
"errors": [
{
"type": "SERVER_ERROR",
"message": "Internal Server Error"
}
]
}Authorizations
S2S access token (JWT) from fabric Identity service (during Login)
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.
"517fa9dfd42d8b00g1o3k312"
Unique request ID
"263e731c-45c8-11ed-b878-0242ac120002"
Path Parameters
Product SKU
Query Parameters
Comma-separated collection IDs
Comma-separated list of root collection names. For example, Bose Frames Alto is both a Fashion and an Electronics item.
Locale name
Maximum number of records per page
20
Number of records to skip before returning records. For example, offset=20, limit=10 returns records 21-30.
2
Response
OK
Show child attributes
Show child attributes
Number of records to skip before returning records. For example, offset=20, limit=10 returns records 21-30.
10
Maximum number of records per page
10
Total number of records in the response
100
Was this page helpful?
