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": "overdue",
"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
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Flag a rental as overdue
Flags an active rental whose period.dueAt has already elapsed as overdue. This is a BOOKKEEPING flip for the returns desk and the status=overdue listing: it moves no money, charges no fee, and does not block the return — an overdue rental is still returned through returnRental, which computes the late fee from dueAt regardless of whether anyone flagged it. Nothing applies it automatically, so a genuinely late rental stays active until someone calls this. Send no body. It cannot be undone: there is no active <- overdue transition. 422 in two distinct cases you must tell apart from the message — the rental is not active (already overdue, or returned), or dueAt has NOT yet passed, which usually means you misread the window; re-check period.dueAt with getRental rather than retrying. 404 for an unknown id. NOT IDEMPOTENT — there is no dedup key. A SEQUENTIAL replay cannot double-apply (the status guard rejects it), but that guard is an unsynchronised read-then-write with no row lock (solya-pos#956), so do not fan concurrent calls at one rental. If your call times out RE-READ with getRental before retrying: an overdue status means the first attempt already committed.
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": "overdue",
"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
}
}{
"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, now overdue; every other field is unchanged.
The rental, now overdue; every other field is unchanged.
Show child attributes
Show child attributes
1 -9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991active, returned, overdue Show child attributes
Show child attributes

