PlatformXeDocs
Get API Key

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.

SDKInstallNamespace
TypeScriptnpm install @caldera/platformxe-sdkclient.events
Pythonpip install platformxeclient.events
Gogo get github.com/calderax/platformxe-goclient.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

MethodScope
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