Skip to content

Diagram: Join & Rejoin

Canonical doc: ../join-rejoin.md

sequenceDiagram
    autonumber
    participant U as User (Device)
    participant App as iOS App
    participant API as Backend API
    participant STOMP as STOMP
    participant P as Active Participant

    Note over U: User joins an existing call
    U->>API: POST /app/api/call/{callId}/join
    API-->>U: Join OK

    Note over U: Later, user wants to rejoin
    U->>API: POST /app/api/call/{callId}/request-rejoin
    API-->>U: Request accepted

    API->>STOMP: participant_request_rejoin
    STOMP->>P: participant_request_rejoin

    Note over P: Encrypt current AES key for requester (P-256 preferred#59; RSA fallback)
    P->>STOMP: participant_accept_rejoin (encryptedAESKey)
    STOMP->>U: participant_accept_rejoin (encryptedAESKey)

    Note over U: Decrypt AES key and rejoin
    U->>API: POST /app/api/call/{callId}/rejoin
    API-->>U: Rejoin OK

    Note over U,P: Encrypted media resumes (AES-256-GCM)