curl --request GET \
--url https://api.exowpee.com/v1/catalog/inventory-levels \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.exowpee.com/v1/catalog/inventory-levels"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.exowpee.com/v1/catalog/inventory-levels', 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.exowpee.com/v1/catalog/inventory-levels",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.exowpee.com/v1/catalog/inventory-levels"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.exowpee.com/v1/catalog/inventory-levels")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.exowpee.com/v1/catalog/inventory-levels")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"stockable_id": "<string>",
"available_quantity": 123,
"unit_code": "<string>",
"organization_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"item": {},
"asset": {},
"stocks": "<array>"
}
],
"meta": {
"per_page": 123,
"next_cursor": "<string>",
"prev_cursor": "<string>"
}
}{
"message": "<string>",
"errors": {}
}List stock levels
Shows stock levels per location for chosen items, optionally narrowed to stock with given labels.
curl --request GET \
--url https://api.exowpee.com/v1/catalog/inventory-levels \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.exowpee.com/v1/catalog/inventory-levels"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.exowpee.com/v1/catalog/inventory-levels', 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.exowpee.com/v1/catalog/inventory-levels",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.exowpee.com/v1/catalog/inventory-levels"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.exowpee.com/v1/catalog/inventory-levels")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.exowpee.com/v1/catalog/inventory-levels")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"stockable_id": "<string>",
"available_quantity": 123,
"unit_code": "<string>",
"organization_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"item": {},
"asset": {},
"stocks": "<array>"
}
],
"meta": {
"per_page": 123,
"next_cursor": "<string>",
"prev_cursor": "<string>"
}
}{
"message": "<string>",
"errors": {}
}inventory_levels.list, inventory_stocks.list (only when filtering by label)
Conditions
- stockable_ids is required and holds 1 to 100 distinct 27-character identifiers of items.
- Only levels held at locations the current company is allowed to use are returned; levels at other locations are silently left out.
- When stock_label_ids is sent, the caller must also hold the inventory stocks list permission, and every label must exist in the current organization (at most 50 labels).
- The stocks include is rendered only for a caller who may list inventory stocks, and lot costs additionally need the view-costs permission on stock.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Position in the list. Pass the meta.next_cursor or meta.prev_cursor value of the previous page; leave it out to get the first page.
Number of items per page.
1 <= x <= 100Required. Identifiers (27-character KSUID strings) of the items whose stock levels are wanted: 1 to 100 distinct values, each an item of the current organization.
27Optional. Identifiers of stock labels (27-character KSUID strings, at most 50, distinct, all from the current organization). Keeps only levels that hold at least one lot carrying one of these labels, and limits the lots rendered under stocks to those lots. Needs the inventory stocks list permission.
27Response mode. Default resource; none answers 204 No Content.
resource Comma-separated JSON keys of the root resource (id is always rendered). Available: id, stockable_id, available_quantity, unit_code, organization_id, created_at, updated_at.
Comma-separated include paths, each optionally followed by its fields in parentheses: units(id,sku),units.uomUnit(id,name). Max depth 6, max 40 paths. Available: inventoryItem, inventoryItem.stockable, inventoryItem.inventoryLevels, asset, asset.locationGroup, stocks, stocks.vendor, stocks.label.