Skip to main content

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:

EventDescription
order.createdNew order placed
order.updatedOrder status changed
order.completedOrder fulfilled
order.cancelledOrder cancelled
payment.capturedPayment successfully charged
payment.refundedPayment refunded
payment.failedPayment attempt failed
reservation.createdNew reservation made
reservation.updatedReservation modified
reservation.cancelledReservation cancelled
inventory.low_stockItem stock below threshold
kds.ticket.bumpedKitchen ticket completed
table.status_changedTable 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

Public API

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:

  1. Real-time (internal): Subscribe directly to Pub/Sub topics within GCP
  2. Real-time (client): Connect via WebSocket at /v1/ws
  3. Batch/external: Configure webhook subscriptions through the platform settings