A valid request URL is required to generate request examples{
"id": "markdown:prod-espresso",
"productId": "prod-espresso",
"version": 1,
"masterCents": 3000,
"stepCount": 2
}{
"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
}
}Set a product's markdown schedule (démarque programmée)
Upserts a product’s markdown (démarque) schedule: a master base price plus ordered steps. Each step is one of two KINDS — fixed (the effective price BECOMES priceCents) or percent (the master less percentOff%, bounded 0..100). Steps must be STRICTLY ascending by fromDate, so the ramp is unambiguous; the latest step on-or-before now wins at resolve. The example ramps a solde: -30% from 1 Aug, then a fixed 10,00 € floor from 1 Sep. expectedVersion is REQUIRED: send 1 for a first write, then the version the previous write returned (or the one you read from the list) — it is enforced only once the schedule exists. Requires the kernel price:override grant (403 without). 409s on a stale expectedVersion: re-read the schedule and resend with its current version.
A valid request URL is required to generate request examples{
"id": "markdown:prod-espresso",
"productId": "prod-espresso",
"version": 1,
"masterCents": 3000,
"stepCount": 2
}{
"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
Response
The persisted schedule identity + its bumped version.
The persisted schedule identity + its bumped version.
The persisted schedule id.
The product the schedule is for.
The version the write landed at (bumped on update).
-9007199254740991 <= x <= 9007199254740991The master (base) gross price in cents.
0 <= x <= 9007199254740991How many steps the persisted schedule carries.
-9007199254740991 <= x <= 9007199254740991
