Get /v1/events: show available events
GET /v1/events/{eventId}/seats: show seatmap for specific event
POST /v1/events/{eventId}/seats/reserve: reserve particular seats. Response contains a list of seats which will be reserved.
POST /v1/events/{eventId}/seats/unreserve: cancel reserve particular seats
GET /v1/events/{eventId}/seats/reserved: Check reserved seats for current user. Returns a list of
POST /v1/events/{eventId}/booking: Make a booking with a list of reserved seats. Returns the booking result and a booking id
POST /v1/events/{eventId}/booking/
Describe the overall system architecture. Identify the main components needed to solve the problem end-to-end. Use the diagramming tool to create a block diagram.
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.