A valid request URL is required to generate request examples{
"items": [
{
"id": "stk-chemise-blanc-42",
"skuId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"name": "Chemise sur-mesure Blanc 42",
"shopId": "store-rivoli",
"category": "Mesure",
"supplier": "Atelier Solya",
"onHand": 8,
"reserved": 0,
"reorderPoint": 5,
"unitCostCents": 1500
}
],
"total": 1,
"page": 1,
"pageSize": 20,
"pageCount": 1
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}List stock items (stock / inventaire)
Returns one page of the stock read model (inventaire: on-hand / reserved / reorder point/seuil de réappro, valued in cents), optionally filtered by derived status, category, storeId and/or supplier, and sorted. Status is DERIVED from the levels: out-of-stock (rupture) is onHand = 0; low-stock is onHand ≤ reorderPoint (seuil atteint, à réapprovisionner); in-stock is onHand > reorderPoint. available = onHand − reserved. Because a stock line is a sku × shop position, pass storeId to scope the listing to one store (magasin) SERVER-SIDE. Use page/pageSize (max 100) to walk the result; total/pageCount tell you when to stop.
A valid request URL is required to generate request examples{
"items": [
{
"id": "stk-chemise-blanc-42",
"skuId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"name": "Chemise sur-mesure Blanc 42",
"shopId": "store-rivoli",
"category": "Mesure",
"supplier": "Atelier Solya",
"onHand": 8,
"reserved": 0,
"reorderPoint": 5,
"unitCostCents": 1500
}
],
"total": 1,
"page": 1,
"pageSize": 20,
"pageCount": 1
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Authorizations
Authorization: Bearer <token>. Accepts EITHER a Keycloak access token (scopes-in-token) OR an opaque POS session token; both resolve to the same pos.* scope vocabulary the route guards enforce.
Query Parameters
1-based page index to return. Defaults to 1.
1 <= x <= 9007199254740991Rows per page, 1..100. Defaults to 20.
1 <= x <= 100Filter by DERIVED availability: out-of-stock (rupture, onHand = 0), low-stock (seuil de réappro atteint, onHand ≤ reorderPoint), in-stock (onHand > reorderPoint).
in-stock, low-stock, out-of-stock Filter to one merchandising category (exact match).
1Filter to one store (magasin) — matches the item's shopId. Since stock is a sku × shop position, pass this to scope the listing to a single store server-side.
1Filter to lines replenished from one supplier (fournisseur; exact match).
1Sort key: name, onHand, or available (onHand − reserved). Default name.
name, onHand, available Sort direction (default asc).
asc, desc Response
A page of stock items with the pagination totals.
A page of stock items with the pagination totals.
The rows on this page, in the query's sort order.
Show child attributes
Show child attributes
Total rows matching the filter across ALL pages, not just this one.
0 <= x <= 9007199254740991The 1-based page number served.
0 < x <= 9007199254740991Rows requested per page.
0 < x <= 9007199254740991Total number of pages; stop walking when page reaches it.
0 <= x <= 9007199254740991
