Housekeeping pacing
const url = 'https://api.aerandil.com/v1/functions/hospitality.function.housekeeping_pacing/invoke';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"params":{"business_date":"2026-04-15"},"target":{"id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","object_type":"hospitality.property"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.aerandil.com/v1/functions/hospitality.function.housekeeping_pacing/invoke \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "params": { "business_date": "2026-04-15" }, "target": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "object_type": "hospitality.property" } }'The housekeeping pacing report for one property and one business date (hubOS’s productivity report, counted in OPERA’s housekeeping credits). Per attendant: their shift’s credit target and the share of it completed; credits assigned, completed, in progress and pending (pending or blocked) with their share of the assigned; rooms assigned, cleaned and on do-not-disturb; cleaning time (completed_at − started_at of each complete task), transition time (the gaps between one task’s completion and the next start), and the deviation of cleaning time from the tasks’ standard minutes, over the tasks that have both; and the average inspection score their cleaning received. A summary for the house: the same credits (plus credits on tasks nobody holds, and a count of unpriced tasks), rooms on the board / assigned / cleaned / pending / inspected / on do-not-disturb, and the times. Skipped tasks count nowhere. Credits and standard minutes are what each task was minted with from the house’s credit rules (set_housekeeping_credit_rule); targets are set at clock-in or with set_shift_credit_target. Computed on read. Read-only.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
object
Responses
Section titled “Responses”Function invoked. The body carries the typed return_value shaped by the function’s declared return_type.
Envelope returned by the Aerandil function engine. correlation_id is the per-invocation id for trace stitching; return_value is the typed value the function computed (shape declared by the function’s return_type).
object
Per-invocation correlation id; appears on log/trace records this function emitted.
object
object
object
Examplegenerated
{ "correlation_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "return_value": { "attendants": [ { "cleaning_seconds": 1, "completed_percent": "example", "contracted_weekly_hours": "example", "credit_target": "example", "credits_assigned": "example", "credits_completed": "example", "credits_in_progress": "example", "credits_pending": "example", "deviation_seconds": 1, "in_progress_percent": "example", "inspection_rating_average": "example", "inspections": 1, "pending_percent": "example", "percentage_worked": "example", "rooms_assigned": 1, "rooms_cleaned": 1, "rooms_dnd": 1, "self_rating_average": "example", "self_ratings": 1, "staff_member_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "standard_seconds": 1, "target_percent": "example", "time_worked_seconds": 1, "transition_seconds": 1 } ], "business_date": "2026-04-15", "property_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "summary": { "cleaning_seconds": 1, "completed_percent": "example", "credits_assigned": "example", "credits_completed": "example", "credits_in_progress": "example", "credits_pending": "example", "credits_unassigned": "example", "deviation_seconds": 1, "in_progress_percent": "example", "pending_percent": "example", "rooms": 1, "rooms_assigned": 1, "rooms_cleaned": 1, "rooms_dnd": 1, "rooms_inspected": 1, "rooms_pending": 1, "standard_seconds": 1, "tasks_unpriced": 1, "transition_seconds": 1 } }}Headers
Section titled “Headers”Always no-store — function results are time-sensitive and never cacheable.
Function or target object not found.
Parameter validation or domain-rule violation.