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
- 200: OK
- 400: Client Error
- 401: Unauthorized
- 500: Internal Server Error
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"
}
}