sequenceDiagram
participant Browser
participant Checkout App
participant Gateway
participant Booking Engine
participant Train Inventory
participant S3
Note over Browser,S3: Provisional Booking
Browser->>Checkout App: Land
Checkout App->>Booking Engine: holdCartProducts() mutation<br>(60s max timeout)
Booking Engine->>Train Inventory: createBooking()<br/>POST /booking
Train Inventory->>S3: POST /booking<br/>(30s timeout)
S3-->>Checkout App: Provisional Booking Created
Checkout App-->>Browser: Render Checkout Form
Note over Browser,S3: Complete Checkout
Browser->>Booking Engine: checkout() mutation<br/>(60s max timeout)
Note over Booking Engine,S3: Critical Booking Mutations
Booking Engine->>Train Inventory: 1. updatePassengers()
Train Inventory->>S3: POST /customer<br/>(30s timeout)
Train Inventory->>S3: PATCH /passengers<br/>(30s timeout)
Booking Engine->>Train Inventory: 2. addPayments()
Train Inventory->>S3: POST /payments<br/>(30s timeout)
Booking Engine->>Train Inventory: 3. completeCheckout()
Train Inventory->>S3: POST /booking/confirm<br/>(30s timeout)
S3-->>Browser: โ
Booking confirmed