curl --request POST \
--url https://api.fabric.inc/v3/carts/{cartId}/items/{itemId}/actions/add-attributes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: <x-fabric-tenant-id>' \
--data '
{
"attributes": {
"test": "test"
}
}
'import requests
url = "https://api.fabric.inc/v3/carts/{cartId}/items/{itemId}/actions/add-attributes"
payload = { "attributes": { "test": "test" } }
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({attributes: {test: 'test'}})
};
fetch('https://api.fabric.inc/v3/carts/{cartId}/items/{itemId}/actions/add-attributes', 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/carts/{cartId}/items/{itemId}/actions/add-attributes",
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([
'attributes' => [
'test' => 'test'
]
]),
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/carts/{cartId}/items/{itemId}/actions/add-attributes"
payload := strings.NewReader("{\n \"attributes\": {\n \"test\": \"test\"\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/carts/{cartId}/items/{itemId}/actions/add-attributes")
.header("x-fabric-tenant-id", "<x-fabric-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"attributes\": {\n \"test\": \"test\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fabric.inc/v3/carts/{cartId}/items/{itemId}/actions/add-attributes")
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 \"attributes\": {\n \"test\": \"test\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"sku": "<string>",
"refId": "<string>",
"quantity": 123,
"priceListId": "<string>",
"price": {
"unit": 10,
"amount": 100
},
"fees": [
{
"id": "a8577d7f-0d4d-4b22-8e85-7b4a2e90dc93",
"name": "Eco Fee",
"price": {
"amount": 12.99
},
"taxable": true,
"attributes": {
"source": "eco"
},
"tax": {
"total": 3,
"collection": [
{
"amount": 3,
"attributes": {
"rate": "5.0",
"type": "COUNTY"
}
}
]
},
"updatedAt": "2024-06-13T16:50:00.682Z",
"createdAt": "2024-06-13T16:50:00.682Z",
"taxDetails": {
"destinationAddress": "c86f777b-1885-4ddf-961d-542ba80a69b8",
"originAddress": "c86f777b-1885-4ddf-961d-542ba80a69b8"
}
}
],
"adjustments": [
{
"id": "a8577d7f-0d4d-4b22-8e85-7b4a2e90dc93",
"price": {
"amount": 12.99
},
"reason": "Price adjustment from customer representative.",
"attributes": {
"source": "CSR"
},
"updatedAt": "2024-06-13T16:50:00.682Z",
"createdAt": "2024-06-13T16:50:00.682Z"
}
],
"fulfillment": {
"id": "6d65755f-b1d9-4c9d-bb5b-118d317f8db4",
"price": {
"amount": 12.99
},
"inventory": {
"type": "backOrder",
"channels": {
"networkCode": "ShipToHome"
}
},
"tax": {
"total": 3,
"collection": [
{
"amount": 3,
"attributes": {
"rate": "5.0",
"type": "COUNTY"
}
}
]
}
},
"promotions": [
{
"id": "bb44db95-6fbd-4eed-a1ed-4d99bc91250f",
"amount": 15,
"quantity": 3,
"proration": {
"spread": [
{
"amount": 5,
"quantity": 3
}
]
}
}
],
"taxCode": "<string>",
"tax": [
{
"amount": 3,
"attributes": {
"rate": "5.0",
"type": "COUNTY"
}
}
],
"attributes": {},
"updatedAt": "2024-06-13T16:50:00.682Z",
"createdAt": "2024-06-13T16:50:00.682Z"
}{
"type": "BAD_REQUEST",
"message": "x-fabric-tenant-id is required"
}{
"type": "CART_NOT_FOUND",
"message": "Cart not found"
}Update item attributes
Partially updates the attributes of your choice in the item object associated with the corresponding cart.
The Cart ID from the Create cart endpoint is used in the path parameter.
The Item ID from the Create item endpoint is used in the path parameter.
curl --request POST \
--url https://api.fabric.inc/v3/carts/{cartId}/items/{itemId}/actions/add-attributes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: <x-fabric-tenant-id>' \
--data '
{
"attributes": {
"test": "test"
}
}
'import requests
url = "https://api.fabric.inc/v3/carts/{cartId}/items/{itemId}/actions/add-attributes"
payload = { "attributes": { "test": "test" } }
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({attributes: {test: 'test'}})
};
fetch('https://api.fabric.inc/v3/carts/{cartId}/items/{itemId}/actions/add-attributes', 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/carts/{cartId}/items/{itemId}/actions/add-attributes",
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([
'attributes' => [
'test' => 'test'
]
]),
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/carts/{cartId}/items/{itemId}/actions/add-attributes"
payload := strings.NewReader("{\n \"attributes\": {\n \"test\": \"test\"\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/carts/{cartId}/items/{itemId}/actions/add-attributes")
.header("x-fabric-tenant-id", "<x-fabric-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"attributes\": {\n \"test\": \"test\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fabric.inc/v3/carts/{cartId}/items/{itemId}/actions/add-attributes")
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 \"attributes\": {\n \"test\": \"test\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"sku": "<string>",
"refId": "<string>",
"quantity": 123,
"priceListId": "<string>",
"price": {
"unit": 10,
"amount": 100
},
"fees": [
{
"id": "a8577d7f-0d4d-4b22-8e85-7b4a2e90dc93",
"name": "Eco Fee",
"price": {
"amount": 12.99
},
"taxable": true,
"attributes": {
"source": "eco"
},
"tax": {
"total": 3,
"collection": [
{
"amount": 3,
"attributes": {
"rate": "5.0",
"type": "COUNTY"
}
}
]
},
"updatedAt": "2024-06-13T16:50:00.682Z",
"createdAt": "2024-06-13T16:50:00.682Z",
"taxDetails": {
"destinationAddress": "c86f777b-1885-4ddf-961d-542ba80a69b8",
"originAddress": "c86f777b-1885-4ddf-961d-542ba80a69b8"
}
}
],
"adjustments": [
{
"id": "a8577d7f-0d4d-4b22-8e85-7b4a2e90dc93",
"price": {
"amount": 12.99
},
"reason": "Price adjustment from customer representative.",
"attributes": {
"source": "CSR"
},
"updatedAt": "2024-06-13T16:50:00.682Z",
"createdAt": "2024-06-13T16:50:00.682Z"
}
],
"fulfillment": {
"id": "6d65755f-b1d9-4c9d-bb5b-118d317f8db4",
"price": {
"amount": 12.99
},
"inventory": {
"type": "backOrder",
"channels": {
"networkCode": "ShipToHome"
}
},
"tax": {
"total": 3,
"collection": [
{
"amount": 3,
"attributes": {
"rate": "5.0",
"type": "COUNTY"
}
}
]
}
},
"promotions": [
{
"id": "bb44db95-6fbd-4eed-a1ed-4d99bc91250f",
"amount": 15,
"quantity": 3,
"proration": {
"spread": [
{
"amount": 5,
"quantity": 3
}
]
}
}
],
"taxCode": "<string>",
"tax": [
{
"amount": 3,
"attributes": {
"rate": "5.0",
"type": "COUNTY"
}
}
],
"attributes": {},
"updatedAt": "2024-06-13T16:50:00.682Z",
"createdAt": "2024-06-13T16:50:00.682Z"
}{
"type": "BAD_REQUEST",
"message": "x-fabric-tenant-id is required"
}{
"type": "CART_NOT_FOUND",
"message": "Cart not found"
}Authorizations
This is the authorization token used to authenticate the request. You must pass the access token generated from the system app. For more information, see the Making your first API request section.
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.
"617329dfd5288b0011332311"
Unique request ID for tracking.
"263e731c-45c8-11ed-b878-0242ac120002"
x-fabric-channel-id identifies the sales channel through which the API request is being made; primarily for multichannel use cases. It is a required field. The default US channel is 12 while the default Canada channel is 11.
"12"
Path Parameters
The 24-character system-generated Cart ID. This ID is generated using the Create cart endpoint.
The Item ID generated when the item was created using the Create item endpoint. You can find the ID in the line item collections.
Body
Add Attributes Request
An object containing custom attributes of your choice for the resource.
Show child attributes
Show child attributes
{ "test": "test" }
Response
OK
The unique identifier of the item that was linked from making Create item endpoint
The Stock Keeping Unit (SKU) associated with the item, used for inventory tracking and management.
An alternative identifier associated with the item, used for additional tracking or referencing.
Quantity of item
The unique identifier for a price list, used to reference and manage pricing information.
Item price
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Item Fulfillment
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The date and time the Resource was last updated
"2024-06-13T16:50:00.682Z"
The date and time a Resource was created
"2024-06-13T16:50:00.682Z"
Was this page helpful?
