Skip to content

Housekeeping pacing

POST
/v1/functions/hospitality.function.housekeeping_pacing/invoke
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.

Media typeapplication/json
object
params
required
object
business_date
The business date; omit for the floor's today — the house's local calendar day, the day its housekeeping sheet is dated by (not the hotel date, which stays on yesterday until the audit)
string format: date
target
required
object
id
required
string format: uuid
object_type
required
Allowed value: hospitality.property

Function invoked. The body carries the typed return_value shaped by the function’s declared return_type.

Media typeapplication/json
InvokeFunctionResponse

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
correlation_id
required

Per-invocation correlation id; appears on log/trace records this function emitted.

string format: uuid
return_value
required
object
attendants
required
Array<object>
object
cleaning_seconds
required
integer
completed_percent
string format: decimal
contracted_weekly_hours
string format: decimal
credit_target
string format: decimal
credits_assigned
required
string format: decimal
credits_completed
required
string format: decimal
credits_in_progress
required
string format: decimal
credits_pending
required
string format: decimal
deviation_seconds
required
integer
in_progress_percent
string format: decimal
inspection_rating_average
string format: decimal
inspections
required
integer
pending_percent
string format: decimal
percentage_worked
string format: decimal
rooms_assigned
required
integer
rooms_cleaned
required
integer
rooms_dnd
required
integer
self_rating_average
string format: decimal
self_ratings
required
integer
staff_member_id
required
string format: uuid
standard_seconds
required
integer
target_percent
string format: decimal
time_worked_seconds
integer
transition_seconds
required
integer
business_date
required
string format: date
property_id
required
string format: uuid
summary
required
object
cleaning_seconds
required
integer
completed_percent
string format: decimal
credits_assigned
required
string format: decimal
credits_completed
required
string format: decimal
credits_in_progress
required
string format: decimal
credits_pending
required
string format: decimal
credits_unassigned
required
string format: decimal
deviation_seconds
required
integer
in_progress_percent
string format: decimal
pending_percent
string format: decimal
rooms
required
integer
rooms_assigned
required
integer
rooms_cleaned
required
integer
rooms_dnd
required
integer
rooms_inspected
required
integer
rooms_pending
required
integer
standard_seconds
required
integer
tasks_unpriced
required
integer
transition_seconds
required
integer
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
}
}
}
Cache-Control
string

Always no-store — function results are time-sensitive and never cacheable.

Function or target object not found.

Parameter validation or domain-rule violation.