A valid request URL is required to generate request examples{
"items": [
{
"skuId": "2f0a30932a471a86d885382399c476bc17fde6e613c42a73e2cf6a760fe4f774",
"productId": "prod-espresso",
"label": "Espresso Blend 1kg",
"ageRestricted": false,
"currency": "EUR",
"netUnitPrice": 15,
"unitPriceTtc": 18,
"vatRate": 20,
"taxClass": "standard"
}
],
"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
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Get a product's priced sellable units (prix de vente TTC)
Projects ONE PAGE of the priced (TTC + VAT per SKU) sellable units the till builds a cart line from. Pass ?store=<id> to re-price through that store’s overrides; without it the base catalog price stands. 404s for a product with no master pricing record.
Most products fit in a single page, but a wide size × colour matrix does not, so the response is windowed (page/pageSize, max 100) like every other list. total counts the product’s sellable units across ALL pages: to PRICE a specific SKU, read total and keep requesting pages until you find it (or until page reaches pageCount) — a SKU missing from page 1 is not an unpriced SKU, and treating it as one puts the wrong price on the line.
A valid request URL is required to generate request examples{
"items": [
{
"skuId": "2f0a30932a471a86d885382399c476bc17fde6e613c42a73e2cf6a760fe4f774",
"productId": "prod-espresso",
"label": "Espresso Blend 1kg",
"ageRestricted": false,
"currency": "EUR",
"netUnitPrice": 15,
"unitPriceTtc": 18,
"vatRate": 20,
"taxClass": "standard"
}
],
"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
}
}{
"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.
Path Parameters
The product id (e.g. prod-espresso).
1Query Parameters
1-based page index to return. Defaults to 1.
1 <= x <= 9007199254740991Rows per page, 1..100. Defaults to 20.
1 <= x <= 100Store id to re-price through its overrides; omit for the base catalogue price.
Response
A page of the priced sellable units (one row per sellable SKU), with the product's whole-matrix totals.
A page of the priced sellable units (one row per sellable SKU), with the product's whole-matrix 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
