Error
A valid request URL is required to generate request examples{
"id": "rsv-ok",
"skuId": "1bee1106d484160b89bed6acf6bfd209fcb20e32a52e975e946a08c1f8db957e",
"customerId": "cust-1",
"storeId": "store-1",
"quantity": 2,
"holdUntil": "2999-01-01T00:00:00.000Z",
"depositReference": "ACPT-1",
"status": "fulfilled",
"actorId": "cashier-1",
"heldAt": "2026-01-02T10:00:00.000Z"
}{
"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
}
}Checkout
Fulfil a hold
Flips a held reservation to fulfilled when the customer completes the purchase, and returns it. Sends no body — the hold is addressed by the path id. 404s for an unknown hold; 422s when the hold is not held (already fulfilled, cancelled or expired).
POST
/
v1
/
reservations
/
{reservationId}
/
fulfil
Error
A valid request URL is required to generate request examples{
"id": "rsv-ok",
"skuId": "1bee1106d484160b89bed6acf6bfd209fcb20e32a52e975e946a08c1f8db957e",
"customerId": "cust-1",
"storeId": "store-1",
"quantity": 2,
"holdUntil": "2999-01-01T00:00:00.000Z",
"depositReference": "ACPT-1",
"status": "fulfilled",
"actorId": "cashier-1",
"heldAt": "2026-01-02T10:00:00.000Z"
}{
"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.
Path Parameters
Id of the in-store hold (réservation) to act on.
Minimum string length:
1Response
The reservation at status fulfilled.
The reservation at status fulfilled.
Required range:
-9007199254740991 <= x <= 9007199254740991Pattern:
^(?:(?:\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))$Available options:
held, fulfilled, cancelled, expired Pattern:
^(?:(?:\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))$
