A valid request URL is required to generate request examples{
"items": [
{
"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"
}
],
"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
}
}List rentals
Returns ONE PAGE of the rental book, NEWEST-RENTED FIRST. Page with page/pageSize (max 100) and keep going until page reaches pageCount; total is the count across ALL pages, not just this one. Reach for this to answer ‘what is out right now’, ‘what is late’ or to FIND a rental id; when you already hold an id use getRental. Narrow with status — active (unit is out, still within dueAt), overdue (an active rental a human has flagged as late; see markRentalOverdue, it is NOT applied automatically) or returned (closed out and settled) — and with store (the store the rental was OPENED in). WARNING: omitting store returns rentals from EVERY store, not just the caller’s; always pass it unless you truly want the estate-wide book. Reading the true late set means status=active plus a period.dueAt comparison of your own, because an unflagged late rental is still active. No match is an empty items array (200), never a 404.
A valid request URL is required to generate request examples{
"items": [
{
"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"
}
],
"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
}
}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.
Query Parameters
1-based page index to return. Defaults to 1.
1 <= x <= 9007199254740991Rows per page, 1..100. Defaults to 20.
1 <= x <= 1001active, returned, overdue Response
A page of matching rentals, newest-rented first, with the pagination totals.
A page of matching rentals, newest-rented first, with the pagination 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
