Skip to content
On this page

Presentation API

API is used to synchronize presentation between conference participants.

EndpointMethodDescription
videochat:sync:presentationStartedwebsocketPresentation started
videochat:sync:presentationStoppedwebsocketPresentation stopped
presentation:updateStatePropertieswebsocketUpdate presentation state properties
presentation:getStatewebsocketGet presentation state
videochat:sync:requestLastSyncEventwebsocketPresentation request last sync event
videochat:sync:propClickedwebsocketPresentation prop clicked
videochat:sync:backButtonClickedwebsocketPresentation back button clicked
videochat:sync:propClickedDetailedViewwebsocketPresentation prop clicked detailed view
videochat:sync:backButtonClickedDetailedViewwebsocketPresentation back button clicked detailed view
videochat:sync:propWebViewClickedwebsocketPresentation prop web view clicked
videochat:sync:propActionStartedwebsocketPresentation prop action started
videochat:sync:propVideoStartedwebsocketPresentation prop video started
videochat:sync:propVideoPausedwebsocketPresentation prop video paused
videochat:sync:propVideoContinuedwebsocketPresentation prop video continued
videochat:sync:propResourceClickedwebsocketPresentation prop resource clicked
videochat:sync:resourceOpenedwebsocketPresentation resource opened
videochat:sync:resourceClosedwebsocketPresentation resource closed
videochat:sync:resourcePageChangedwebsocketPresentation resource page changed
videochat:sync:pdfTextSelectedwebsocketPresentation pdf text selected
videochat:sync:storylineLoadedwebsocketPresentation storyline loaded
videochat:sync:storylineExitedwebsocketPresentation storyline exited
videochat:sync:storylineStartedwebsocketPresentation storyline started
videochat:sync:storylinePausedwebsocketPresentation storyline paused
videochat:sync:storylineMovedToElementwebsocketPresentation storyline moved to element
videochat:sync:roomChangedwebsocketPresentation room changed
videochat:sync:cameraPositionSetwebsocketPresentation camera position set
videochat:sync:propCameraPositionSetwebsocketPresentation prop camera position set
videochat:sync:pointerPositionSetwebsocketPresentation pointer position set
videochat:sync:routeChangedwebsocketPresentation route changed
videochat:sync:presentationActionwebsocketPresentation action
videochat:sync:presentationStartedwebsocketEventPresentation started event
videochat:sync:presentationStoppedwebsocketEventPresentation stopped event
presentation:statePropertiesUpdatedwebsocketEventPresentation state properties updated event
videochat:sync:propClickedwebsocketEventPresentation prop clicked event
videochat:sync:backButtonClickedwebsocketEventPresentation back button clicked event
videochat:sync:propClickedDetailedViewwebsocketEventPresentation prop clicked detailed view event
videochat:sync:backButtonClickedDetailedViewwebsocketEventPresentation back button clicked detailed view event
videochat:sync:propWebViewClickedwebsocketEventPresentation prop web view clicked event
videochat:sync:propActionStartedwebsocketEventPresentation prop action started event
videochat:sync:propVideoStartedwebsocketEventPresentation prop video started event
videochat:sync:propVideoPausedwebsocketEventPresentation prop video paused event
videochat:sync:propVideoContinuedwebsocketEventPresentation prop video continued event
videochat:sync:propResourceClickedwebsocketEventPresentation prop resource clicked event
videochat:sync:resourceOpenedwebsocketEventPresentation resource opened event
videochat:sync:resourceClosedwebsocketEventPresentation resource closed event
videochat:sync:resourcePageChangedwebsocketEventPresentation resource page changed event
videochat:sync:pdfTextSelectedwebsocketEventPresentation pdf text selected event
videochat:sync:storylineLoadedwebsocketEventPresentation storyline loaded event
videochat:sync:storylineExitedwebsocketEventPresentation storyline exited event
videochat:sync:storylineStartedwebsocketEventPresentation storyline started event
videochat:sync:storylinePausedwebsocketEventPresentation storyline paused event
videochat:sync:storylineMovedToElementwebsocketEventPresentation storyline moved to element event
videochat:sync:roomChangedwebsocketEventPresentation room changed event
videochat:sync:cameraPositionSetwebsocketEventPresentation camera position set event
videochat:sync:propCameraPositionSetwebsocketEventPresentation prop camera position set event
videochat:sync:pointerPositionSetwebsocketEventPresentation pointer position set event
videochat:sync:routeChangedwebsocketEventPresentation route changed event
videochat:sync:presentationActionwebsocketEventPresentation action event

Presentation started

Method: websocket

Endpoint: videochat:sync:presentationStarted

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "serverTime": timestamp  // current server time in UTC timezone
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation stopped

Method: websocket

Endpoint: videochat:sync:presentationStopped

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Update presentation state properties

Method: websocket

Endpoint: presentation:updateStateProperties

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "updateStateProperties": map[string]{ custom structure }
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Get presentation state

Method: websocket

Endpoint: presentation:getState

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "presenterId": string
        "state": map[string]{ custom structure }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation request last sync event

Method: websocket

Endpoint: videochat:sync:requestLastSyncEvent

Description: Request last synchronization event. If event exists, its data will be sent to socket. If event doesn't exist, nothing happens.

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop clicked

Method: websocket

Endpoint: videochat:sync:propClicked

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propViewContext": {
            "propId": string
            "resourceId": string
            "resourceIndex": int
            "innerPropIndex": int
            "focusPointIndex": int
        }
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation back button clicked

Method: websocket

Endpoint: videochat:sync:backButtonClicked

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop clicked detailed view

Method: websocket

Endpoint: videochat:sync:propClickedDetailedView

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation back button clicked detailed view

Method: websocket

Endpoint: videochat:sync:backButtonClickedDetailedView

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop web view clicked

Method: websocket

Endpoint: videochat:sync:propWebViewClicked

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop action started

Method: websocket

Endpoint: videochat:sync:propActionStarted

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "triggerName": string
        "triggerValue": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop video started

Method: websocket

Endpoint: videochat:sync:propVideoStarted

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop video paused

Method: websocket

Endpoint: videochat:sync:propVideoPaused

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop video continued

Method: websocket

Endpoint: videochat:sync:propVideoContinued

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop resource clicked

Method: websocket

Endpoint: videochat:sync:propResourceClicked

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation resource opened

Method: websocket

Endpoint: videochat:sync:resourceOpened

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation resource closed

Method: websocket

Endpoint: videochat:sync:resourceClosed

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation resource page changed

Method: websocket

Endpoint: videochat:sync:resourcePageChanged

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
        "page": int
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation pdf text selected

Method: websocket

Endpoint: videochat:sync:pdfTextSelected

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
        "page": int
        "anchorNodeIndex": int
        "focusNodeIndex": int
        "startRangeOffset": int
        "endRangeOffset": int
        "length": int
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline loaded

Method: websocket

Endpoint: videochat:sync:storylineLoaded

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline exited

Method: websocket

Endpoint: videochat:sync:storylineExited

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline started

Method: websocket

Endpoint: videochat:sync:storylineStarted

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
        "storylineElement": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline paused

Method: websocket

Endpoint: videochat:sync:storylinePaused

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
        "storylineElement": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline moved to element

Method: websocket

Endpoint: videochat:sync:storylineMovedToElement

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
        "storylineElement": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation room changed

Method: websocket

Endpoint: videochat:sync:roomChanged

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation camera position set

Method: websocket

Endpoint: videochat:sync:cameraPositionSet

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "cameraSettings": {
            "position": { xyz structure }
            "rotation": { xyz structure }
        }
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop camera position set

Method: websocket

Endpoint: videochat:sync:propCameraPositionSet

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "cameraSettings": {
            "position": { xyz structure }
            "rotation": { xyz structure }
        }
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation pointer position set

Method: websocket

Endpoint: videochat:sync:pointerPositionSet

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "pointer": {
            "positions": [{ xyz structure }]
            "timings": [ timestamp ]
            "isPointerOn": bool
        }
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation route changed

Method: websocket

Endpoint: videochat:sync:routeChanged

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "route": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation action

Method: websocket

Endpoint: videochat:sync:presentationAction

Request:

{
    "data": {
        "videochatId": string
        "roomId": string
        "route": string
        "action": string
        "data": map[string]{ custom structure }
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation started event

Event: videochat:sync:presentationStarted

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "presenterId": string
        "serverTime": timestamp  // current server time in UTC timezone
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation stopped event

Event: videochat:sync:presentationStopped

Data:

{
    "error": { "status": bool, "code": int, "message": string }
}

Presentation state properties updated event

Event: presentation:statePropertiesUpdated

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "presenterId": string
        "updatedStateProperties": map[string]{ custom structure }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop clicked event

Event: videochat:sync:propClicked

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propViewContext": {
            "propId": string
            "resourceId": string
            "resourceIndex": int
            "innerPropIndex": int
            "focusPointIndex": int
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation back button clicked event

Event: videochat:sync:backButtonClicked

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop clicked detailed view event

Event: videochat:sync:propClickedDetailedView

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation back button clicked detailed view event

Event: videochat:sync:backButtonClickedDetailedView

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop web view clicked event

Event: videochat:sync:propWebViewClicked

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop action started event

Event: videochat:sync:propActionStarted

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "triggerName": string
        "triggerValue": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop video started event

Event: videochat:sync:propVideoStarted

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop video paused event

Event: videochat:sync:propVideoPaused

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop video continued event

Event: videochat:sync:propVideoContinued

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop resource clicked event

Event: videochat:sync:propResourceClicked

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation resource opened event

Event: videochat:sync:resourceOpened

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation resource closed event

Event: videochat:sync:resourceClosed

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation resource page changed event

Event: videochat:sync:resourcePageChanged

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
        "page": int
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation pdf text selected event

Event: videochat:sync:pdfTextSelected

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "resourceId": string
        "page": int
        "anchorNodeIndex": int
        "focusNodeIndex": int
        "startRangeOffset": int
        "endRangeOffset": int
        "length": int
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline loaded event

Event: videochat:sync:storylineLoaded

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline exited event

Event: videochat:sync:storylineExited

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline started event

Event: videochat:sync:storylineStarted

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
        "storylineElement": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline paused event

Event: videochat:sync:storylinePaused

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
        "storylineElement": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation storyline moved to element event

Event: videochat:sync:storylineMovedToElement

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "storylineId": string
        "storylineElement": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation room changed event

Event: videochat:sync:roomChanged

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation camera position set event

Event: videochat:sync:cameraPositionSet

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "cameraSettings": {
            "position": { xyz structure }
            "rotation": { xyz structure }
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation prop camera position set event

Event: videochat:sync:propCameraPositionSet

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "propId": string
        "cameraSettings": {
            "position": { xyz structure }
            "rotation": { xyz structure }
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation pointer position set event

Event: videochat:sync:pointerPositionSet

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "pointer": {
            "positions": [{ xyz structure }]
            "timings": [ timestamp ]
            "isPointerOn": bool
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation route changed event

Event: videochat:sync:routeChanged

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "route": string
    }
    "error": { "status": bool, "code": int, "message": string }
}

Presentation action event

Event: videochat:sync:presentationAction

Data:

{
    "data": {
        "videochatId": string
        "roomId": string
        "route": string
        "action": string
        "data": map[string]{ custom structure }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Models


XYZ

{
    "x": float
    "y": float
    "z": float
}