Meeting API
| Endpoint | Method | Description |
|---|---|---|
| websocket | Create meeting: deprecated | |
| websocket | Update meeting: deprecated | |
| websocket | Delete meeting: deprecated | |
| websocket | Get meeting: deprecated | |
| websocket | Check prop has meetings or social sessions | |
| meeting:listUserMeetingCounts | websocket | List user meeting counts |
| websocket | List user meetings in date range | |
| meeting:acceptMeetingRequest | websocket | Accept meeting request |
| meeting:declineMeetingRequest | websocket | Decline meeting request |
| meeting:createMeeting | websocket | Create meeting |
| meeting:updateMeeting | websocket | Update meeting |
| meeting:deleteMeeting | websocket | Delete meeting |
| meeting:getMeeting | websocket | Get meeting |
| meeting:listUserMeetings | websocket | List user meetings |
| meeting:getTimeSlotsForMeeting | websocket | Get time slots for meeting |
| meeting:getMeetingTimeSlotsForMonth | websocket | Get meeting time slots for month |
| meeting:setUserAvailability | websocket | Set user availability |
| meeting:getUserAvailabilityPattern | websocket | Get user availability pattern |
| meeting:getUserAvailabilityForDay | websocket | Get user availability for day |
| meeting:getUserAvailabilityForWeek | websocket | Get user availability for week |
| meeting:getUserAvailabilityForMonth | websocket | Get user availability for month |
| websocketEvent | On meeting updated event | |
| websocketEvent | On meeting deleted event | |
| meeting:onMeetingCreated | websocketEvent | On meeting created event |
| meeting:onMeetingDeleted | websocketEvent | On meeting deleted event |
| meeting:onMeetingUpdated | websocketEvent | On 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
}