Events
SDK methods for event ingestion, querying, subscriptions, and replay.
The client.events namespace provides typed methods for ingesting custom events, querying the event log, and managing event subscriptions with replay support. Available in TypeScript, Python, and Go SDKs.
| SDK | Install | Namespace |
|---|---|---|
| TypeScript | npm install @caldera/platformxe-sdk | client.events |
| Python | pip install platformxe | client.events |
| Go | go get github.com/calderax/platformxe-go | client.Events |
Ingest an event
Emit a custom event into PlatformXe for processing by workflows and subscriptions.
const result = await client.events.ingest({
eventType: 'BOOKING_CONFIRMED',
entityId: 'BK-2026-00451',
payload: {
guestName: 'Ade Bakare',
checkIn: '2026-05-01',
propertyId: 'prop-123',
},
});
console.log(result.eventId); // "evt_abc123"
result = client.events.ingest(
event_type="BOOKING_CONFIRMED",
entity_id="BK-2026-00451",
payload={
"guestName": "Ade Bakare",
"checkIn": "2026-05-01",
"propertyId": "prop-123",
},
)
result, err := client.Events.Ingest(map[string]interface{}{
"eventType": "BOOKING_CONFIRMED",
"entityId": "BK-2026-00451",
"payload": map[string]interface{}{
"guestName": "Ade Bakare",
"checkIn": "2026-05-01",
"propertyId": "prop-123",
},
})
Query the event log
Retrieve past events with optional filters by type, entity, or time range.
const log = await client.events.log({
eventType: 'BOOKING_CONFIRMED',
from: '2026-04-01T00:00:00Z',
to: '2026-04-13T23:59:59Z',
page: 1,
limit: 50,
});
for (const entry of log.events) {
console.log(`${entry.eventType} at ${entry.timestamp}`);
}
log = client.events.log(
event_type="BOOKING_CONFIRMED",
from_date="2026-04-01T00:00:00Z",
to_date="2026-04-13T23:59:59Z",
)
log, err := client.Events.Log(map[string]string{
"eventType": "BOOKING_CONFIRMED",
"from": "2026-04-01T00:00:00Z",
"to": "2026-04-13T23:59:59Z",
})
Subscriptions
List subscriptions
const { subscriptions } = await client.events.listSubscriptions();
result = client.events.list_subscriptions()
result, err := client.Events.ListSubscriptions()
Create a subscription
const sub = await client.events.createSubscription({
eventTypes: ['BOOKING_CONFIRMED', 'BOOKING_CANCELLED'],
webhookUrl: 'https://your-app.com/events',
isActive: true,
});
console.log(sub.id); // "esub_abc123"
sub = client.events.create_subscription(
event_types=["BOOKING_CONFIRMED", "BOOKING_CANCELLED"],
webhook_url="https://your-app.com/events",
is_active=True,
)
sub, err := client.Events.CreateSubscription(map[string]interface{}{
"eventTypes": []string{"BOOKING_CONFIRMED", "BOOKING_CANCELLED"},
"webhookUrl": "https://your-app.com/events",
"isActive": true,
})
Get a subscription
const sub = await client.events.getSubscription('esub_abc123');
sub = client.events.get_subscription("esub_abc123")
sub, err := client.Events.GetSubscription("esub_abc123")
Update a subscription
const updated = await client.events.updateSubscription('esub_abc123', {
eventTypes: ['BOOKING_CONFIRMED'],
isActive: false,
});
updated = client.events.update_subscription(
"esub_abc123",
event_types=["BOOKING_CONFIRMED"],
is_active=False,
)
updated, err := client.Events.UpdateSubscription("esub_abc123", map[string]interface{}{
"eventTypes": []string{"BOOKING_CONFIRMED"},
"isActive": false,
})
Delete a subscription
await client.events.deleteSubscription('esub_abc123');
client.events.delete_subscription("esub_abc123")
result, err := client.Events.DeleteSubscription("esub_abc123")
Replay events
Replay previously delivered events for a subscription within a time range. Useful for recovering from downstream failures.
const replay = await client.events.replay('esub_abc123', {
from: '2026-04-10T00:00:00Z',
to: '2026-04-11T00:00:00Z',
});
console.log(replay.replayed); // 42
replay = client.events.replay(
"esub_abc123",
from_date="2026-04-10T00:00:00Z",
to_date="2026-04-11T00:00:00Z",
)
replay, err := client.Events.Replay("esub_abc123", "2026-04-10T00:00:00Z", "2026-04-11T00:00:00Z")
Event replay re-delivers events to the subscription's webhook URL. Ensure your webhook handler is idempotent to safely process replayed events.
Scopes required
| Method | Scope |
|---|---|
events.ingest() | events:manage |
events.log() | events:read |
events.listSubscriptions() | events:read |
events.createSubscription() | events:manage |
events.getSubscription() | events:read |
events.updateSubscription() | events:manage |
events.deleteSubscription() | events:manage |
events.replay() | events:manage |