A service to allow the listing, creation, update and destruction of conferencing bridges and their related meta data. This is an HTTP API.
The following RESTful JSON routes are available for Conferencing API:
Endpoint | GET | POST | PUT | DELETE |
---|---|---|---|---|
/bridges | Y | Y | X | X |
/bridges/:id | Y | X | Y | Y |
/bridges/:bridgeId/participants | Y | Y | X | X |
/bridges/:bridgeId/participants/:id | Y | X | Y | Y |
/sounds | Y | Y | X | X |
/sounds/:id | Y | X | Y | Y |
/participants | Y | Y | X | X |
/participants/:id | Y | X | Y | Y |
/admins | Y | Y | X | X |
/admins/:id | Y | X | Y | Y |
You can do a POST
request to all root level endpoints which will create a record based on the default settings. You will need to make reference of the "profile" id
results so that you can link these to your bridge.
You can re-use the profiles across bridges.
You can do this by creating a bridge with all the required values using a POST
or you can create a bridge using the defaults and change the soundProfile
, participantProfile
and adminProfile
uuids using a PUT
to /bridges/<id-of-bridge>
Any Voxbone DID can be pointed towards a conference bridge. Currently, point your DID to <bridge-identifier>@37.139.25.109
We recommend using Postman Chrome App to communicate with the API
You can send an empty POST
request to /bridges
and it will create a bridge with all our defaults or you can specify the details if you know them
{
"record": boolean,
"moh": boolean,
"waitingBridge": boolean,
"maxParticipants": number,
"pinAuth": boolean,
"pinRetries": number,
"recordNameOnEntry": boolean,
"remoteSipUri": "string" || null,
"bridgePasscode": number,
"active": boolean,
"participantProfileId": "id uuid string of an already setup participant profile" || null,
"adminProfileId": "id uuid string of an already setup admin profile" || null,
"soundProfileId": "id uuid string of an already setup sound profile" || null
}
{
"record": true,
"moh": false,
"waitingBridge": false,
"maxParticipants": 5,
"pinAuth": true,
"pinRetries": 3,
"recordNameOnEntry": true,
"remoteSipUri": null,
"bridgePasscode": 3476,
"active": false,
"participantProfileId": "aa6d96a4-73de-463d-8150-e0ef65bb540b",
"adminProfileId": "eea2346d-8e5f-4a0e-bd09-c9143b99e880",
"soundProfileId": "16bcf6a1-7bf2-4824-ab96-b816353acb86"
}
This will give back the whole bridge object including its id
and createdAt
and updatedAt
records - it will also include the sound, admin and participant profiles in the response.
{
"id": "e3873851-6824-4984-8147-42728a968604",
"remoteSipUri": "PJSIP/1102",
"record": false,
"moh": false,
"waitingBridge": false,
"maxParticipants": 10,
"pinAuth": true,
"bridgePasscode": 3476,
"pinRetries": 3,
"recordNameOnEntry": false,
"active": false,
"createdAt": "2016-07-19T08:51:20.000Z",
"updatedAt": "2016-07-19T08:58:23.000Z",
"soundProfileId": "6068a790-9b98-4170-92aa-3b271eb98743",
"adminProfileId": "25666ff2-d6ba-4841-86d3-717add9bc2f5",
"participantProfileId": "290777eb-884b-4017-8f43-f71016e15fa4",
"soundProfile": {
"id": "6068a790-9b98-4170-92aa-3b271eb98743",
"join": "confbridge-join",
"leave": "confbridge-leave",
"enterPin": "confbridge-pin",
"invalidPin": "conf-invalidpin",
"badPin": "confbridge-pin-bad",
"locked": "confbridge-lock-no-join",
"nowLocked": "confbridge-locked",
"nowUnlocked": "confbridge-unlocked",
"nowMuted": "confbridge-muted",
"nowUnmuted": "confbridge-unmuted",
"kicked": "confbridge-removed",
"recording": "confbridge-now-recording",
"waitForLeader": "confbridge-waitforleader",
"recordNameOnEntry": "priv-recordintro",
"createdAt": "2016-07-19T08:55:12.000Z",
"updatedAt": "2016-07-19T08:55:12.000Z"
},
"adminProfile": {
"id": "25666ff2-d6ba-4841-86d3-717add9bc2f5",
"adminMenuKey": "*1",
"adminPasscode": 1000,
"pinRetries": 3,
"rollcall": "*2",
"toggleMuteAll": "*3",
"toggleLockBridge": "*4",
"getParticipantCount": "*5",
"destroyBridge": "*6",
"createdAt": "2016-07-19T08:55:22.000Z",
"updatedAt": "2016-07-19T08:55:22.000Z"
},
"participantProfile": {
"id": "290777eb-884b-4017-8f43-f71016e15fa4",
"toggleMute": "1",
"toggleDeafMute": "2",
"createdAt": "2016-07-19T08:55:16.000Z",
"updatedAt": "2016-07-19T08:55:16.000Z"
}
}
You can update a bridge by sending a PUT
to /bridges/<id-of-bridge>
. This PUt does not need to contain all of the information about the bridge; only the information you want to update
This means if you just want to change the record
setting on a bridge you can just send the following body to /bridges/<id-of-bridge>
{
"record": false
}
But you can send any of the parameters in the bridge model that you get returned in a GET
on /bridges/<id-of-bridge>
or in the returned body from a POST
on /bridges
You just need to know the model structure to be able to do the same on other models. All of them behave in the same fashion.
{
"id": "16bcf6a1-7bf2-4824-ab96-b816353acb86",
"join": "confbridge-join",
"leave": "confbridge-leave",
"enterPin": "confbridge-pin",
"invalidPin": "conf-invalidpin",
"badPin": "confbridge-pin-bad",
"locked": "confbridge-lock-no-join",
"nowLocked": "confbridge-locked",
"nowUnlocked": "confbridge-unlocked",
"nowMuted": "confbridge-muted",
"nowUnmuted": "confbridge-unmuted",
"kicked": "confbridge-removed",
"recording": "confbridge-now-recording",
"waitForLeader": "confbridge-waitforleader",
"recordNameOnEntry": "priv-recordintro"
}
{
"id": "35f71b44-e872-4522-83e1-7523a212ed04",
"adminMenuKey": "*1",
"adminPasscode": 9876,
"pinRetries": 1,
"rollcall": "*2",
"toggleMuteAll": "*3",
"toggleLockBridge": "*4",
"getParticipantCount": "*5",
"destroyBridge": "*6"
},
{
"id": "12cb2a34-93bd-45b5-8608-6b41d487c318",
"toggleMute": "4",
"toggleDeafMute": "5"
}
{
"id": "14fd1320-9128-4ff2-bdf2-0e7eab271ff9",
"admin": false,
"updatedAt": "2016-08-03T15:21:17.000Z",
"createdAt": "2016-08-03T15:21:17.000Z",
"callerIdName": null,
"callerId": null,
"didCalled": null
}