Skip to content

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.

Scope read:housekeeping.

Query parameterRequiredMeaning
fromyesFirst day of interest (inclusive)
toyesLast day (exclusive); at most 92 days after from
teamnoCleaning 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"
}
]
}
FieldNotes
keyStable job key — the same one the cleaning door reports on
date / endDateThe window: first day work is possible, last day it may be done
notBefore / dueTimeApartment free from (late checkout included) and must be guest-ready by (early check-in included) — HH:MM on the first resp. last day
flexibleNo next stay waits; any day of the window works
blockDays / blockRuleThe turnover block that keeps the unit off the market, and the rule that raised it, if any
team / coveredCrew on duty; covered: true means the office handed the job to a crew other than the unit’s own
statusopen, in_progress, done, waived (a mid-stay cleaning the guest declined)
minutesDerived at finish from start to finish; null when finished without a start

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.