NAV Navigation
Shell HTTP JavaScript Node.js Ruby Python Java Go PHP

Zextras Carbonio Workstream Collaboration CE Meeting Api v0.7.1

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Zextras Carbonio Workstream Collaboration CE Meeting HTTP APIs definition.

Base URLs:

Meetings

listMeeting

Code samples

# You can also use wget
curl -X GET http://localhost:10000/meetings \
  -H 'Accept: application/json'

GET /meetings

Retrieves a list of every meeting the user has access to

Example responses

200 Response

[
  {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "name": "string",
    "roomId": "c3631f02-ff67-42b8-8775-18c47f52a678",
    "active": true,
    "participants": [
      {
        "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
        "userType": "moderator",
        "queueId": "string",
        "audioStreamEnabled": true,
        "videoStreamEnabled": true,
        "screenStreamEnabled": true,
        "joinedAt": "2019-08-24T14:15:22Z"
      }
    ],
    "createdAt": "2019-08-24T14:15:22Z",
    "startedAt": "2019-08-24T14:15:22Z",
    "meetingType": "permanent"
  }
]

Responses

Status Meaning Description Schema
200 OK List of every meeting that the user has access to Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [Meeting] false none [Meeting data]
» id string(uuid) false read-only meeting identifier
» name string false none The meeting name
» roomId string(uuid) false read-only room identifier
» active boolean false none Indicates if the meeting is active
» participants [allOf] false none [Meeting participant data]

allOf

Name Type Required Restrictions Description
»» anonymous MeetingUser false none Defines a user in the access list of a meeting
»»» userId string(uuid) false none user identifier
»»» userType MeetingUserType false none none

and

Name Type Required Restrictions Description
»» anonymous object false none none
»»» queueId string false read-only Reference to the user queue of the user
»»» audioStreamEnabled boolean false read-only indicates the audio stream status
»»» videoStreamEnabled boolean false read-only indicates the video stream status
»»» screenStreamEnabled boolean false read-only indicates the screen share stream status
»»» joinedAt string(date-time) false read-only participant joining timestamp

continued

Name Type Required Restrictions Description
» createdAt string(date-time) false read-only entity creation date
» startedAt string(date-time) false read-only meeting starting time
» meetingType MeetingType false none Defines the type of meeting, if permanent it will never be automatically deleted, if scheduled it will be removed after the expiration is passed

Enumerated Values

Property Value
userType moderator
userType registered
meetingType permanent
meetingType scheduled

createMeeting

Code samples

# You can also use wget
curl -X POST http://localhost:10000/meetings \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST /meetings

Creates a new meeting

Body parameter

{
  "name": "string",
  "roomId": "c3631f02-ff67-42b8-8775-18c47f52a678",
  "meetingType": "permanent",
  "expiration": "2019-08-24T14:15:22Z"
}

Parameters

Name In Type Required Description
body body NewMeetingData true Data to create a new meeting

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "roomId": "c3631f02-ff67-42b8-8775-18c47f52a678",
  "active": true,
  "participants": [
    {
      "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
      "userType": "moderator",
      "queueId": "string",
      "audioStreamEnabled": true,
      "videoStreamEnabled": true,
      "screenStreamEnabled": true,
      "joinedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "startedAt": "2019-08-24T14:15:22Z",
  "meetingType": "permanent"
}

Responses

Status Meaning Description Schema
200 OK The meeting just created Meeting

getMeeting

Code samples

# You can also use wget
curl -X GET http://localhost:10000/meetings/{meetingId} \
  -H 'Accept: application/json'

GET /meetings/{meetingId}

Retrieves the requested meeting

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "roomId": "c3631f02-ff67-42b8-8775-18c47f52a678",
  "active": true,
  "participants": [
    {
      "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
      "userType": "moderator",
      "queueId": "string",
      "audioStreamEnabled": true,
      "videoStreamEnabled": true,
      "screenStreamEnabled": true,
      "joinedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "startedAt": "2019-08-24T14:15:22Z",
  "meetingType": "permanent"
}

Responses

Status Meaning Description Schema
200 OK Gets the requested meeting data Meeting
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

deleteMeeting

Code samples

# You can also use wget
curl -X DELETE http://localhost:10000/meetings/{meetingId}

DELETE /meetings/{meetingId}

Deletes the requested meeting

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier

Responses

Status Meaning Description Schema
204 No Content The meeting was deleted successfully None
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

startMeeting

Code samples

# You can also use wget
curl -X POST http://localhost:10000/meetings/{meetingId}/start \
  -H 'Accept: application/json'

POST /meetings/{meetingId}/start

Starts the current meeting

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "roomId": "c3631f02-ff67-42b8-8775-18c47f52a678",
  "active": true,
  "participants": [
    {
      "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
      "userType": "moderator",
      "queueId": "string",
      "audioStreamEnabled": true,
      "videoStreamEnabled": true,
      "screenStreamEnabled": true,
      "joinedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "startedAt": "2019-08-24T14:15:22Z",
  "meetingType": "permanent"
}

Responses

Status Meaning Description Schema
200 OK The meeting was started successfully Meeting
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

stopMeeting

Code samples

# You can also use wget
curl -X POST http://localhost:10000/meetings/{meetingId}/stop \
  -H 'Accept: application/json'

POST /meetings/{meetingId}/stop

Stops the current meeting

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "roomId": "c3631f02-ff67-42b8-8775-18c47f52a678",
  "active": true,
  "participants": [
    {
      "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
      "userType": "moderator",
      "queueId": "string",
      "audioStreamEnabled": true,
      "videoStreamEnabled": true,
      "screenStreamEnabled": true,
      "joinedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "startedAt": "2019-08-24T14:15:22Z",
  "meetingType": "permanent"
}

Responses

Status Meaning Description Schema
200 OK The meeting was stopped successfully Meeting
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

joinMeeting

Code samples

# You can also use wget
curl -X POST http://localhost:10000/meetings/{meetingId}/join \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST /meetings/{meetingId}/join

Adds the current user to the specified meeting

Body parameter

{
  "audioStreamEnabled": false,
  "videoStreamEnabled": false
}

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier
body body JoinSettings true user request containing its streams settings to join a meeting

Example responses

200 Response

{
  "status": "ACCEPTED"
}

Responses

Status Meaning Description Schema
200 OK The result of the join operation for the meeting JoinMeetingResult
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

leaveMeeting

Code samples

# You can also use wget
curl -X POST http://localhost:10000/meetings/{meetingId}/leave

POST /meetings/{meetingId}/leave

Remove the current user to the specified meeting

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier

Responses

Status Meaning Description Schema
204 No Content The user exited the meeting successfully None
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

updateMediaStream

Code samples

# You can also use wget
curl -X PUT http://localhost:10000/meetings/{meetingId}/media \
  -H 'Content-Type: application/json'

PUT /meetings/{meetingId}/media

Update media stream status for the current session

Body parameter

{
  "type": "video",
  "enabled": true,
  "sdp": "string"
}

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier
body body MediaStreamSettings true user request to update a media stream status

Responses

Status Meaning Description Schema
204 No Content The status of media stream changed successfully None
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

answerRtcMediaStream

Code samples

# You can also use wget
curl -X PUT http://localhost:10000/meetings/{meetingId}/media/answer \
  -H 'Content-Type: application/json'

PUT /meetings/{meetingId}/media/answer

Complete WebRTC negotiation for media streams for the current session

Body parameter

{
  "sdp": "string"
}

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier
body body SessionDescriptionProtocol true user request to send a rtc session description related to media stream for WebRTC negotiation

Responses

Status Meaning Description Schema
204 No Content The answer related to the media stream has been processed and sent successfully None
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

updateSubscriptionsMediaStream

Code samples

# You can also use wget
curl -X PUT http://localhost:10000/meetings/{meetingId}/media/subscribe \
  -H 'Content-Type: application/json'

PUT /meetings/{meetingId}/media/subscribe

Update subscriptions of the current session to the desired media streams

Body parameter

{
  "subscribe": [
    {
      "userId": "string",
      "type": "video"
    }
  ],
  "unsubscribe": [
    {
      "userId": "string",
      "type": "video"
    }
  ]
}

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier
body body SubscriptionUpdates true user request to update subscriptions to the desired media stream

Responses

Status Meaning Description Schema
204 No Content The user subscribed to media streams successfully None
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

updateAudioStream

Code samples

# You can also use wget
curl -X PUT http://localhost:10000/meetings/{meetingId}/audio \
  -H 'Content-Type: application/json'

PUT /meetings/{meetingId}/audio

Update audio stream status for a user, a moderator can disable audio for another user

Body parameter

{
  "enabled": true,
  "userToModerate": "string"
}

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier
body body AudioStreamSettings true user request to update a meeting stream status

Responses

Status Meaning Description Schema
204 No Content The status of audio stream changed successfully None
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

offerRtcAudioStream

Code samples

# You can also use wget
curl -X PUT http://localhost:10000/meetings/{meetingId}/audio/offer \
  -H 'Content-Type: application/json'

PUT /meetings/{meetingId}/audio/offer

Start WebRTC negotiation for audio stream for the current session

Body parameter

{
  "sdp": "string"
}

Parameters

Name In Type Required Description
meetingId path string(uuid) true meeting identifier
body body SessionDescriptionProtocol true user request to send a rtc session description related to media stream for WebRTC negotiation

Responses

Status Meaning Description Schema
204 No Content The offer related to the audio stream has been processed and sent successfully None
401 Unauthorized User not authorized None
403 Forbidden The requester could not access the resource None
404 Not Found The requested resource was not found None

Schemas

NewMeetingData

{
  "name": "string",
  "roomId": "c3631f02-ff67-42b8-8775-18c47f52a678",
  "meetingType": "permanent",
  "expiration": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
name string false none none
roomId string(uuid) false none none
meetingType MeetingType false none Defines the type of meeting, if permanent it will never be automatically deleted, if scheduled it will be removed after the expiration is passed
expiration string(date-time) false none This field is only used for scheduled meetings to indicate when the meeting will no more be necessary

JoinMeetingResult

{
  "status": "ACCEPTED"
}

Properties

Name Type Required Restrictions Description
status JoinStatus false none none

Room

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": null,
  "name": "string",
  "description": "string"
}

Room data for a meeting

Properties

Name Type Required Restrictions Description
id string(uuid) false read-only room identifier
type ../chats/chats-api.yamlRoomType false none none
name string false read-only room name
description string false read-only room description

MeetingUser

{
  "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
  "userType": "moderator"
}

Defines a user in the access list of a meeting

Properties

Name Type Required Restrictions Description
userId string(uuid) false none user identifier
userType MeetingUserType false none none

MeetingType

"permanent"

Defines the type of meeting, if permanent it will never be automatically deleted, if scheduled it will be removed after the expiration is passed

Properties

Name Type Required Restrictions Description
anonymous string false none Defines the type of meeting, if permanent it will never be automatically deleted, if scheduled it will be removed after the expiration is passed

Enumerated Values

Property Value
anonymous permanent
anonymous scheduled

MeetingUserType

"moderator"

Properties

Name Type Required Restrictions Description
anonymous string false none none

Enumerated Values

Property Value
anonymous moderator
anonymous registered

JoinStatus

"ACCEPTED"

Properties

Name Type Required Restrictions Description
anonymous string false none none

Enumerated Values

Property Value
anonymous ACCEPTED

Participant

{
  "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
  "userType": "moderator",
  "queueId": "string",
  "audioStreamEnabled": true,
  "videoStreamEnabled": true,
  "screenStreamEnabled": true,
  "joinedAt": "2019-08-24T14:15:22Z"
}

Meeting participant data

Properties

allOf

Name Type Required Restrictions Description
anonymous MeetingUser false none Defines a user in the access list of a meeting

and

Name Type Required Restrictions Description
anonymous object false none none
» queueId string false read-only Reference to the user queue of the user
» audioStreamEnabled boolean false read-only indicates the audio stream status
» videoStreamEnabled boolean false read-only indicates the video stream status
» screenStreamEnabled boolean false read-only indicates the screen share stream status
» joinedAt string(date-time) false read-only participant joining timestamp

Meeting

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "roomId": "c3631f02-ff67-42b8-8775-18c47f52a678",
  "active": true,
  "participants": [
    {
      "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
      "userType": "moderator",
      "queueId": "string",
      "audioStreamEnabled": true,
      "videoStreamEnabled": true,
      "screenStreamEnabled": true,
      "joinedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "startedAt": "2019-08-24T14:15:22Z",
  "meetingType": "permanent"
}

Meeting data

Properties

Name Type Required Restrictions Description
id string(uuid) false read-only meeting identifier
name string false none The meeting name
roomId string(uuid) false read-only room identifier
active boolean false none Indicates if the meeting is active
participants [Participant] false none [Meeting participant data]
createdAt string(date-time) false read-only entity creation date
startedAt string(date-time) false read-only meeting starting time
meetingType MeetingType false none Defines the type of meeting, if permanent it will never be automatically deleted, if scheduled it will be removed after the expiration is passed

JoinSettings

{
  "audioStreamEnabled": false,
  "videoStreamEnabled": false
}

user's streams settings to join a meeting

Properties

Name Type Required Restrictions Description
audioStreamEnabled boolean true none indicates the audio stream status to join the meeting
videoStreamEnabled boolean true none indicates the video stream status to join the meeting

MediaStreamSettings

{
  "type": "video",
  "enabled": true,
  "sdp": "string"
}

settings to apply on user's media stream

Properties

Name Type Required Restrictions Description
type string true none indicates the media stream type
enabled boolean true none indicates the status to change the media stream to
sdp string false none indicates the descriptor of the session

Enumerated Values

Property Value
type video
type screen

AudioStreamSettings

{
  "enabled": true,
  "userToModerate": "string"
}

settings to apply on user's audio stream

Properties

Name Type Required Restrictions Description
enabled boolean true none indicates the status to change the audio stream to
userToModerate string false none optional user to mute if i'm a moderator, only works if enabled is false

SessionDescriptionProtocol

{
  "sdp": "string"
}

contains sdp descriptor needed for a media stream to perform WebRTC negotiation

Properties

Name Type Required Restrictions Description
sdp string true none indicates the descriptor of the session

SubscriptionUpdates

{
  "subscribe": [
    {
      "userId": "string",
      "type": "video"
    }
  ],
  "unsubscribe": [
    {
      "userId": "string",
      "type": "video"
    }
  ]
}

subscriptions updates related to media streams

Properties

Name Type Required Restrictions Description
subscribe [MediaStream] true none indicates the media streams which user wants to subscribe to
unsubscribe [MediaStream] true none indicates the media streams which user wants to unsubscribe to

MediaStream

{
  "userId": "string",
  "type": "video"
}

representation of meeting media stream

Properties

Name Type Required Restrictions Description
userId string true none user identifier which owns the related media stream
type string true none indicates the media stream type

Enumerated Values

Property Value
type video
type screen