A valid request URL is required to generate request examples{
"id": "rnt-2030-000184",
"skuId": "6b1f0c93a4d7e28150c3af6b9d24e70f8a5c1b3e6d90f27a4c8b5e1d3f7a9c02",
"customerId": "cust-1",
"storeId": "store-rivoli",
"period": {
"startAt": "2030-01-01T09:00:00.000Z",
"dueAt": "2030-01-04T09:00:00.000Z"
},
"days": 3,
"ratePerDayCents": 640,
"depositAmountCents": 4000,
"depositReference": "PREAUTH-4821",
"status": "active",
"actorId": "user-camille",
"rentedAt": "2030-01-01T09: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
}
}Get a rental by id
Returns ONE rental: the rented skuId, the customer/store, the window (period.startAt -> period.dueAt, the latter derived server-side as startAt + days), the money held (ratePerDayCents, depositAmountCents, depositReference) and the lifecycle status. settlement is PRESENT only once status is returned; while the unit is out the key is absent entirely, so branch on its presence rather than on a null. Call this before any transition to confirm the current state — returnRental and markRentalOverdue are legal only from specific states and cannot be undone — and call it again after a write whose response you did not see. 404s when no rental carries the id.
A valid request URL is required to generate request examples{
"id": "rnt-2030-000184",
"skuId": "6b1f0c93a4d7e28150c3af6b9d24e70f8a5c1b3e6d90f27a4c8b5e1d3f7a9c02",
"customerId": "cust-1",
"storeId": "store-rivoli",
"period": {
"startAt": "2030-01-01T09:00:00.000Z",
"dueAt": "2030-01-04T09:00:00.000Z"
},
"days": 3,
"ratePerDayCents": 640,
"depositAmountCents": 4000,
"depositReference": "PREAUTH-4821",
"status": "active",
"actorId": "user-camille",
"rentedAt": "2030-01-01T09: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
}
}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
1Response
The rental; settlement is absent until it has been returned.
The rental; settlement is absent until it has been returned.
Show child attributes
Show child attributes
1 -9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991active, returned, overdue Show child attributes
Show child attributes

