A valid request URL is required to generate request examples{
"id": "plan-restock-aigle-32",
"family": "restock",
"reference": "RSA-26-0142",
"name": "Réassort Aigle — semaine 32",
"notes": null,
"status": "DRAFT",
"ruleGroupId": null,
"deadline": "2026-08-14T16:00:00.000Z",
"supplierId": "sup-aigle",
"storeId": null,
"version": 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
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Open a plan
Opens a plan in DRAFT, always — nothing is ever created already decided. The body is narrowed by family: the four supplier families REQUIRE supplierId (an order with no supplier cannot be issued, costed, or checked against a negotiated term), a rebalance requires two DIFFERENT shops, a markdown requires the operation’s name and its dates — with endsAt on or after startsAt, a cross-field rule JSON Schema cannot express, so a period running backwards 400s on endsAt rather than being visible in this spec. reference is what will be quoted in an email to a supplier and is unique across the network. The family and the counterparty are frozen from here on: if either is wrong, cancel the plan and open another.
A valid request URL is required to generate request examples{
"id": "plan-restock-aigle-32",
"family": "restock",
"reference": "RSA-26-0142",
"name": "Réassort Aigle — semaine 32",
"notes": null,
"status": "DRAFT",
"ruleGroupId": null,
"deadline": "2026-08-14T16:00:00.000Z",
"supplierId": "sup-aigle",
"storeId": null,
"version": 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
}
}{
"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.
Body
- Option 1
- Option 2
- Option 3
11 - 641 - 255restock, pre_season_order, supplier_return, supplier_exchange 1100001^(?:(?:\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))$1Response
The plan as persisted, in DRAFT at version 1.
- Option 1
- Option 2
- Option 3
The plan as persisted, in DRAFT at version 1.
11 - 641 - 25510000DRAFT, VALIDATED, SENT, RECEIVED, PROPOSED, AGREED, IN_TRANSIT, SETTLED, CREDITED, CLOSED, CANCELLED 1^(?:(?:\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))$Show child attributes
Show child attributes
0 < x <= 9007199254740991restock, pre_season_order, supplier_return, supplier_exchange 11
