APIs
Event is the ticketing system of record. Patron, promoter, and GO APIs are BFFs. Stripe moves money. This page groups concerns and points at Event OpenAPI. It is not a route catalog and not a Petstore clone.
Event (eventlinx-api-event)
Cloudflare Worker. OpenAPI: GET /doc (generated from src/routes.ts).
| Host | URL |
|---|---|
| Production | https://api-event.eventlinx.com/doc |
| Staging | https://api-event-staging.eventlinx.com/doc |
| Dev | https://api-event-dev.eventlinx.com/doc |
GET /doc requires the Event service key (X-API-Key). There is no anonymous spec URL on purpose.
Concerns Event owns
| Concern | Behavior |
|---|---|
| Catalog | Events and performances. |
| GA inventory | Quantity remaining. Concurrent updates use SKIP LOCKED. |
| Reserved inventory | seatIds required. No oversell. First RS inventory write locks the seat map. |
| Carts / holds | 12-minute hold. GET cart does not extend TTL. Checkout secret extends 8 minutes. |
| Seat maps | Persist (and sell/hold against the persisted map). Predict is not mounted (501). |
| Checkout | Orchestration of the ticketing side of checkout — not card capture. |
| After-sale records | Scan, redeem, refund, transfer, exchange records. |
For request/response fields, use /doc or the Worker source. Do not copy the spec into Markdown.
Patron BFF (eventlinx-api-patron)
Fronts the patron Vite app.
- Get Tickets, cart, and checkout secret via Event.
$0/ cash viaeventlinx-api-stripe.- Transfers live.
- Exchange HTTP routes exist; the patron UI flag is off. Not a shipped patron product.
Promoter BFF (eventlinx-api-promoter)
Fronts the promoter Vite app.
- Proxies Event for events, tickets, and maps (persist/sell/hold still Event).
- Predict:
POST …/seat-maps/predicton promoter-api →api-seating-detectPOST /upload. Not Event. - Owns promoter org, collaborators, GO users, images, custom domains (these are not Event SoR).
GO BFF (eventlinx-api-go)
Cloudflare Worker BFF for the Expo staff app. Not a Go-language service.
- Scan, POS, cart → Event.
- Cash → Stripe API.
- Terminal PaymentIntent create → Event; completion → Stripe.
- Does not gate reserved POS (the Expo app does, via
isDevEnv). - Blocks exchange into reserved seating.
See GO internals.
Stripe (eventlinx-api-stripe)
Money movement: payments, cash, Terminal completion. Ticketing state after a successful payment still lands on Event.
Authentication (eventlinx-api-authentication)
Identity. UI sessions remain Supabase JWT. See Auth.
Seating detect (api-seating-detect)
POST /upload returns detect JSON. Clients map that JSON into Event’s persist schema. Detect JSON is not the Event persist schema. See Seat maps.
How to navigate contracts
- Read this page for who owns the concern.
- Open Event
GET /docfor Event shapes. - Open the relevant BFF repo for BFF-only routes (org, images, domains, predict proxy).
Do not regenerate a Swagger UI of Event inside this Docusaurus site unless product asks for it later. The live Worker spec is the source of truth.