Create allocations - Fabric

Create allocations

cURL

curl --request POST \
  --url https://api.fabric.inc/v3/allocations/actions/create-allocations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'x-fabric-channel-id: <x-fabric-channel-id>' \
  --header 'x-fabric-tenant-id: <x-fabric-tenant-id>' \
  --data '
{
  "orderId": "98ff5c0bec0aed3c8620228",
  "items": [
    {
      "lineItemId": "134fqfaa532qrf",
      "quantity": 3
    }
  ]
}
'

Python

import requests

url = "https://api.fabric.inc/v3/allocations/actions/create-allocations"

payload = {
    "orderId": "98ff5c0bec0aed3c8620228",
    "items": [
        {
            "lineItemId": "134fqfaa532qrf",
            "quantity": 3
        }
    ]
}
headers = {
    "x-fabric-tenant-id": "<x-fabric-tenant-id>",
    "x-fabric-channel-id": "<x-fabric-channel-id>",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)

JavaScript

const options = {
  method: 'POST',
  headers: {
    'x-fabric-tenant-id': '<x-fabric-tenant-id>',
    'x-fabric-channel-id': '<x-fabric-channel-id>',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    orderId: '98ff5c0bec0aed3c8620228',
    items: [{lineItemId: '134fqfaa532qrf', quantity: 3}]
  })
};

fetch('https://api.fabric.inc/v3/allocations/actions/create-allocations', 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/allocations/actions/create-allocations",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'orderId' => '98ff5c0bec0aed3c8620228',
    'items' => [
        [
            'lineItemId' => '134fqfaa532qrf',
            'quantity' => 3
        ]
    ]
]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>",
    "Content-Type: application/json",
    "x-fabric-channel-id: <x-fabric-channel-id>",
    "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/allocations/actions/create-allocations"

payload := strings.NewReader(`{
  "orderId": "98ff5c0bec0aed3c8620228",
  "items": [
    {
      "lineItemId": "134fqfaa532qrf",
      "quantity": 3
    }
  ]
}`)

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-fabric-tenant-id", "<x-fabric-tenant-id>")
    req.Header.Add("x-fabric-channel-id", "<x-fabric-channel-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))
}

Unirest (Java)

HttpResponse<String> response = Unirest.post("https://api.fabric.inc/v3/allocations/actions/create-allocations")
  .header("x-fabric-tenant-id", "<x-fabric-tenant-id>")
  .header("x-fabric-channel-id", "<x-fabric-channel-id>")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body(`{
  "orderId": "98ff5c0bec0aed3c8620228",
  "items": [
    {
      "lineItemId": "134fqfaa532qrf",
      "quantity": 3
    }
  ]
}`)
  .asString();

Ruby

require 'uri'
require 'net/http'

url = URI("https://api.fabric.inc/v3/allocations/actions/create-allocations")

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["x-fabric-channel-id"] = '<x-fabric-channel-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"orderId\": \"98ff5c0bec0aed3c8620228\",\n  \"items\": [\n    {\n      \"lineItemId\": \"134fqfaa532qrf\",\n      \"quantity\": 3\n    }\n  ]\n}"

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

Response Codes

Sample Allocation Response

{
  "allocationId": "62ff5c0bec0aed3c86202c32",
  "allocationRequestId": "62ff5c0bec0aed3c86202c32",
  "createdAt": "2022-08-01T18:03:28.483971941Z",
  "locationNumber": "1234B",
  "version": 2,
  "allocationNumber": 13000004,
  "allocationExternalId": "123k4h123k",
  "auditLogs": [
    {
      "amount": 2.4,
      "auditId": "a05b72dc-78d8-4ea4-90fc-2fe6a1fe1111",
      "auditType": "CANCEL",
      "auditedAt": "2023-03-12T09:24:54.804Z",
      "employeeId": "6227",
      "isSuccess": true,
      "lineItemId": "b03b72dc-78d8-4ea4-90fc-2fe6a1fe6569",
      "lineItemNumber": 1,
      "note": "Note",
      "paymentToken": {
        "paymentType": "VISA",
        "token": "pi_34tr6787rt"
      },
      "policyCode": "POS",
      "quantity": 1,
      "reasonCode": "Scratched item",
      "sku": "SKU0023",
      "source": "POS",
      "subReasonCode": "Scratched item",
      "updatedFields": [
        {
          "fieldName": "UOM",
          "fieldOriginalValue": "PK"
        }
      ]
    }
  ],
  "currency": "USD",
  "decisionContexts": [
    {
      "allocatedOrderLineIds": ["<string>"],
      "methodConfigs": {},
      "methodName": "<string>",
      "ruleName": "<string>",
      "ruleSetId": "<string>",
      "ruleSetVersion": "<string>"
    }
  ],
  "items": [
    {
      "allocationLineNumber": 3,
      "itemId": 100064,
      "quantity": 3,
      "sku": "123k4h123k",
      "uom": "EA",
      "channelId": "4a35cc1b-4e15-46df-96c9-38a697d88dfe",
      "cost": 150.6,
      "estimatedDeliveryDate": "2022-08-01T18:03:28.483971941Z",
      "itemStatus": "PARTIALLY_ALLOCATED",
      "notes": [
        {
          "createdAt": "2022-05-12T09:30:31.198Z",
          "notes": "Fragile - handle with care",
          "user": "62272e917b12209e68751d94"
        }
      ],
      "orderId": "62f3982438bcab1951be0a19",
      "orderLineId": "134fqfaa532qrf",
      "orderLineNumber": 1,
      "orderNumber": "123k4h123k",
      "orderExternalId": "123k4h123k",
      "orderedAt": "2022-08-01T18:03:28.483971941Z",
      "parentAllocationLineNumber": 3,
      "price": 50.2,
      "reallocationReasonCode": "Reallocating due to unavailability of location number",
      "reallocationRequestId": "123k4h123k",
      "reshipReasonCode": "Stock refilled",
      "scratchQuantity": 1,
      "scratchedReasonCode": "Out of stock",
      "shippedQuantity": 1,
      "weight": 5.5
    }
  ],
  "itemsType": "WEB_SHIP",
  "locationType": "DC",
  "notifiedToPPSAt": "2022-08-01T18:03:28.483971941Z",
  "orderSubType": "ANDROID",
  "parentAllocationId": "62ff5c0bec0aed3c86202c32",
  "previousAllocatedLocationNums": ["410"],
  "recipients": [
    {
      "email": "test@example.com",
      "name": {
        "firstName": "Alex",
        "lastName": "Doe",
        "middleName": "E"
      },
      "phone": {
        "number": "123-456-7890",
        "type": "MOBILE"
      },
      "pickupType": "PRIMARY"
    }
  ],
  "shipToAddress": {
    "addressLine1": "123 Main St.",
    "city": "Seattle",
    "countryCode": "US",
    "latitude": 47.6205,
    "longitude": -122.3493,
    "postalCode": "98121",
    "region": "WA",
    "type": "Home",
    "addressLine2": "Suite 100",
    "addressLine3": "Seventh floor",
    "addressLine4": "Attention: Pat E. Kake",
    "email": "test@example.com",
    "name": {
      "firstName": "Alex",
      "lastName": "Doe",
      "middleName": "E"
    },
    "phone": {
      "number": "123-456-7890",
      "type": "MOBILE"
    }
  },
  "shipFromAddress": {
    "addressLine1": "123 Main St.",
    "city": "Seattle",
    "countryCode": "US",
    "latitude": 47.6205,
    "longitude": -122.3493,
    "postalCode": "98121",
    "region": "WA",
    "type": "Home",
    "addressLine2": "Suite 100",
    "addressLine3": "Seventh floor",
    "addressLine4": "Attention: Pat E. Kake",
    "email": "test@example.com",
    "name": {
      "firstName": "Alex",
      "lastName": "Doe",
      "middleName": "E"
    },
    "phone": {
      "number": "123-456-7890",
      "type": "MOBILE"
    }
  },
  "shipToId": "98ff5c0bec0aed3c86202c32",
  "shipmentMethod": "Parcel Post Delivery",
  "shipmentType": "SHIP_TO_ADDRESS",
  "shippedAt": "2022-08-01T20:03:28.483971941Z",
  "statusCode": "ALLOCATED",
  "type": "ALLOCATED",
  "updatedAt": "2022-08-01T20:03:28.483971941Z"
}

Error Response Examples

Client Error Example

{
  "type": "CLIENT_ERROR",
  "errorCode": "SERVICE-4003",
  "message": "Mandatory param(s): `requiredField1` is/are missing",
  "errors": [
    {
      "type": "CLIENT_ERROR",
      "errorCode": "SERVICE-4002",
      "message": "Invalid value(s) specified for 'requiredField.field3'",
      "errors": []
    }
  ],
  "context": {
    "service": "orders",
    "endpoint": "POST /v3/orders"
  }
}

Unauthorized Example

{
  "type": "CLIENT_ERROR",
  "errorCode": "SERVICE-4001",
  "message": "Unauthorized request",
  "errors": [],
  "context": {
    "service": "orders",
    "endpoint": "POST /v3/orders/OrderId_12345"
  }
}

Server Error Example

{
  "type": "SERVER_ERROR",
  "errorCode": "SERVICE-5000",
  "message": "Internal server error",
  "errors": [],
  "context": {
    "service": "inventories",
    "endpoint": "POST /v3/inventories/actions/find-by-geography"
  }
}