curl --request GET \
--url https://dev.noyax.com/services/noyax_api/api/v1/stock/products/status \
--header 'Authorization: Bearer <token>' \
--header 'X-CompanyID: <x-companyid>' \
--header 'X-UserID: <x-userid>'using RestSharp;
var options = new RestClientOptions("https://dev.noyax.com/services/noyax_api/api/v1/stock/products/status");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("X-UserID", "<x-userid>");
request.AddHeader("X-CompanyID", "<x-companyid>");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
const options = {
method: 'GET',
headers: {
'X-UserID': '<x-userid>',
'X-CompanyID': '<x-companyid>',
Authorization: 'Bearer <token>'
}
};
fetch('https://dev.noyax.com/services/noyax_api/api/v1/stock/products/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://dev.noyax.com/services/noyax_api/api/v1/stock/products/status"
headers = {
"X-UserID": "<x-userid>",
"X-CompanyID": "<x-companyid>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text){
"Success": true,
"ResultCode": "0000",
"Data": {
"UnitCode": "C62",
"Quantity": 123,
"Lots": [
{
"LotNo": "LOT-2026-001",
"Quantity": 123
}
],
"SerialNumbers": [
"<string>"
]
},
"Message": "<string>"
}{
"Success": false,
"ResultCode": "4201",
"Message": "One of productId, productCode or eCommerceCode is required.",
"Errors": [
{
"Code": "4201",
"Message": "One of productId, productCode or eCommerceCode is required."
}
]
}{
"Success": false,
"ResultCode": "0102",
"Message": "Token has expired. Obtain a new token using the refresh token.",
"Errors": [
{
"Code": "0102",
"Message": "Token has expired. Obtain a new token using the refresh token."
}
]
}{
"Success": false,
"ResultCode": "0110",
"Message": "You do not have permission for this operation.",
"Errors": [
{
"Code": "0110",
"Message": "You do not have permission for this operation."
}
]
}{
"Success": false,
"ResultCode": "0120",
"Message": "Daily request limit (10000) exceeded.",
"Errors": [
{
"Code": "0120",
"Message": "Daily request limit (10000) exceeded."
}
]
}Product stock status by code
Same report as Get product stock status, looked up by ProductCode or EcommerceCode instead of the product’s ID.
curl --request GET \
--url https://dev.noyax.com/services/noyax_api/api/v1/stock/products/status \
--header 'Authorization: Bearer <token>' \
--header 'X-CompanyID: <x-companyid>' \
--header 'X-UserID: <x-userid>'using RestSharp;
var options = new RestClientOptions("https://dev.noyax.com/services/noyax_api/api/v1/stock/products/status");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("X-UserID", "<x-userid>");
request.AddHeader("X-CompanyID", "<x-companyid>");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
const options = {
method: 'GET',
headers: {
'X-UserID': '<x-userid>',
'X-CompanyID': '<x-companyid>',
Authorization: 'Bearer <token>'
}
};
fetch('https://dev.noyax.com/services/noyax_api/api/v1/stock/products/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://dev.noyax.com/services/noyax_api/api/v1/stock/products/status"
headers = {
"X-UserID": "<x-userid>",
"X-CompanyID": "<x-companyid>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text){
"Success": true,
"ResultCode": "0000",
"Data": {
"UnitCode": "C62",
"Quantity": 123,
"Lots": [
{
"LotNo": "LOT-2026-001",
"Quantity": 123
}
],
"SerialNumbers": [
"<string>"
]
},
"Message": "<string>"
}{
"Success": false,
"ResultCode": "4201",
"Message": "One of productId, productCode or eCommerceCode is required.",
"Errors": [
{
"Code": "4201",
"Message": "One of productId, productCode or eCommerceCode is required."
}
]
}{
"Success": false,
"ResultCode": "0102",
"Message": "Token has expired. Obtain a new token using the refresh token.",
"Errors": [
{
"Code": "0102",
"Message": "Token has expired. Obtain a new token using the refresh token."
}
]
}{
"Success": false,
"ResultCode": "0110",
"Message": "You do not have permission for this operation.",
"Errors": [
{
"Code": "0110",
"Message": "You do not have permission for this operation."
}
]
}{
"Success": false,
"ResultCode": "0120",
"Message": "Daily request limit (10000) exceeded.",
"Errors": [
{
"Code": "0120",
"Message": "Daily request limit (10000) exceeded."
}
]
}ProductCode or its e-commerce integration code (EcommerceCode) rather than its ID.
- Exactly one of
ProductCode/EcommerceCodeis required. - All other behavior (
WarehouseName,Quantity,Lots,SerialNumbers,UnitCode) is identical to Get product stock status.
Error codes
Codes this endpoint can return. The general errors that apply to every endpoint (authentication, permissions, request headers, daily limit) are not repeated here.| Code | HTTP | Meaning |
|---|---|---|
2000 | 404 | Product not found |
4200 | 400 | The warehouse given in warehouseName was not found |
4201 | 400 | One of productId, productCode or eCommerceCode is required |
4202 | 404 | The product given in productCode was not found |
4203 | 404 | The product given in eCommerceCode was not found |
Authorizations
Access token obtained from the Noyax auth service with your API key.
Headers
ID of the Noyax user the request is made on behalf of. Written to the audit fields of created, updated and deleted records.
x >= 1ID of the company. The user must be assigned to this company. All reads and writes are limited to this company.
x >= 1ID of the accounting period. Optional for customer endpoints; if sent, it is written to created records.
x >= 1Query Parameters
Product code (the product's Code from GET /api/v1/products).
The product's e-commerce integration code (EcommerceProductCode from GET /api/v1/products).
Only count movements in this warehouse (name from GET /api/v1/stock/warehouses). When empty, all warehouses are included.
Response
OK
Whether the operation succeeded.
true
"0000" on success. On failure, the code of the first error; all errors are listed in Errors.
"0000"
Response data. Null when Success is false.
Show child attributes
Show child attributes
Error message when Success is false. Messages of all errors are joined into a single text.