Error
A valid request URL is required to generate request examples{
"storeId": "store-rivoli",
"generatedAt": "2026-07-28T10:15:30.000Z",
"dueCount": 1,
"tasks": [
{
"storeId": "store-rivoli",
"skuId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"countClass": "A",
"cadenceDays": 7,
"lastCountedAt": "2026-07-10T09:00:00.000Z",
"elapsedDays": 18,
"overdueDays": 11,
"priority": 3.61
}
]
}{
"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
}
}Inventory
Plan a store's due cycle counts (comptage tournant)
Derives the ordered, due count tasks (comptage tournant) for one store from its cadence config and per-SKU policies: each task carries its class, cadence, last-counted anchor and an urgency trail (elapsed / overdue days + a priority score), most urgent first. Pass ?storeId=<id> (required). Hand a due task off to the count-session flow to execute it.
GET
/
v1
/
cycle-counts
/
plan
Error
A valid request URL is required to generate request examples{
"storeId": "store-rivoli",
"generatedAt": "2026-07-28T10:15:30.000Z",
"dueCount": 1,
"tasks": [
{
"storeId": "store-rivoli",
"skuId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"countClass": "A",
"cadenceDays": 7,
"lastCountedAt": "2026-07-10T09:00:00.000Z",
"elapsedDays": 18,
"overdueDays": 11,
"priority": 3.61
}
]
}{
"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
The store (magasin) whose due cycle-count (comptage tournant) tasks to derive.
Minimum string length:
1Response
The ordered due-count plan (most urgent first).
The ordered due-count plan (most urgent first).
Minimum string length:
1Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Required range:
0 <= x <= 9007199254740991Show child attributes
Show child attributes

