Open a rental
Opens a rental in the active state: the unit leaves the store with the customer until dueAt, which the server DERIVES as startAt + days (do not send it). days is one of the four offered tiers — 1, 3, 7 or 14 — and no other value is accepted. MONEY, read carefully: this endpoint moves NONE. depositAmountCents / depositReference merely RECORD a caution the payment terminal has already pre-authorised (the money is HELD on the customer’s card, not captured), and the rental fee itself (ratePerDayCents x days) is NOT charged here or by any other endpoint in this API — take it at the till. Never call this before the pre-auth actually exists; you would open an unsecured rental. id is CALLER-SUPPLIED and is the dedup key: if your call times out, retry with the SAME id — a 409 CONFLICT then means your first attempt committed, so read it back with getRental instead of minting a new id. The duplicate-id check runs FIRST, so an existing id returns 409 even when the window is also invalid — you will not see the 422 until the id is unique. 422 when the derived dueAt is not in the future (a stale startAt, or a window that has already elapsed); 400 on a bad tier, a non-hex skuId or a non-positive amount.
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.
Body
1^[0-9a-f]{64}$11^(?:(?:\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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$1 0 < x <= 90071992547409910 < x <= 90071992547409911Response
The opened rental: active, dueAt derived from startAt + days, no settlement yet, attributed to the calling actor.
The opened rental: active, dueAt derived from startAt + days, no settlement yet, attributed to the calling actor.
1 -9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991active, returned, overdue 
