Inventory
Manifests
Before you create manifests, you'll want to set up locations in your dashboard so that you'll be able to add manifests to a certain location.
Create ManifestPOST `/v1/manifests`
To create a manifest, you only need to include the location_id
and specify the inventory items that you want to add.
Example
const data = {
location_id: "loc_afnHMjVUn3gnrvxU5zMvkX",
inventory: [
{
id: "item_pu8iNbturZy5zvB4zaUZ8t", //Create by ID
manifested_qty: 50,
},
{
sku: "DRC123", //Create by SKU. If SKU doesn't exist we'll create one
manifested_qty: 50,
},
{
gtin: "123456789", //Create by GTIN.
manifested_qty: 50,
},
{
name: "Dispatch Roasters Coffee (3lb Bag)", //Will create a new item
manifested_qty: 50,
},
],
};
const response = await fetch("https://api.packagex.io/v1/manifests", {
method: "POST",
headers: {
"PX-API-KEY": process.env.PX_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
const manifest = response.data;
Update ManifestPOST `/v1/manifests/:manifest`
Before you can update a manifest, you'll need to update its status to accepted
. The reason this exists is because manifests can be created (with your permission) by third parties. Therefore, it's best that you accept them, and understand that there could be inventory items that will get created.
If you do not wish to proceed with the manifest, you can update the status to void
instead.
Accept Manifest
const data = {
status: "accepted",
};
const response = await fetch(`https://api.packagex.io/v1/manifests/${manifest.id}`, {
method: "POST",
headers: {
"PX-API-KEY": process.env.PX_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
const manifest = response.data;
Verify Inventory
When verifying inventory for a manifest, we want to determine what is in good condition, bad condition, and what is missing. We do so by incrementing the verified_qty
and damaged_qty
properties on each inventory item within the manifest.
const data = {
inventory: [
{
id: "item_pu8iNbturZy5zvB4zaUZ8t",
verified_qty: 1,
damaged_qty: 1,
},
{
id: "item_r3CnfTDe66HPNPZid2WVrr",
verified_qty: 10,
damaged_qty: -1, //Remove one in case of a mistake, maybe like an undo button on the front end scanner app
},
{
id: "item_ubo3miFdD9v45ZZkhtY7Us",
verified_qty: [0], //Reset the value to zero, perhaps to start over
damaged_qty: [0],
},
],
};
const response = await fetch(`https://api.packagex.io/v1/items/${item.id}`, {
method: "POST",
headers: {
"PX-API-KEY": process.env.PX_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
const manifest = response.data;
Adding to Inventory
When all items have been verified -- and even if some items are missing -- you are able to update the status of the manifest to 'completed'. Once this happens, all of the inventory items that are referenced in the manifest will automatically have their verified_qty
and damaged_qty
properties updated.
const data = {
status: "completed",
};
const response = await fetch(`https://api.packagex.io/v1/manifests/${manifest.id}`, {
method: "POST",
headers: {
"PX-API-KEY": process.env.PX_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
const manifest = response.data;
Retrieve ManifestGET `/v1/manifests/:manifest`
Get a single manifest using its id
.
const response = await fetch("https://api.packagex.io/v1/manifests/mfst_czhgjrk5JaVvyATPDbyURp", {
method: "GET",
headers: {
"PX-API-KEY": process.env.PX_API_KEY,
"Content-Type": "application/json",
},
});
const manifest = response.data;
List Manifests
ExampleGET `/v1/manifests`
When you want to retrieve multiple manifests, your data
property on the result will always be an array
even if you don't have any manifests.
const response = await fetch("https://api.packagex.io/v1/manifests", {
method: "GET",
headers: {
"PX-API-KEY": process.env.PX_API_KEY,
"Content-Type": "application/json",
},
}).then((res) => res.json());
const manifests = response.data; //the array of items
const pagination = response.pagination; //the pagination object
Pagination
If the has_more
property on the pagination object is set to true, you know there are more manifests in the database that have not been returned to you. The pagination object also has a page
property indicating your current offset and a limit property.
By default the page
is set to 1
and the limit
is 25
.
If we want to query for items 26 - 50, we would request page 2 with a query parameter.
const response = await fetch("https://api.packagex.io/v1/manifests?page=2&limit=25", {
method: "GET",
headers: {
"PX-API-KEY": process.env.PX_API_KEY,
"Content-Type": "application/json",
},
}).then((res) => res.json());
const manifests = response.data; //the array of items 25 - 50
const pagination = response.pagination; //the pagination object
Filter
You can filter manifests by location and status.
const response = await fetch("https://api.packagex.io/v1/manifests?location=loc_hj7gjrk5JaVvyATPDbyURp&status=compelted", {
method: "GET",
headers: {
"PX-API-KEY": process.env.PX_API_KEY,
"Content-Type": "application/json",
},
}).then((res) => res.json());
const manifests = response.data; //the array of items 50 - 75 that are still in transit
const pagination = response.pagination; //the pagination object