๐งฑ Business Event Model
Diagram
classDiagram
class EventLog {
UUID id
String objectId
ObjectEnum objectType
TopicEnum topic
String? actorId
ActorEnum actorType
EventSourceEnum eventSource
String? pmsPropertyId
Instant timestamp
Map~String, JsonNode~ context
}
class ActorEnum {
<<enumeration>>
BOOKER
INTEGRATION
PRIMARY_GUEST
PRINCIPAL
SECONDARY_GUEST
}
class ObjectEnum {
<<enumeration>>
ACCOUNT
BOOKING
CONVERSATION
FOLIO
GATEWAY
LOCK
MAGIC_PROMO_CODE
MESSAGE
PROFILE
RESERVATION
TASK
TENANT_CONFIG
UNIT
}
class TopicEnum {
<<enumeration>>
ACCOUNT_NOTIFICATION_FAILED
ACCOUNT_NOTIFICATION_SENT
BOOKING_CREATED
BOOKING_IBE_FAILED
BOOKING_IBE_SUCCESS
BOOKING_NOTIFICATION_FAILED
BOOKING_NOTIFICATION_SENT
BOOKING_UPDATED
CONVERSATION_CREATED
CONVERSATION_RESOLVED
CONVERSATION_UPDATED
DOOR_OPEN_FAILED
DOOR_OPEN_SUCCESS
FOLIO_CREATED
FOLIO_UPDATED
GATEWAY_CONNECTION_LOST
GATEWAY_CONNECTION_RESTORED
LOCK_CONNECTION_LOST
LOCK_CONNECTION_RESTORED
MAGIC_PROMO_CODE_CREATED
MAGIC_PROMO_CODE_DELETED
MAGIC_PROMO_CODE_UPDATED
MAGIC_PROMO_CODE_USED
MESSAGE_FAILED
MESSAGE_INTERACTION
MESSAGE_RECEIVED
MESSAGE_SENT
PROFILE_CREATED
PROFILE_LANGUAGE_UPDATED
PROFILE_MERGED
PROFILE_UPDATED
RESERVATION_ACTION_FAILED
RESERVATION_ACTION_SUCCESS
RESERVATION_CANCELLED
RESERVATION_CHECKED_IN
RESERVATION_CHECKED_OUT
RESERVATION_CONDITION_UPDATED
RESERVATION_CREATED
RESERVATION_DOOR_ACCESS_SYNC_FAILED
RESERVATION_DOOR_ACCESS_SYNC_SUCCESS
RESERVATION_DOOR_OPEN_FAILED
RESERVATION_DOOR_OPEN_SUCCESS
RESERVATION_NOTIFICATION_FAILED
RESERVATION_NOTIFICATION_SENT
RESERVATION_NO_SHOW
RESERVATION_PRECHECKIN_FLOW_CHANGED
RESERVATION_PRECHECKIN_FLOW_COMPLETED
RESERVATION_PRECHECKOUT_FLOW_CHANGED
RESERVATION_PRECHECKOUT_FLOW_COMPLETED
RESERVATION_UPDATED
TASK_COMPLETED
TASK_CREATED
TASK_UPDATED
TENANT_CONFIG_UPDATED
}
class EventSourceEnum {
<<enumeration>>
AI_BOT
ALERT
BACKOFFICE
CHECKIN_WIZARD
DOOR_ACCESS_PROVIDER
GUEST_JOURNEY
KIOSK
MESSAGE_PROVIDER
NOTIFICATION
PAYMENT_PROVIDER
PERSON_RECORD_MATCHING
PLATFORM
PMS
SECOND_SCREEN
TASK_MANAGEMENT
UNIFIED_MESSAGING
UNKNOWN
}
EventLog --> ObjectEnum : objectType
EventLog --> TopicEnum : topic
EventLog --> ActorEnum : actorType
EventLog --> EventSourceEnum : eventSource
Sample Json
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2025-01-15T14:30:15.123Z",
"objectId": "reservation-12345",
"actorId": "guest-98765",
"pmsPropertyId": "prop-23",
"objectType": "RESERVATION",
"eventSource": "KIOSK",
"actorType": "PRIMARY_GUEST",
"topic": "RESERVATION_CHECKED_IN",
"context": {
"key1": "value1",
"key2": {
"nested": "object"
}
}
}
Field Descriptions
| Field | Type | Description |
|---|---|---|
| id | UUID | Unique identifier for the event |
| objectId | String | Unique identifier of the object that triggered the event |
| objectType | Enum | Type of object |
| topic | Enum | Specific event topic |
| actorId | String | OPTIONAL: Identifier of the entity that performed the action |
| actorType | Enum | Type of actor |
| eventSource | Enum | System or application that generated the event |
| pmsPropertyId | String | OPTIONAL: Identifier of the property the object belongs to |
| timestamp | Instant | Exact time when the event occurred |
| context | Map |
Event-specific metadata as key-value pairs โ ๏ธ Not contractually fixed. Behavior may vary depending on the connected PMS |