Webhooks
Olympus Cloud emits events through GCP Pub/Sub internally. For external integrations, events can be forwarded via webhook subscriptions.
Event Types
Events are organized by domain:
| Event | Description |
|---|---|
order.created | New order placed |
order.updated | Order status changed |
order.completed | Order fulfilled |
order.cancelled | Order cancelled |
payment.captured | Payment successfully charged |
payment.refunded | Payment refunded |
payment.failed | Payment attempt failed |
reservation.created | New reservation made |
reservation.updated | Reservation modified |
reservation.cancelled | Reservation cancelled |
inventory.low_stock | Item stock below threshold |
kds.ticket.bumped | Kitchen ticket completed |
table.status_changed | Table status updated |
Webhook Payload Format
All webhook payloads follow this structure:
{
"id": "evt-uuid",
"type": "order.created",
"tenant_id": "550e8400-e29b-41d4-a716-446655449100",
"location_id": "550e8400-e29b-41d4-a716-446655449110",
"timestamp": "2026-02-19T15:30:00Z",
"data": {
...
}
}
The data field contains the full resource object (e.g., the complete order for order.created).
Stripe Webhook
The Stripe webhook endpoint is publicly accessible but verified via Stripe signature.
POST /v1/webhooks/stripe
This endpoint receives Stripe webhook events (payment confirmations, refunds, disputes, etc.). It is signature-verified using the Stripe webhook secret.
WebSocket Events
For real-time event streaming (e.g., KDS updates, order status changes), use the WebSocket connection:
GET /v1/ws (requires JWT)
WebSocket events follow the same event type naming convention as webhooks. See the WebSocket Events API reference for subscription details.
Integration Pattern
For integrating external systems with Olympus Cloud events:
- Real-time (internal): Subscribe directly to Pub/Sub topics within GCP
- Real-time (client): Connect via WebSocket at
/v1/ws - Batch/external: Configure webhook subscriptions through the platform settings