Skip to content
On this page

Meeting API

EndpointMethodDescription
meeting:createwebsocketCreate meeting: deprecated
meeting:updatewebsocketUpdate meeting: deprecated
meeting:deletewebsocketDelete meeting: deprecated
meeting:getwebsocketGet meeting: deprecated
meeting:checkPropHasMeetingsOrSocialSessionswebsocketCheck prop has meetings or social sessions
meeting:listUserMeetingCountswebsocketList user meeting counts
meeting:listUserMeetingsInDateRangewebsocketList user meetings in date range
meeting:acceptMeetingRequestwebsocketAccept meeting request
meeting:declineMeetingRequestwebsocketDecline meeting request
meeting:createMeetingwebsocketCreate meeting
meeting:updateMeetingwebsocketUpdate meeting
meeting:deleteMeetingwebsocketDelete meeting
meeting:getMeetingwebsocketGet meeting
meeting:listUserMeetingswebsocketList user meetings
meeting:getTimeSlotsForMeetingwebsocketGet time slots for meeting
meeting:getMeetingTimeSlotsForMonthwebsocketGet meeting time slots for month
meeting:setUserAvailabilitywebsocketSet user availability
meeting:getUserAvailabilityPatternwebsocketGet user availability pattern
meeting:getUserAvailabilityForDaywebsocketGet user availability for day
meeting:getUserAvailabilityForWeekwebsocketGet user availability for week
meeting:getUserAvailabilityForMonthwebsocketGet user availability for month
meeting:meetingUpdatedwebsocketEventOn meeting updated event
meeting:meetingDeletedwebsocketEventOn meeting deleted event
meeting:onMeetingCreatedwebsocketEventOn meeting created event
meeting:onMeetingDeletedwebsocketEventOn meeting deleted event
meeting:onMeetingUpdatedwebsocketEventOn meeting updated event

Create meeting: deprecated

Method: websocket

Endpoint: meeting:create

DEPRECATED

Description: API will create "Meeting" requests to all invited users.

  • All invited users will have "received" status for meeting;

  • By accepting request invited user will receive "accepted" status for meeting;

  • By declining request invited user will receive "declined" status for meeting;

Request:

{
    "data": {
        "meeting": {
            "startDate": timestamp
            "endDate": timestamp
            "subject": string
            "roomId": string
            "propId": string
            "color": { rgba structure }
            "invitedUserIds": [ string ]
        }
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meeting": {
            "id": string
            "created": timestamp
            "updated": timestamp
            "startDate": timestamp
            "endDate": timestamp
            "subject": string
            "roomId": string
            "propId": string
            "color": { rgba structure }
            "isValid": bool  // not valid if room or prop were deleted
            "room": {
                "id": string
                "title": string
                "thumbnail": { resource structure }
            }
            "prop": {
                "id": string
                "title": string
            }
            "organizer": { user simple structure }
            "invitedUsers": [{
                "user": { user simple structure }
                "status": string
            }]
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Update meeting: deprecated

Method: websocket

Endpoint: meeting:update

DEPRECATED

Request:

{
    "data": {
        "meetingId": string
        "meeting": {
            "subject": string
            "roomId": string
            "propId": string
            "color": { rgba structure }
        }
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meeting": {
            "id": string
            "created": timestamp
            "updated": timestamp
            "startDate": timestamp
            "endDate": timestamp
            "subject": string
            "roomId": string
            "propId": string
            "color": { rgba structure }
            "isValid": bool  // not valid if room or prop were deleted
            "room": {
                "id": string
                "title": string
                "thumbnail": { resource structure }
            }
            "prop": {
                "id": string
                "title": string
            }
            "organizer": { user simple structure }
            "invitedUsers": [{
                "user": { user simple structure }
                "status": string
            }]
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Delete meeting: deprecated

Method: websocket

Endpoint: meeting:delete

DEPRECATED

Request:

{
    "data": {
        "meetingId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

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

Get meeting: deprecated

Method: websocket

Endpoint: meeting:get

DEPRECATED

Request:

{
    "data": {
        "meetingId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meeting": {
            "id": string
            "created": timestamp
            "updated": timestamp
            "startDate": timestamp
            "endDate": timestamp
            "subject": string
            "roomId": string
            "propId": string
            "color": { rgba structure }
            "isValid": bool  // not valid if room or prop were deleted
            "room": {
                "id": string
                "title": string
                "thumbnail": { resource structure }
            }
            "prop": {
                "id": string
                "title": string
            }
            "organizer": { user simple structure }
            "invitedUsers": [{
                "user": { user simple structure }
                "status": string
            }]
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Check prop has meetings or social sessions

Method: websocket

Endpoint: meeting:checkPropHasMeetingsOrSocialSessions

DEPRECATED

Description: API returns true if prop has at least one meeting or social session in the future.

Request:

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

Response:

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

List user meeting counts

Method: websocket

Endpoint: meeting:listUserMeetingCounts

Description: API lists counts of meetings per day.

Request:

{
    "data": {
        "localDateNow": timestamp
        "offset": int
        "size": int
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meetingCounts": [{
            "count": int
            "startDate": timestamp
            "endDate": timestamp
        }]
    }
    "error": { "status": bool, "code": int, "message": string }
}

List user meetings in date range

Method: websocket

Endpoint: meeting:listUserMeetingsInDateRange

DEPRECATED

Description: API lists user meetings in provided date range.

Request:

{
    "data": {
        "startDate": timestamp
        "endDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meetings": [{
            "id": string
            "created": timestamp
            "updated": timestamp
            "startDate": timestamp
            "endDate": timestamp
            "subject": string
            "roomId": string
            "propId": string
            "color": { rgba structure }
            "isValid": bool  // not valid if room or prop were deleted
            "room": {
                "id": string
                "title": string
                "thumbnail": { resource structure }
            }
            "prop": {
                "id": string
                "title": string
            }
            "organizer": { user simple structure }
            "invitedUsers": [{
                "user": { user simple structure }
                "status": string
            }]
        }]
    }
    "error": { "status": bool, "code": int, "message": string }
}

Accept meeting request

Method: websocket

Endpoint: meeting:acceptMeetingRequest

Description: API accepts user request for meeting and changes participant status to "accepted".

Request:

{
    "data": {
        "meetingId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

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

Decline meeting request

Method: websocket

Endpoint: meeting:declineMeetingRequest

Description: API declines user request for meeting and changes participant status to "declined".

Request:

{
    "data": {
        "meetingId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

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

Create meeting

Method: websocket

Endpoint: meeting:createMeeting

Description: API creates meeting in a provided location.

API will create "Meeting" requests to all invited users.

  • All invited users will have "received" status for meeting;

  • By accepting request invited user will receive "accepted" status for meeting;

  • By declining request invited user will receive "declined" status for meeting;

Request:

{
    "data": {
        "sourceType": string  // room/prop/group/direct
        "sourceIds": [ string ]  // roomId/roomId+propId/groupId/userId
        "subject": string
        "description": string
        "color": { rgba structure }
        "invitedUserIds": [ string ]
        "startDate": timestamp
        "endDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meeting": {
            "meetingId": string
            "created": timestamp
            "subject": string
            "description": string
            "color": { rgba structure }
            "isValid": bool  // not valid if source was deleted
            "organizerId": string  // user id of the organizer
            "participantIds": [ string ]  // list of user ids of participants, including organizer
            "sourceString": string
            "sourceType": string
            "sourcePk": string
            "networkId": string
            "startDate": timestamp
            "endDate": timestamp
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Update meeting

Method: websocket

Endpoint: meeting:updateMeeting

Request:

{
    "data": {
        "meetingId": string
        "subject": string
        "description": string
        "color": { rgba structure }
        "startDate": timestamp
        "endDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meeting": {
            "meetingId": string
            "created": timestamp
            "subject": string
            "description": string
            "color": { rgba structure }
            "isValid": bool  // not valid if source was deleted
            "organizerId": string  // user id of the organizer
            "participantIds": [ string ]  // list of user ids of participants, including organizer
            "sourceString": string
            "sourceType": string
            "sourcePk": string
            "networkId": string
            "startDate": timestamp
            "endDate": timestamp
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Delete meeting

Method: websocket

Endpoint: meeting:deleteMeeting

Request:

{
    "data": {
        "meetingId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

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

Get meeting

Method: websocket

Endpoint: meeting:getMeeting

Request:

{
    "data": {
        "meetingId": string
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meeting": {
            "meetingId": string
            "created": timestamp
            "subject": string
            "description": string
            "color": { rgba structure }
            "isValid": bool  // not valid if source was deleted
            "organizerId": string  // user id of the organizer
            "participantIds": [ string ]  // list of user ids of participants, including organizer
            "sourceString": string
            "sourceType": string
            "sourcePk": string
            "networkId": string
            "startDate": timestamp
            "endDate": timestamp
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

List user meetings

Method: websocket

Endpoint: meeting:listUserMeetings

Description: API lists user meetings in provided date range.

Request:

{
    "data": {
        "startDate": timestamp
        "endDate": timestamp
        "sourceType": string  // filter meetings by source: network/room/prop/group/direct
        "sourceIds": [ string ]  // networkId/roomId/roomId+propId/groupId/userId
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "meetings": [{
            "userId": string
            "status": string
            "meetingId": string
            "created": timestamp
            "subject": string
            "description": string
            "color": { rgba structure }
            "isValid": bool  // not valid if source was deleted
            "organizerId": string  // user id of the organizer
            "participantIds": [ string ]  // list of user ids of participants, including organizer
            "sourceString": string
            "sourceType": string
            "sourcePk": string
            "networkId": string
            "startDate": timestamp
            "endDate": timestamp
        }]
    }
    "error": { "status": bool, "code": int, "message": string }
}

Get time slots for meeting

Method: websocket

Endpoint: meeting:getTimeSlotsForMeeting

Description: API returns time intervals that are available for all requested users. Each requested user/email should be provided as separate element in array. API will ignore provided user if it is not found in the system.

Request:

{
    "data": {
        "users": [{
            "roomful": string
            "email": string
        }]
        "localDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "availableTimeSlots": [{
            "startDate": timestamp
            "endDate": timestamp
        }]
    }
    "error": { "status": bool, "code": int, "message": string }
}

Get meeting time slots for month

Method: websocket

Endpoint: meeting:getMeetingTimeSlotsForMonth

Description: API returns time intervals that are available for all requested users. Each requested user/email should be provided as separate element in array. API will ignore provided user if it is not found in the system.

Request:

{
    "data": {
        "users": [{
            "roomful": string
            "email": string
        }]
        "localDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "availableTimeSlots": [{
            "startDate": timestamp
            "endDate": timestamp
        }]
    }
    "error": { "status": bool, "code": int, "message": string }
}

Set user availability

Method: websocket

Endpoint: meeting:setUserAvailability

Description: API allows user to set times when he is available / not available to participate in meetings.

  • If repetition parameter is provided, availability will be set as pattern for provided week days.

  • If repetition parameter is not provided, availability will be set for mentioned day explicitly.

Status parameter is represented by one of: "Available" / "NotAvailable".

Repetition parameter is represented by a byte, meaning each bit (starting from right) is a day of the week, starting from Sunday (i.e. 00000101 translates to Sunday and Tuesday).

LocalDate parameter indicates with what date server should work.

Request:

{
    "data": {
        "availability": {
            "status": string
            "dates": [{
                "startDate": timestamp
                "endDate": timestamp
            }]
            "repetition": byte
        }
        "localDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

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

Get user availability pattern

Method: websocket

Endpoint: meeting:getUserAvailabilityPattern

Request:

{
    "data": {
        "localDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "pattern": {
            "availabilities": [{  // list of availabilities for each day of the week
                "status": string
                "dates": [{
                    "startDate": timestamp
                    "endDate": timestamp
                }]
            }]
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Get user availability for day

Method: websocket

Endpoint: meeting:getUserAvailabilityForDay

Request:

{
    "data": {
        "localDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "availability": {
            "status": string
            "dates": [{
                "startDate": timestamp
                "endDate": timestamp
            }]
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Get user availability for week

Method: websocket

Endpoint: meeting:getUserAvailabilityForWeek

Request:

{
    "data": {
        "localDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "availability": {
            "status": string
            "dates": [{
                "startDate": timestamp
                "endDate": timestamp
            }]
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Get user availability for month

Method: websocket

Endpoint: meeting:getUserAvailabilityForMonth

Request:

{
    "data": {
        "localDate": timestamp
    }
    "event": { "id": string, "date": timestamp }
}

Response:

{
    "data": {
        "availability": {
            "status": string
            "dates": [{
                "startDate": timestamp
                "endDate": timestamp
            }]
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

On meeting updated event

Event: meeting:meetingUpdated

DEPRECATED

Data:

{
    "data": {
        "meeting": {
            "id": string
            "created": timestamp
            "updated": timestamp
            "startDate": timestamp
            "endDate": timestamp
            "subject": string
            "roomId": string
            "propId": string
            "color": { rgba structure }
            "isValid": bool  // not valid if room or prop were deleted
            "room": {
                "id": string
                "title": string
                "thumbnail": { resource structure }
            }
            "prop": {
                "id": string
                "title": string
            }
            "organizer": { user simple structure }
            "invitedUsers": [{
                "user": { user simple structure }
                "status": string
            }]
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

On meeting deleted event

Event: meeting:meetingDeleted

DEPRECATED

Data:

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

On meeting created event

Event: meeting:onMeetingCreated

Data:

{
    "data": {
        "meeting": {
            "meetingId": string
            "created": timestamp
            "subject": string
            "description": string
            "color": { rgba structure }
            "isValid": bool  // not valid if source was deleted
            "organizerId": string  // user id of the organizer
            "participantIds": [ string ]  // list of user ids of participants, including organizer
            "sourceString": string
            "sourceType": string
            "sourcePk": string
            "networkId": string
            "startDate": timestamp
            "endDate": timestamp
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

On meeting deleted event

Event: meeting:onMeetingDeleted

Data:

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

On meeting updated event

Event: meeting:onMeetingUpdated

Data:

{
    "data": {
        "meeting": {
            "meetingId": string
            "created": timestamp
            "subject": string
            "description": string
            "color": { rgba structure }
            "isValid": bool  // not valid if source was deleted
            "organizerId": string  // user id of the organizer
            "participantIds": [ string ]  // list of user ids of participants, including organizer
            "sourceString": string
            "sourceType": string
            "sourcePk": string
            "networkId": string
            "startDate": timestamp
            "endDate": timestamp
        }
    }
    "error": { "status": bool, "code": int, "message": string }
}

Models


RGBA

{
    "r": float
    "g": float
    "b": float
    "a": float
}

Resource

{
    "id": string
    "created": timestamp
    "updated": timestamp
    "title": string
    "description": string
    "location": string
    "date": string
    "category": string
    "linkId": string  // id of resource link is pointing to
    "linkType": string  // global/local
    "encryptionVersion": string  // encryption version, like 'verus.v1'
    "encryptionEpoch": int  // epoch defines key bundle that was used for encryption
    "encryptionEpk": string  // ephemeral public key that should be used to decrypt cypher data
    "belonging": string  // determines resource location in the system in a way 'belongingType:belongingPath(networkId)'
    "status": string  // pending/processing/ready/failed
    "metadata": {
        "fileName": string
        "fileSize": int
        "fileDate": timestamp
        "behaviourType": string
        "contentType": string
        "convertedFrom": string
        "link": string
        "origin": { resource origin structure }
        "geolocation": { geolocation structure }
        "dimensions": { dimensions structure }
    }
    "thumbnail": string
    "fromTemplate": bool
    "totalReactions": int  // amount of users who reacted to the resource
    "data": {
        "audio": { resource data audio structure }
        "video": { resource data video structure }
        "amazon": { resource data amazon structure }
        "imdb": { resource data imdb structure }
        "youtube": { resource data youtube structure }
        "pinterest": { resource data pinterest structure }
        "pixabay": { resource data pixabay structure }
        "facebook": { resource data facebook structure }
        "remoteUrl": { resource data remote url structure }
        "liveStream": { live stream data structure }
        "aiGeneration": { ai generation data structure }
        "thumbnailUrl": string
        "downloadUrl": string
        "directory": { resource data directory structure }
        "channel": { channel data structure }
        "googleDrive": { google drive structure }
    }
    "customParams": map[string]{ custom structure }  // client defined parameters
    "actions": [{ programmatic action with children structure }]  // custom programmatic actions from users
}

Resource Origin

{
    "type": string
    "device": string
    "deviceName": string
    "path": string
}

Geolocation

{
    "latitude": float
    "longitude": float
}

Dimensions

{
    "width": int
    "height": int
    "orientation": int
}

Resource Data Audio

{
    "title": string
    "artist": string
    "album": string
    "genre": string
    "duration": int
    "durationFloat": float
}

Resource Data Video

{
    "duration": int
    "durationFloat": float
    "hasAlphaChannel": bool  // true, if video generated from gif with transparent pixels
    "alphaChannel": string  // alpha channel video resource (if generated from gif)
}

Resource Data Amazon

{
    "asin": string
    "summary": string
    "author": [ string ]
    "manufacturer": string
    "title": string
    "publicationDate": string
    "url": string
}

Resource Data Imdb

{
    "Actors": string
    "Genre": string
    "Ratings": [{
        "Source": string
        "Value": string
    }]
    "Released": string
    "Runtime": string
    "Website": string
    "Year": string
    "Trailers": [ string ]
    "imdbID": string
}

Resource Data Youtube

{
    "videoId": string
    "formatId": string
}

Resource Data Pinterest

{
    "pin": string
    "url": string
}

Resource Data Pixabay

{
    "id": string
    "pageUrl": string
}

Resource Data Facebook

{
    "id": string
}

Resource Data Remote Url

{
    "url": string
    "urlType": string
    "favicon": string
    "title": string
}

Live Stream Data

{
    "streamId": string
    "assetId": string
    "playbackUrl": string
    "masterUrl": string
}

AI Generation Data

{
    "generationModel": string  // the model used for image generation [dall-e-3]
    "prompt": string  // a text description of the desired image
    "revisedPrompt": string  // the prompt that was used to generate the image, if there was any revision to the prompt
    "url": string  // the URL of the generated image
}

Resource Data Directory

{
    "innerContentType": string
    "innerContentCount": int
}

Channel Data

{
    "communityId": string
    "channelId": string
    "subChannelId": string
    "messageId": string
}

Google Drive

{
    "fileId": string
    "name": string
    "mimeType": string
}

Programmatic Action with children

{
    "localId": string  // local action id, operated by client side only
    "eventName": string
    "actionName": string
    "actionData": {
        "usedPropId": string
        "usedRoomId": string
        "usedNetworkId": string
        "usedStorylineId": string
        "usedQuestionId": int
        "usedQuestionnaireId": int
        "usedSegmentId": string
        "usedPlacementAreaId": string
        "usedRoomPoint": string
        "animationData": map[string]{ custom structure }
    }
    "childActions": [{ programmatic action structure }]
}

Programmatic Action

{
    "localId": string  // local action id, operated by client side only
    "eventName": string
    "actionName": string
    "actionData": {
        "usedPropId": string
        "usedRoomId": string
        "usedNetworkId": string
        "usedStorylineId": string
        "usedQuestionId": int
        "usedQuestionnaireId": int
        "usedSegmentId": string
        "usedPlacementAreaId": string
        "usedRoomPoint": string
        "animationData": map[string]{ custom structure }
    }
}

User Simple

{
    "id": string
    "firstName": string
    "lastName": string
    "privacyMode": int  // 0 - Default, 1 - Incognito
    "avatar": string
    "avatar3D": {  // field is not returned if empty
        "assetId": string
        "assetSkins": map[string]string  // map of selected skins per variants
        "avatarUrl": string  // url to gbl file (Ready Player Me)
        "avatarUserId": string  // user id for session recovery (Ready Player Me)
    }
    "companyName": string  // name of company that user represents
    "companyTitle": string  // user title in the company
}