Events & messaging
Events
One canonical event substrate, transactional outbox-backed, exactly-once materialization.
This page is the documentation contract for the Events surface in Vadyl's final form. It is not a marketing summary: it names the authorities, projections, runtime behavior, examples, limits, errors, and observability expectations that every product implementation must honor.
What this surface owns
- Events owns the canonical product-facing contract described here; provider-specific machinery stays behind capability declarations.
- One canonical event substrate, transactional outbox-backed, exactly-once materialization.
- The final docs treat this as complete: REST, GraphQL, gRPC, SDK, CLI, MCP, dashboard, observability, limits, errors, and explainability are all covered as projections of one authority.
Canonical authorities
| Authority | Role |
|---|---|
IPlatformEventOutbox | Canonical owner for Events; downstream surfaces derive from this rather than inventing their own truth. |
SubscriptionFilterAst | Canonical owner for Events; downstream surfaces derive from this rather than inventing their own truth. |
WebhookEndpoint | Canonical owner for Events; downstream surfaces derive from this rather than inventing their own truth. |
RealtimeSubscription | Canonical owner for Events; downstream surfaces derive from this rather than inventing their own truth. |
Projection coverage
| Surface kinds | EventVocabularySurface, SubscriptionSurface, WebhookSurface, RealtimeSurface |
| Projection facets | Events, Webhooks, ExposureBindings |
| Protocols | Rest, WebSocket, Sse, Webhook, Event, Sdk, Cli, Mcp |
| Public projections | events APIs; realtime WebSocket/SSE; webhooks; GraphQL subscriptions; SDK event streams; CLI events |
Project-scope parity
Publish, install, consume
Consumption evidence
Runtime behavior
- transactional outbox
- event router
- webhook dispatcher
- realtime fanout
- ordered stream helpers
REST and controller surface
Code-backed controllers are listed here so the docs menu does not hide the real endpoint surface. The complete route-by-route table remains in the REST controller atlas.
| Controller | Base route | Endpoint count | Examples |
|---|---|---|---|
| Webhook | /api/webhooks and /api/Webhook | 14 | GET endpointsGET endpoints/{id}POST endpointsPUT endpoints/{id} |
| OperationalResource | /api/OperationalResource | 6 | POST streams/{providerName}/{streamName}/appendPOST streams/{providerName}/{streamName}/consumePOST streams/{streamName}/groups/{consumerGroup}/ackPOST streams/{providerName}/{streamName}/nack |
SDK and CLI surface
| Projection | Namespace / group | Coverage |
|---|---|---|
| SDK | events | emit, list, get, tail, replay, consumer offsets, ordered stream helpers. Rendered methods: 2. |
| SDK | webhooks | endpoint and receiver management, delivery replay, signature helpers, diagnostics. Rendered methods: 6. |
| SDK | realtime | entity and channel subscriptions over WebSocket or SSE. Rendered methods: 4. |
| CLI | vadyl events | Tail / replay / search canonical event log. Rendered commands: 3. |
| CLI | vadyl webhook | Outbound endpoints, inbound receivers, deliveries, replay, secret rotation. Rendered commands: 10. |
Input request and output
GET /api/webhooks and /api/Webhook/endpoints HTTP/1.1
Host: api.vadyl.app
Authorization: Bearer $VADYL_TOKEN
X-Vadyl-Tenant: acme
X-Vadyl-Project: billing
Content-Type: application/json
{
"surface": "events",
"publicationVersion": 412,
"explain": true
}Limits and quotas
Error model
| Error | Meaning |
|---|