Create fulfillment adjustment - Fabric

Create fulfillment adjustment

cURL

curl --request POST \
  --url https://api.fabric.inc/v3/carts/{cartId}/fulfillments/{fulfillmentId}/adjustments \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'x-fabric-tenant-id: <x-fabric-tenant-id>' \
  --data '
{
  "price": {
    "amount": 12.99
  },
  "reason": "Price adjustment from Customer Representative",
  "attributes": {
    "source": "CSR"
  }
}
'

Python

import requests

url = "https://api.fabric.inc/v3/carts/{cartId}/fulfillments/{fulfillmentId}/adjustments"

payload = {
    "price": { "amount": 12.99 },
    "reason": "Price adjustment from Customer Representative",
    "attributes": { "source": "CSR" }
}
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)

JavaScript (Fetch)

const options = {
  method: 'POST',
  headers: {
    'x-fabric-tenant-id': '<x-fabric-tenant-id>',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    price: {amount: 12.99},
    reason: 'Price adjustment from Customer Representative',
    attributes: {source: 'CSR'}
  })
};

fetch('https://api.fabric.inc/v3/carts/{cartId}/fulfillments/{fulfillmentId}/adjustments', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));

PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.fabric.inc/v3/carts/{cartId}/fulfillments/{fulfillmentId}/adjustments",
  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([
    'price' => [
        'amount' => 12.99
    ],
    'reason' => 'Price adjustment from Customer Representative',
    'attributes' => [
        'source' => 'CSR'
    ]
  ]),
  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;
}
?>

Go

package main

import (
    "fmt"
    "strings"
    "net/http"
    "io"
)

func main() {

url := "https://api.fabric.inc/v3/carts/{cartId}/fulfillments/{fulfillmentId}/adjustments"

payload := strings.NewReader("{\n  \"price\": {\n    \"amount\": 12.99\n  },\n  \"reason\": \"Price adjustment from Customer Representative\",\n  \"attributes\": {\n    \"source\": \"CSR\"\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))
}

Java (Unirest)

HttpResponse<String> response = Unirest.post("https://api.fabric.inc/v3/carts/{cartId}/fulfillments/{fulfillmentId}/adjustments")
  .header("x-fabric-tenant-id", "<x-fabric-tenant-id>")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"price\": {\n    \"amount\": 12.99\n  },\n  \"reason\": \"Price adjustment from Customer Representative\",\n  \"attributes\": {\n    \"source\": \"CSR\"\n  }\n}")
  .asString();

Ruby

require 'uri'
require 'net/http'

url = URI("https://api.fabric.inc/v3/carts/{cartId}/fulfillments/{fulfillmentId}/adjustments")

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  \"price\": {\n    \"amount\": 12.99\n  },\n  \"reason\": \"Price adjustment from Customer Representative\",\n  \"attributes\": {\n    \"source\": \"CSR\"\n  }\n}"

response = http.request(request)
puts response.read_body

Response Codes

Sample Response

{
  "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"
}
{
  "type": "BAD_REQUEST",
  "message": "x-fabric-tenant-id is required"
}
{
  "type": "CART_NOT_FOUND",
  "message": "Cart not found"
}

Authorization

Authorization: string (required)
This is the authorization token used to authenticate the request. You must pass the access token generated from the system app.

Headers

Path Parameters

Body

The body of the request must be in application/json format and should include the following: