HOS AIHOS AI
Apaleo API → HOS Events 0.1 · Unofficial · Synthetic data

Mapping · Experimental

The same early arrival, with the PMS speaking Apaleo.

The PMS side of the arrival scenario now starts as Apaleo API payloads. Webhooks that name what happened and when, then the reservation or unit the integration fetches. A reference adapter turns them into 6 HOS facts, and the projection reaches the same outcome as the synthetic corpus.

Unofficial and experimental.

Written from Apaleo's published documentation and packages, listed below. HOS AI is not affiliated with Apaleo, and Apaleo has not reviewed or endorsed this mapping. Every payload is synthetic. The adapter has also run, read-only, against the five sample hotels of an Apaleo developer account on 26 September 2026: 740 facts, every one valid HOS 0.1, and none published twice. Three arrivals added to the Paris hotel read ready, not ready and blocked by maintenance, as set up.

Delivered to HOS, in this order

0 / 13

Arrival-readiness projection

Waiting for facts

No situation

Deliver the first event, or play the whole scenario.

13 facts for the scenario's 13. Delivery 7 has no Apaleo counterpart. Apaleo adds a fact the corpus does not have. Occupancy: vacant. Apaleo reports it with every unit, and the manifest makes the PMS the occupancy authority. Readiness does not depend on it. Housekeeping and messaging facts are unchanged. Times are shown in the property time zone (Europe/Paris).

Mapping

From Apaleo payloads to HOS facts.

The adapter never forwards a PMS payload. It compares each fetched entity with what it already published and emits only the facts that changed, with ids that stay the same when a webhook is delivered again.

Apaleo to HOS Events 0.1 mapping
Apaleo eventWhenHOS Events 0.1How
Reservation/createdConfirmedreservation.created, stay.expectedtime is the reservation's created time. The reservation and booking ids become typed external references. No guest_id: Apaleo embeds guest details without a guest id.
Reservation/amended, changedArrival or departure movedreservation.updated, stay.expectedOnly the changed fields travel, at the event's timestamp.
Reservation/unit-assignedA unit is assignedstay.unit_assignedtime is the event's timestamp; previous_unit_id is the unit already published. Seen through another event, at modified with hostimebasis modified.
Reservation/checked-in, checked-outInHouse, CheckedOutstay.checked_in, stay.checked_outtime is checkInTime or checkOutTime.
Reservation/canceled, set-to-no-showCanceled, NoShowreservation.cancelled, reservation.updatedAt cancellationTime or noShowTime; no-show becomes status no_show. No cancellation reason is mapped.
Reservation/unit-unassignedThe unit is releasedstay.unit_unassignedAt the event's timestamp.
Reservation/check-in-revertedBack to Confirmedstay.check_in_revertedAt the event's timestamp; the stay is expected again.
Unit/changedisOccupiedunit.status_changed · occupancyoccupied or vacant, at the event's timestamp.
Unit/changedconditionunit.status_changed · housekeepingDirty → dirty; CleanToBeInspected → clean; Clean → inspected where the property inspects, clean otherwise.
Unit/changedmaintenanceunit.status_changed · maintenance, commercialAny maintenance → out_of_service; OutOfOrder and OutOfInventory also → not_sellable.
Maintenance/created, changedOutOfService, OutOfOrder, OutOfInventoryunit.maintenance_scheduledfrom and to, at the event's timestamp. OutOfService: out_of_service, reason repair; OutOfOrder: also not_sellable; OutOfInventory: both, reason renovation. The description stays in Apaleo.
Maintenance/deletedThe maintenance is goneunit.maintenance_cancelledFor the unit the adapter published, since a deleted maintenance can no longer be fetched.
Other topicsFolio, invoice, rate plan, block, company…Not mappedNo HOS 0.1 counterpart yet.

Findings

What Apaleo taught us about HOS 0.1.

Mapping a real PMS is the test the synthetic corpus could not provide. These are the gaps it exposed, in the source and in the specification.

Events say what happened, and when.

Apaleo names each change, such as unit-assigned or checked-in, and stamps it. Assignments get exact times, where Mews only gives the reservation's last update.

There is no guest identity to link.

An Apaleo reservation embeds its guest's details without an id, so HOS gets no guest_id. HOS 0.1 now states the rule: without a stable guest identity, no guest_id, and never one derived from names or contact details.

Rooms already look like HOS.

Occupancy, cleanliness and maintenance are separate in Apaleo, as in HOS, and its maintenance types even say whether the unit can still be sold.

A status name is not its meaning.

Clean means inspected only where the property inspects. The adapter takes that workflow from its configuration.

Undo needed events of its own.

Apaleo can unassign a unit and revert a check-in. HOS 0.1 now has stay.unit_unassigned and stay.check_in_reverted.

A deletion carries no data.

Once deleted, a maintenance can no longer be fetched. The adapter's memory of what it published is what names the unit to free.

Out of order needs a free room.

On a live account, Apaleo refuses an OutOfOrder maintenance on a room already assigned to a reservation; only OutOfService is accepted. Both block the room's readiness in HOS.

Tasks are out of reach.

Apaleo's webhook events include no housekeeping task. This integration publishes none.

Mapping kit

Check the mapping yourself.

The recording pins the PMS payloads, the adapter configuration and every difference from the synthetic corpus. The unit tests replay it and compare the outcome with the scenario's expected.json.

Sources

  • Apaleo official n8n node · 1.0.37

    The webhook events an integration can subscribe to, such as reservation/unit-assigned, reservation/checked-in and unit/changed.

    By Apaleo
  • Apaleo Booking API models · 19.0.29

    ReservationModel: status, arrival, departure, created, modified, unit, and check-in, check-out, cancellation and no-show times. The typings are generated from the evolving Booking API; the fields used here are those of v1.

    By Apaleo
  • Apaleo Inventory API models · 19.0.29

    UnitModel: occupancy, condition (Clean, CleanToBeInspected, Dirty) and maintenance (OutOfService, OutOfOrder, OutOfInventory).

    By Apaleo
  • Apaleo Operations API models · 19.0.29

    MaintenanceModel: unit, from, to and type (OutOfService, OutOfOrder, OutOfInventory). The typings are generated from the evolving Operations API.

    By Apaleo
  • Apaleo developer guide: webhook payload

    The webhook message: topic, type, id, accountId, propertyId, timestamp in milliseconds, clientId, subjectId and data.entityId. Read through a search excerpt: the site was not reachable from the build environment.

    By Apaleo