Inventory and Shopify Connector
For those who already have a Shopify Data Connector set up, you may want to add inventory data. This guide will help you properly ingest inventory in order to make connections to the correct variant.
Quick Start
-
Setup a custom data source for the ingestion API.
The Ingestion API REST endpoint is
https://ingest.api.nacelle.com/v1/inventory-item
.
To make use of it, you must provide the following headers in your requests:x-nacelle-space-id
x-nacelle-source-id
x-nacelle-ingest-token
You can find the values of these headers on the API Details page. To get there, select a space, navigate to Space Settings, then go to the API Details tab.
The
x-nacelle-ingest-token
can be generated by clicking on the Create New Key button.
Use the generated ingest token to make a PUT request to the Ingest Inventory Item endpoint. This will create an Inventory Item linking it to a product variant in your system. Here is an example:
const fetch = require('node-fetch');
const url = 'https://ingest.api.nacelle.com/v1/inventory-item';
const options = {
method: 'PUT',
headers: {
accept: 'application/json',
'x-nacelle-space-id': '1234',
'x-nacelle-source-id': '1234',
'x-nacelle-ingest-token': '1234',
'content-type': 'application/json'
},
body: JSON.stringify({
entryTypeSourceIdMap: {
PRODUCT_VARIANT: 'NACELLE_SHOPIFY_SOURCE_ID'
},
entries: [
{
sourceEntryId: 'aSourceItemId1a',
sourceVariantId: 'aVariantEntryId',
sku: 'aSKU',
key: 'aKey',
createdAt: '2011-10-05T14:48:00.000Z',
updatedAt: '2011-10-05T14:48:00.000Z',
}
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
Use the generated ingest token to make a PUT request to the Ingest Inventory Location endpoint. Here is an example:
const fetch = require('node-fetch');
const url = 'https://ingest.api.nacelle.com/v1/inventory-location';
const options = {
method: 'PUT',
headers: {
accept: 'application/json',
'x-nacelle-space-id': '1234',
'x-nacelle-source-id': '1234',
'x-nacelle-ingest-token': '1234',
'content-type': 'application/json'
},
body: JSON.stringify({
entries: [
{
sourceEntryId: 'aSourceLocationId1a',
name: 'iventoryItem1a',
address1: '123 address line1 st.',
address2: 'apt address line 2',
city: 'aCity',
region: 'Arizona',
regionCode: 'AZ',
country: 'USA',
countryCode: 'US',
postalCode: 'aPostalCode',
phone: '555-555-5555',
coordinates: {
latitude: 90,
longitude: -120
},
createdAt: '2011-10-05T14:48:00.000Z',
updatedAt: '2011-10-05T14:48:00.000Z',
}
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
Use the generated ingest token to make a PUT request to the Ingest Inventory Level endpoint. This will create an Inventory Level linking the previously created Inventory Item and Inventory Location. Here is an example:
const fetch = require('node-fetch');
const url = 'https://ingest.api.nacelle.com/v1/inventory-level';
const options = {
method: 'PUT',
headers: {
accept: 'application/json',
'x-nacelle-space-id': '1234',
'x-nacelle-source-id': '1234',
'x-nacelle-ingest-token': '1234',
'content-type': 'application/json'
},
body: JSON.stringify({
entries: [
{
sourceEntryId: 'sSourceEntryId',
sourceInventoryItemId: 'aSourceItemId1a',
sourceInventoryLocationId: 'aSourceLocationId1a',
quantityAvailable: 123,
availableForPickup: true,
createdAt: '2011-10-05T14:48:00.000Z',
updatedAt: '2011-10-05T14:48:00.000Z',
}
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
- Query Inventory on a Product Variant:
You can retrieve order details anytime by using our Storefront API endpoint.
query allProducts {
allProducts {
edges {
node {
sourceEntryId
variants {
sourceEntryId
inventory (filter: {"regionCode": "AZ"}) {
key
sku
levels {
availableForPickup
quantityAvailable
location {
name
address1
address2
city
region
regionCode
country
countryCode
postalCode
phone
coordinates {
latitude
longitude
}
}
}
}
}
}
}
}
}
Updated about 1 year ago