Skip to content

Process Flow

Sequence of Events
1. IDIM Phone applications (IOS and Android) requests to start video session
- Send requests to IDIM Video API for room creation
2. IDIM Video API uses EntraID OAuth2 to request authorization token
3. IDIM Video API uses bearer token to send a post request to the /room/create endpoint with a query parameter of hex encoded data
4. Request goes to Azure API Management Gateway. OAuth is verified and requests are forwarded to Azure Function App.
1. Azure Function App pops a queue item from an Azure Storage Queue containing an available room name
2. Azure Function App processes the query param sent from IDIM Video API and turns it into a URL
3. Azure Function App sends a request to Pexip Management API (Azure VM) to update the room tag with the URL
4. Azure Function App returns the room object to IDIM Video API
5. Azure Function App sends a new room POST to the Pexip Management API
6. Azure Function App adds a new queue item on the room-creation-queue
5. IDIM Video API sends room name and room pin to IDIM Phone App
6. IDIM phone app uses Pexip SDK to call Pexip Conference Node (Azure VM)
7. When video session has ended IDIM Video API sends DELETE request to /room/{room_name}
8. fa-maxconf-prod uses room name and calls Pexip Management API to get room id
9. fa-maxconf-prod sends through DELETE request to Pexip Management API
Diagram
sequenceDiagram
    participant IDIM_Phone_App as "IDIM Phone App (IOS and Android)"
    participant IDIM_Video_API as "IDIM Video API"
    participant Maximus_Entra as "Maximus OAuth2"
    participant Maximus_API as "Maximus API"
    participant Maximus_SDK as "Azure Function App"
    participant Maximus_Queue as "VMR Pool"
    participant Pexip_Management_API as "Pexip API"
    participant Pexip_Conference_Node as "Pexip Conference Node"

    IDIM_Phone_App->>IDIM_Video_API: Request to start video session
    IDIM_Video_API->>Maximus_Entra: Request authorization token
    Maximus_Entra-->>IDIM_Video_API: Authorization token
    IDIM_Video_API->>Maximus_API: POST /room/create
    Maximus_API->>Maximus_SDK: Process request
    Maximus_SDK->>Maximus_Queue: Get Available Room
    Maximus_Queue->>Maximus_SDK: Room object
    Maximus_SDK->>Pexip_Management_API: Update room tag with URL
    Maximus_SDK-->>IDIM_Video_API: Room object
    Maximus_SDK->>Pexip_Management_API: POST new room
    Maximus_SDK->>Maximus_Queue: Add new queue item
    IDIM_Video_API-->>IDIM_Phone_App: Room name and room pin
    IDIM_Phone_App->>Pexip_Conference_Node: Call Pexip Conference Node
    IDIM_Video_API->>Maximus_API: DELETE /room/{room_name}
    Maximus_API->>Maximus_SDK: Process request
    Maximus_SDK->>Pexip_Management_API: Get room ID
    Maximus_SDK->>Pexip_Management_API: DELETE /room/{room_id}
Diagram Code
sequenceDiagram
participant IDIM_Phone_App as "IDIM Phone App (IOS and Android)"
participant IDIM_Video_API as "IDIM Video API"
participant Maximus_Entra as "Maximus OAuth2"
participant Maximus_API as "Maximus API"
participant Maximus_SDK as "Azure Function App"
participant Maximus_Queue as "VMR Pool"
participant Pexip_Management_API as "Pexip API"
participant Pexip_Conference_Node as "Pexip Conference Node"
IDIM_Phone_App->>IDIM_Video_API: Request to start video session
IDIM_Video_API->>Maximus_Entra: Request authorization token
Maximus_Entra-->>IDIM_Video_API: Authorization token
IDIM_Video_API->>Maximus_API: POST /room/create
Maximus_API->>Maximus_SDK: Process request
Maximus_SDK->>Maximus_Queue: Get Available Room
Maximus_Queue->>Maximus_SDK: Room object
Maximus_SDK->>Pexip_Management_API: Update room tag with URL
Maximus_SDK-->>IDIM_Video_API: Room object
Maximus_SDK->>Pexip_Management_API: POST new room
Maximus_SDK->>Maximus_Queue: Add new queue item
IDIM_Video_API-->>IDIM_Phone_App: Room name and room pin
IDIM_Phone_App->>Pexip_Conference_Node: Call Pexip Conference Node
IDIM_Video_API->>Maximus_API: DELETE /room/{room_name}
Maximus_API->>Maximus_SDK: Process request
Maximus_SDK->>Pexip_Management_API: Get room ID
Maximus_SDK->>Pexip_Management_API: DELETE /room/{room_id}