Meeting API
| Endpoint | Method | Description |
|---|---|---|
| /api/v0/resource/meetingInvitation/{meetingId} | webRequest | Get ICS file for meeting invitation |
| /api/v0/resource/meetingSeriesInvitation/{seriesId} | webRequest | Get ICS file for meeting series invitation |
| /api/v0/resource/meetingSeriesOccurrenceInvitation/{seriesId}/{originalStartDate} | webRequest | Get ICS file for meeting series occurrence invitation |
| websocket | Create meeting: deprecated | |
| websocket | Update meeting: deprecated | |
| websocket | Delete meeting: deprecated | |
| websocket | Get meeting: deprecated | |
| websocket | Check prop has meetings or social sessions | |
| websocket | List user meeting counts | |
| websocket | List user meetings in date range | |
| meeting:getMeetingSeriesOccurrence | websocket | Get meeting series occurrence |
| meeting:updateMeetingSeriesOccurrence | websocket | Update meeting series occurrence |
| meeting:cancelMeetingSeriesOccurrence | websocket | Cancel meeting series occurrence |
| meeting:deleteMeetingSeriesOccurrence | websocket | Delete meeting series occurrence |
| meeting:acceptMeetingRequest | websocket | Accept meeting request |
| meeting:declineMeetingRequest | websocket | Decline meeting request |
| meeting:createMeeting | websocket | Create meeting |
| meeting:createMeetingSeries | websocket | Create meeting series |
| meeting:updateMeeting | websocket | Update meeting |
| meeting:updateMeetingSeries | websocket | Update meeting series |
| meeting:deleteMeeting | websocket | Delete meeting |
| meeting:deleteMeetingSeries | websocket | Delete meeting series |
| meeting:getMeeting | websocket | Get meeting |
| meeting:listUserMeetings | websocket | List user meetings |
| meeting:listMeetingOccurrences | websocket | List meeting occurrences |
| 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:onMeetingSeriesCreated | websocketEvent | On meeting series created event |
| meeting:onMeetingDeleted | websocketEvent | On meeting deleted event |
| meeting:onMeetingSeriesDeleted | websocketEvent | On meeting series deleted event |
| meeting:onMeetingUpdated | websocketEvent | On meeting updated event |
| meeting:onMeetingSeriesUpdated | websocketEvent | On meeting series updated event |
| meeting:onMeetingSeriesOccurrenceUpdated | websocketEvent | On meeting series occurrence updated event |
Get ICS file for meeting invitation
HTTP Method: GET
Path: /api/v0/resource/meetingInvitation/
Request:
{ empty }
Response:
ICS file
Get ICS file for meeting series invitation
HTTP Method: GET
Path: /api/v0/resource/meetingSeriesInvitation/
Request:
{ empty }
Response:
ICS file
Get ICS file for meeting series occurrence invitation
HTTP Method: GET
Path: /api/v0/resource/meetingSeriesOccurrenceInvitation/{seriesId}/
Parameters:
originalStartDate: Unix timestamp of the occurrence start date
Request:
{ empty }
Response:
ICS file
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
DEPRECATED
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 }
}
Get meeting series occurrence
Method: websocket
Endpoint: meeting:getMeetingSeriesOccurrence
Description: API returns a single occurrence of a recurring meeting series. The occurrence is identified by seriesId + originalStartDate (the rrule-generated start date). If the occurrence was overridden, the returned data reflects the override (or its cancelled state).
Request:
{
"data": {
"seriesId": string
"originalStartDate": timestamp // rrule-generated start date that identifies the occurrence
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"meeting": {
"userId": string
"status": string
"meetingId": string
"startDate": timestamp
"endDate": timestamp
"seriesId": string // id of recurring meeting series
"rrule": string // recurrence rule in RFC 5545 format
"dtstart": string // start date of the first occurrence in RFC 5545 format
"duration": int // duration of each meeting occurrence in seconds
"seriesStartDate": timestamp // start date of the first meeting in the series (UTC)
"seriesEndDate": timestamp // date when series should end, max value, if not set (UTC)
"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
"originalStartDate": timestamp // original rrule-generated start date; identifies the occurrence within the series for override operations
"isCancelled": bool // true when this occurrence was individually cancelled; the occurrence is still returned so the client can display and restore it
}
}
"error": { "status": bool, "code": int, "message": string }
}
Update meeting series occurrence
Method: websocket
Endpoint: meeting:updateMeetingSeriesOccurrence
Description: API updates a single occurrence of a recurring meeting series without affecting other occurrences. The occurrence is identified by seriesId + originalStartDate (the rrule-generated start date). Provide updated subject, description, color, and optionally new start/end dates.
Request:
{
"data": {
"seriesId": string
"originalStartDate": timestamp // rrule-generated start date that identifies the occurrence
"subject": string
"description": string
"color": { rgba structure }
"startDate": timestamp
"endDate": timestamp
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"seriesId": string
"originalStartDate": timestamp
"override": { // null means the override was removed and the occurrence reverts to series defaults
"seriesId": string
"originalStartDate": timestamp // rrule-generated start date that identifies this occurrence
"isCancelled": bool // if true, this occurrence is cancelled
"subject": string
"description": string
"color": { rgba structure }
"startDate": timestamp // overridden start date; zero means use series-generated date
"endDate": timestamp // overridden end date; zero means use series-generated date
}
}
"error": { "status": bool, "code": int, "message": string }
}
Cancel meeting series occurrence
Method: websocket
Endpoint: meeting:cancelMeetingSeriesOccurrence
Description: API cancels a single occurrence of a recurring meeting series without affecting other occurrences. The occurrence is identified by seriesId + originalStartDate (the rrule-generated start date).
Request:
{
"data": {
"seriesId": string
"originalStartDate": timestamp // rrule-generated start date that identifies the occurrence
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"error": { "status": bool, "code": int, "message": string }
}
Delete meeting series occurrence
Method: websocket
Endpoint: meeting:deleteMeetingSeriesOccurrence
Description: API removes the override for a single occurrence, restoring it to default series behavior.
Request:
{
"data": {
"seriesId": string
"originalStartDate": timestamp // rrule-generated start date that identifies the occurrence
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"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
"startDate": timestamp
"endDate": timestamp
"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
}
}
"error": { "status": bool, "code": int, "message": string }
}
Create meeting series
Method: websocket
Endpoint: meeting:createMeetingSeries
Description: API creates meeting series in a provided location.
API will create "MeetingSeries" 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 ]
"rrule": string // recurrence rule in RFC 5545 format
"dtstart": string // start date of the first occurrence in RFC 5545 format
"duration": int // duration of each meeting occurrence in seconds
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"meeting": {
"seriesId": string // id of recurring meeting series
"rrule": string // recurrence rule in RFC 5545 format
"dtstart": string // start date of the first occurrence in RFC 5545 format
"duration": int // duration of each meeting occurrence in seconds
"seriesStartDate": timestamp // start date of the first meeting in the series (UTC)
"seriesEndDate": timestamp // date when series should end, max value, if not set (UTC)
"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
}
}
"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
"startDate": timestamp
"endDate": timestamp
"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
}
}
"error": { "status": bool, "code": int, "message": string }
}
Update meeting series
Method: websocket
Endpoint: meeting:updateMeetingSeries
Request:
{
"data": {
"seriesId": string
"subject": string
"description": string
"color": { rgba structure }
"rrule": string // recurrence rule in RFC 5545 format
"dtstart": string // start date of the first occurrence in RFC 5545 format
"duration": int // duration of each meeting occurrence in seconds
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"meeting": {
"seriesId": string // id of recurring meeting series
"rrule": string // recurrence rule in RFC 5545 format
"dtstart": string // start date of the first occurrence in RFC 5545 format
"duration": int // duration of each meeting occurrence in seconds
"seriesStartDate": timestamp // start date of the first meeting in the series (UTC)
"seriesEndDate": timestamp // date when series should end, max value, if not set (UTC)
"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
}
}
"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 }
}
Delete meeting series
Method: websocket
Endpoint: meeting:deleteMeetingSeries
Request:
{
"data": {
"seriesId": 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
"startDate": timestamp
"endDate": timestamp
"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
}
}
"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
"startDate": timestamp
"endDate": timestamp
"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
}]
}
"error": { "status": bool, "code": int, "message": string }
}
List meeting occurrences
Method: websocket
Endpoint: meeting:listMeetingOccurrences
Description: API lists meeting occurrences (single meetings and meeting series occurrences) 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
"startDate": timestamp
"endDate": timestamp
"seriesId": string // id of recurring meeting series
"rrule": string // recurrence rule in RFC 5545 format
"dtstart": string // start date of the first occurrence in RFC 5545 format
"duration": int // duration of each meeting occurrence in seconds
"seriesStartDate": timestamp // start date of the first meeting in the series (UTC)
"seriesEndDate": timestamp // date when series should end, max value, if not set (UTC)
"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
"originalStartDate": timestamp // original rrule-generated start date; identifies the occurrence within the series for override operations
"isCancelled": bool // true when this occurrence was individually cancelled; the occurrence is still returned so the client can display and restore it
}]
}
"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
"startDate": timestamp
"endDate": timestamp
"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
}
}
"error": { "status": bool, "code": int, "message": string }
}
On meeting series created event
Event: meeting:onMeetingSeriesCreated
Data:
{
"data": {
"meeting": {
"seriesId": string // id of recurring meeting series
"rrule": string // recurrence rule in RFC 5545 format
"dtstart": string // start date of the first occurrence in RFC 5545 format
"duration": int // duration of each meeting occurrence in seconds
"seriesStartDate": timestamp // start date of the first meeting in the series (UTC)
"seriesEndDate": timestamp // date when series should end, max value, if not set (UTC)
"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
}
}
"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 series deleted event
Event: meeting:onMeetingSeriesDeleted
Data:
{
"data": {
"seriesId": string
}
"error": { "status": bool, "code": int, "message": string }
}
On meeting updated event
Event: meeting:onMeetingUpdated
Data:
{
"data": {
"meeting": {
"meetingId": string
"startDate": timestamp
"endDate": timestamp
"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
}
}
"error": { "status": bool, "code": int, "message": string }
}
On meeting series updated event
Event: meeting:onMeetingSeriesUpdated
Data:
{
"data": {
"meeting": {
"seriesId": string // id of recurring meeting series
"rrule": string // recurrence rule in RFC 5545 format
"dtstart": string // start date of the first occurrence in RFC 5545 format
"duration": int // duration of each meeting occurrence in seconds
"seriesStartDate": timestamp // start date of the first meeting in the series (UTC)
"seriesEndDate": timestamp // date when series should end, max value, if not set (UTC)
"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
}
}
"error": { "status": bool, "code": int, "message": string }
}
On meeting series occurrence updated event
Event: meeting:onMeetingSeriesOccurrenceUpdated
Description: override.isCancelled=true when the occurrence is cancelled. override.isCancelled=false when the occurrence details were modified. override is null when the occurrence override was deleted (occurrence reverts to series defaults).
Data:
{
"data": {
"seriesId": string
"originalStartDate": timestamp
"override": { // null means the override was removed and the occurrence reverts to series defaults
"seriesId": string
"originalStartDate": timestamp // rrule-generated start date that identifies this occurrence
"isCancelled": bool // if true, this occurrence is cancelled
"subject": string
"description": string
"color": { rgba structure }
"startDate": timestamp // overridden start date; zero means use series-generated date
"endDate": timestamp // overridden end date; zero means use series-generated date
}
}
"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
"userId": string // user id of resource author
"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 }
"vimeo": { resource data vimeo 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 }
"googleDrive": { google drive structure }
"channel": { channel data structure }
"enrichment": { enrichment data 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 Vimeo
{
"videoUrl": 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
"createdAt": int
}
AI Generation Data
{
"generationModel": string // the model used for image generation [gpt-image-2, gpt-image-1.5, gpt-image-1, gpt-image-1-mini]; defaults to gpt-image-2
"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
}
Google Drive
{
"fileId": string
"name": string
"mimeType": string
}
Channel Data
{
"communityId": string
"channelId": string
"subChannelId": string
"messageId": string
}
Enrichment Data
{
"categories": [ string ]
"enrichedAt": timestamp
"enrichmentStatus": string
"language": string
"qualityScore": int
"tags": [ 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
"avatarResourceId": string // resource id (in case of avatar uploaded to user3DAvatar belonging)
"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
}