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