Housekeeping
Cleaning jobs are never stored. Every read derives them from the bookings: a turnover per checkout of a guest or owner stay, its window running from the (late) checkout to the next (early) check-in or the block due date; a weekly mid-stay date per stay whose service fee includes it. Only progress leaves rows — reports from the cleaning portal or the Cleaning API.
This is the agency’s view of that derivation: the whole portfolio, with the crew on duty named. A facility-management system can reconcile who cleaned what, when, and how long it took. A cleaning company itself uses its own door instead, which shows only its crew and never a price.
GET /partner/v1/housekeeping/jobs
Section titled “GET /partner/v1/housekeeping/jobs”Scope read:housekeeping.
| Query parameter | Required | Meaning |
|---|---|---|
from | yes | First day of interest (inclusive) |
to | yes | Last day (exclusive); at most 92 days after from |
team | no | Cleaning team id — only that crew’s jobs, hand-overs included |
{ "from": "2026-09-01", "to": "2026-09-08", "jobs": [ { "key": "turnover:0191a…", "kind": "turnover", "bookingId": "0191a…", "unitSlug": "marina-loft-2br", "unitName": "Marina Loft · 2BR", "team": { "id": "0189f…", "name": "Sparkle Cleaning LLC" }, "covered": false, "date": "2026-09-04", "endDate": "2026-09-05", "notBefore": "12:00", "lateCheckout": true, "dueTime": "13:00", "nextArrival": { "date": "2026-09-05", "time": "13:00", "early": true }, "flexible": false, "blockDays": 0, "blockRule": null, "pax": 3, "week": null, "status": "done", "startedAt": "2026-09-04T12:40:11.000Z", "finishedAt": "2026-09-04T14:55:02.000Z", "minutes": 135, "notes": null }, { "key": "midstay:0191c…:2026-09-07", "kind": "mid_stay", "…": "…", "week": 1, "status": "open" } ]}| Field | Notes |
|---|---|
key | Stable job key — the same one the cleaning door reports on |
date / endDate | The window: first day work is possible, last day it may be done |
notBefore / dueTime | Apartment free from (late checkout included) and must be guest-ready by (early check-in included) — HH:MM on the first resp. last day |
flexible | No next stay waits; any day of the window works |
blockDays / blockRule | The turnover block that keeps the unit off the market, and the rule that raised it, if any |
team / covered | Crew on duty; covered: true means the office handed the job to a crew other than the unit’s own |
status | open, in_progress, done, waived (a mid-stay cleaning the guest declined) |
minutes | Derived at finish from start to finish; null when finished without a start |
GET /partner/v1/housekeeping/teams
Section titled “GET /partner/v1/housekeeping/teams”Scope read:housekeeping. The agency’s crews — in-house teams and external
companies — with their unit counts:
{ "teams": [ { "id": "0189f…", "name": "Sparkle Cleaning LLC", "contactName": "Maria S.", "email": "dispatch@sparkle.example", "phone": "+971 4 000 0000", "capacityPerDay": 8, "unitCount": 21 } ]}Contract terms and rate cards between agency and crew are not part of the API.