Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
openapi: 3.0.0
info:
title: Vonage Meetings Public API
version: 0.1.5
x-label: Beta
servers:
- url: https://api-eu.vonage.com/beta/meetings
paths:
/rooms:
get:
summary: Get all available rooms
operationId: getRooms
parameters:
- $ref: '#/components/parameters/start_id_parameter'
- $ref: '#/components/parameters/end_id_parameter'
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
page_size:
type: integer
example: 10
description: The number of results returned on this page.
total_items:
type: integer
example: 30
description: The overall number of available rooms.
_embedded:
type: object
properties:
rooms:
type: array
description: List of all accessible rooms
items:
$ref: '#/components/schemas/Room'
_links:
type: object
properties:
first:
type: object
properties:
href:
type: string
example: 'https://api.nexmo.com/v0.1/meetings/rooms?page_size=10'
self:
type: object
properties:
href:
type: string
example: 'https://api.nexmo.com/v0.1/meetings/rooms?page_size=10&start_id=20'
next:
type: object
properties:
href:
type: string
example: 'https://api.nexmo.com/v0.1/meetings/rooms?page_size=10&start_id=30'
prev:
type: object
properties:
href:
type: string
example: 'https://api.nexmo.com/v0.1/meetings/rooms?page_size=10&end_id=20'
post:
summary: Create a room
operationId: createRoom
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRoomDetails'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Room'
'403':
description: Maximum number of rooms for owner exceeded
'/rooms/:room_id':
get:
summary: Get room details
operationId: getRoom
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Room'
'404':
description: Room not found
patch:
summary: Update an existing room
operationId: updateRoom
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
update_details:
type: object
properties:
expires_at:
type: string
format: date
description: The time for when the room will be expired, expressed in ISO 8601 format.
expire_after_use:
type: boolean
description: 'Close the room after a session ends. Only relevant for long_term rooms.'
theme_id:
type: string
format: uuid
description: 'The theme id for the room'
join_approval_level:
$ref: '#/components/schemas/JoinApprovalLevel'
callback_urls:
$ref: '#/components/schemas/CallbackUrls'
available_features:
$ref: '#/components/schemas/AvailableFeatures'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Room'
'400':
description: Bad request
'404':
description: Room not found
'/recordings/:recording_id':
get:
summary: Get a recording
operationId: getRecording
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Recording'
'404':
description: Recording not found
delete:
summary: Delete a recording
operationId: deleteRecording
responses:
'204':
description: No Content
'403':
description: Can only delete recordings in 'uploaded' status
'404':
description: Recording not found
'/sessions/:session_id/recordings':
get:
summary: Get recordings of a session
operationId: getSessionRecordings
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
_embedded:
type: object
properties:
recordings:
type: array
description: List of recordings for the given session
items:
$ref: '#/components/schemas/Recording'
'404':
description: Session not found
/dial-in-numbers:
get:
summary: Get numbers that can be used to dial into a meeting
operationId: getDialInNumbers
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DialInNumber'
/themes:
get:
summary: Get application themes
operationId: getThemes
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Theme'
post:
summary: Create a theme
operationId: createTheme
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateThemeDetails'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Theme'
'409':
description: short_company_url already exist or theme_name already exist in application
'403':
description: exceeded maximum theme limit
/themes/:theme_id:
get:
summary: Get theme by theme id
operationId: getThemeById
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Theme'
'404':
description: Theme not found
delete:
summary: Delete a theme
operationId: deleteTheme
parameters:
- name: force
in: query
description: force delete - delete theme even if theme is used by rooms or as application default theme
schema:
type: boolean
responses:
'204':
description: OK
'400':
description: Theme is used by rooms or application
content:
application/json:
schema:
properties:
status:
type: integer
enum: [400]
name:
type: string
enum: [BadRequestError]
message:
type: string
enum: ['could not delete theme']
errors:
type: array
items:
type: string
'404':
description: Theme not found
patch:
summary: Update theme by id
operationId: updateTheme
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
update_details:
$ref: '#/components/schemas/UpdateThemeDetails'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Theme'
'400':
description: Invalid main_color or Invalid short_company_url or update_details must have at least 1 key
'404':
description: Theme not found
'409':
description: short_company_url already exist or theme_name already exist in application
/themes/:theme_id/finalizeLogos:
put:
summary: Change given logo to be permanent
operationId: finalizeLogosForTheme
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FinalizeThemeLogosRequestBody'
responses:
'200':
description: OK
'400':
description: Logos has invalid property or Keys not found in bucket
content:
application/json:
schema:
properties:
status:
type: integer
enum: [400]
name:
type: string
enum: [BadRequestError]
message:
type: string
enum: ['could not finalize logos']
errors:
type: array
description: each error has logoKey, code and invalidProperty if it is invalid logo property error
items:
type: object
properties:
logoKey:
type: string
code:
type: string
enum: [invalid_logo_properties, key_not_found]
invalidProperty:
type: string
enum: [exceeds_size, type, dimensions, transparent_bg]
'404':
description: Theme not found
/themes/logos-upload-urls:
get:
summary: Get URLs that can be used to upload logos for a theme via a POST
operationId: getUploadUrlsForTheme
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
description: list of S3 presigned URLs
items:
$ref: '#/components/schemas/UploadUrlForTheme'
/themes/:themeId/rooms:
get:
summary: Get rooms that associate with the theme id
operationId: getRoomsByThemeId
parameters:
- $ref: '#/components/parameters/start_id_parameter'
- $ref: '#/components/parameters/end_id_parameter'
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
page_size:
type: integer
example: 10
description: The number of results returned on this page
_embedded:
type: object
properties:
rooms:
type: array
description: List of all accessible rooms
items:
$ref: '#/components/schemas/Room'
_links:
type: object
properties:
first:
type: object
properties:
href:
type: string
example: 'https://api.nexmo.com/v0.1/meetings/rooms?page_size=10'
self:
type: object
properties:
href:
type: string
example: 'https://api.nexmo.com/v0.1/meetings/rooms?page_size=10&start_id=20'
next:
type: object
properties:
href:
type: string
example: 'https://api.nexmo.com/v0.1/meetings/rooms?page_size=10&start_id=30'
prev:
type: object
properties:
href:
type: string
example: 'https://api.nexmo.com/v0.1/meetings/rooms?page_size=10&end_id=20'
'404':
description: Theme not found
/applications:
patch:
summary: Update an existing application
operationId: updateApplication
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateApplicationDetails'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
'400':
description: Bad request
x-webhooks:
meeting-events:
room-expired:
post:
summary: Room Expired Callback
operationId: room-expired
description: 'A notification about a room becoming inactive, which means no more sessions can be created for it'
requestBody:
required: true
content:
application/json:
schema:
properties:
event:
type: string
enum:
- 'room:expired'
room_id:
type: string
format: uuid
room_type:
type: string
enum:
- instant
- long_term
expires_at:
type: string
format: date
description: 'The time for when the room will be expired, expressed in ISO 8601 format'
created_at:
type: string
format: date
description: 'The time for when the room was created, expressed in ISO 8601 format'
responses:
'204':
description: Your server returns this code if it accepts the callback
session-started:
post:
summary: Session Started Callback
operationId: session-started
description: A notification about a newly started session
requestBody:
required: true
content:
application/json:
schema:
properties:
event:
type: string
enum:
- 'session:started'
session_id:
type: string
room_id:
type: string
format: uuid
started_at:
type: string
format: date-time
responses:
'204':
description: Your server returns this code if it accepts the callback
session-ended:
post:
summary: Session Ended Callback
operationId: session-ended
description: A notification about a session that has just ended
requestBody:
required: true
content:
application/json:
schema:
properties:
event:
type: string
enum:
- 'session:ended'
session_id:
type: string
room_id:
type: string
format: uuid
started_at:
type: string
format: date-time
ended_at:
type: string
format: date-time
responses:
'204':
description: Your server returns this code if it accepts the callback
recording-started:
post:
summary: Recording Started Callback
operationId: recording-started
description: A notification about recording being turned on in a specific session
requestBody:
required: true
content:
application/json:
schema:
properties:
event:
type: string
enum:
- 'recording:started'
recording_id:
type: string
format: uuid
session_id:
type: string
responses:
'204':
description: Your server returns this code if it accepts the callback
recording-ended:
post:
summary: Recording Ended Callback
operationId: recording-stopped
description: A notification about recording being turned off in a specific session
requestBody:
required: true
content:
application/json:
schema:
properties:
event:
type: string
enum:
- 'recording:ended'
recording_id:
type: string
format: uuid
session_id:
type: string
started_at:
type: string
format: date-time
ended_at:
type: string
format: date-time
duration:
type: number
description: Duration of the recording in seconds
responses:
'204':
description: Your server returns this code if it accepts the callback
recording-ready:
post:
summary: Recording Ready Callback
operationId: recording-ready
description: A notification about recording ready to be downloaded
requestBody:
required: true
content:
application/json:
schema:
properties:
event:
type: string
enum:
- 'recording:ready'
recording_id:
type: string
format: uuid
session_id:
type: string
room_id:
type: string
format: uuid
started_at:
type: string
format: date-time
ended_at:
type: string
format: date-time
duration:
type: number
description: Duration of the recording in seconds
url:
type: string
format: uri
responses:
'204':
description: Your server returns this code if it accepts the callback
participant-joined:
post:
summary: Participant Joined Callback
operationId: participant-joined
description: A notification about someone joining a specific session
requestBody:
required: true
content:
application/json:
schema:
properties:
event:
type: string
enum:
- 'session:participant:joined'
participant_id:
type: string
format: uuid
session_id:
type: string
room_id:
type: string
format: uuid
name:
type: string
type:
type: string
is_host:
description: indicates if this participant is the session's host
type: boolean
responses:
'204':
description: Your server returns this code if it accepts the callback
participant-left:
post:
summary: Participant Left Callback
operationId: participant-left
description: A notification about someone leaving a specific session
requestBody:
required: true
content:
application/json:
schema:
properties:
event:
type: string
enum:
- 'session:participant:left'
participant_id:
type: string
format: uuid
session_id:
type: string
room_id:
type: string
format: uuid
name:
type: string
type:
type: string
is_host:
description: indicates if this participant is the session's host
type: boolean
responses:
'204':
description: Your server returns this code if it accepts the callback
components:
parameters:
start_id_parameter:
name: start_id
in: query
schema:
type: string
example: 13
required: false
description: The ID to start returning events at
end_id_parameter:
name: end_id
in: query
schema:
type: string
example: 13
required: false
description: The ID to end returning events at (excluding end_id itself)
schemas:
Room:
type: object
properties:
id:
type: string
format: uuid
display_name:
type: string
maxLength: 200
metadata:
maxLength: 500
type: string
description: Free text that can be attached to a room. This will be passed in the form of a header in events related to this room.
type:
type: string
enum:
- instant
- long_term
recording_options:
$ref: '#/components/schemas/RecordingOptions'
meeting_code:
type: string
pattern: ^\d+$
example: '123456789'
minLength: 9
is_available:
type: boolean
description: 'Once a room becomes unavailable, no new sessions can be created under it'
theme_id:
type: string
format: uuid
description: 'The theme id for the room'
created_at:
type: string
format: date
description: 'The time for when the room was created, expressed in ISO 8601 format'
expires_at:
type: string
format: date
description: 'The time for when the room will be expired, expressed in ISO 8601 format'
expire_after_use:
type: boolean
description: 'Close the room after a session ends. Only relevant for long_term rooms.'
join_approval_level:
$ref: '#/components/schemas/JoinApprovalLevel'
callback_urls:
$ref: '#/components/schemas/CallbackUrls'
available_features:
$ref: '#/components/schemas/AvailableFeatures'
_links:
type: object
properties:
guest_url:
type: object
properties:
href:
type: string
example: 'https://meetings.vonage.com/123456789'
host_url:
type: object
properties:
href:
type: string
example: 'https://meetings.vonage.com/123456789?participant_token=xyz'
CreateRoomDetails:
type: object
properties:
display_name:
type: string
maxLength: 200
metadata:
maxLength: 500
type: string
description: Free text that can be attached to a room. This will be passed in the form of a header in events related to this room.
type:
type: string
enum:
- instant
- long_term
description: Represents the type of the room.
expires_at:
type: string
format: date
description: The time for when the room will be expired, expressed in ISO 8601 format. Required only for long-term room creation.
recording_options:
$ref: '#/components/schemas/RecordingOptions'
expire_after_use:
type: boolean
description: 'Close the room after a session ends. Only relevant for long_term rooms.'
theme_id:
type: string
format: uuid
description: 'The theme id for the room'
join_approval_level:
$ref: '#/components/schemas/JoinApprovalLevel'
callback_urls:
$ref: '#/components/schemas/CallbackUrls'
available_features:
$ref: '#/components/schemas/AvailableFeatures'
RecordingOptions:
type: object
properties:
auto_record:
type: boolean
description: Automatically record all sessions in this room. Recording cannot be stopped when this is set to `true`.
record_only_owner:
type: boolean
description: Record only the owner screen or any share screen of the video.
Recording:
type: object
properties:
id:
type: string
format: uuid
session_id:
type: string
example: 2_MX40NjMwODczMn5-MTU3NTgyODEwNzQ2MH5OZDJrVmdBRUNDbG5MUzNqNXgya20yQ1Z-fg
description: Corresponds to the underlying Video API session id
started_at:
type: string
format: date-time
ended_at:
type: string
format: date-time
status:
type: string
enum:
- started
- stopped
- paused
- uploaded
_links:
type: object
properties:
url:
type: object
properties:
href:
type: string
DialInNumber:
type: object
properties:
number:
type: string
example: '17323338801'
locale:
type: string
example: en-US
display_name:
type: string
example: United States
Theme:
type: object
properties:
theme_id:
type: string
format: uuid
theme_name:
type: string
example: 'Theme1'
domain:
type: string
enum: [VCP, VBC]
account_id:
type: string
application_id:
type: string
format: uuid
main_color:
type: string
example: '#12f64e'
short_company_url:
type: string
example: 'short-url'
brand_text:
type: string
example: 'Brand'
brand_image_colored:
type: string
description: Colored logo's key in storage system
brand_image_white:
type: string
description: White logo's key in storage system
branded_favicon:
type: string
description: Favicon's key in storage system
brand_image_colored_url:
type: string
description: Colored logo's link
brand_image_white_url:
type: string
description: White logo's link
branded_favicon_url:
type: string
description: Favicon's link
CreateThemeDetails:
type: object
required:
- main_color
- brand_text
properties:
theme_name:
type: string
maxLength: 200
example: 'Theme1'
main_color:
maxLength: 7
type: string
pattern: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$'
example: '#12f64e'
brand_text:
type: string
maxLength: 200
example: 'Brand'
short_company_url:
type: string
maxLength: 128
pattern: '^(?=.*[a-zA-Z_~-])([a-zA-Z0-9_~-]+)$'
example: 'short-url'
UpdateThemeDetails:
type: object
properties:
theme_name:
type: string
maxLength: 200
example: 'Theme1'
main_color:
maxLength: 7
type: string
pattern: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$'
example: '#12f64e'
brand_text:
type: string
maxLength: 200
example: 'Brand'
short_company_url:
type: string
maxLength: 128
pattern: '^(?=.*[a-zA-Z_~-])([a-zA-Z0-9_~-]+)$'
example: 'short-url'
FinalizeThemeLogosRequestBody:
type: object
properties:
keys:
type: array
description: List of temporary theme's logos to make permanent
example: ['logo-key1', 'logo-key2']
items:
type: object
properties:
key:
type: string
UploadUrlForTheme:
type: object
properties:
url:
type: string
description: Storage system URL
example: 'https://storage-url.com'
fields:
type: object
description: Fields property has to be part of the POST request's body
properties:
Content-Type:
type: string
example: 'image/png'
key:
type: string
example: 'auto-expiring-temp/logos/white/ca63a155-d5f0-4131-9903-c59907e53df0'
description: Logo's key in storage system
logoType:
type: string
enum: [white, colored, favicon]
bucket:
type: string
description: Bucket name to upload to
X-Amz-Algorithm:
type: string
X-Amz-Credential:
type: string
X-Amz-Date:
type: string
X-Amz-Security-Token:
type: string
Policy:
type: string
X-Amz-Signature:
type: string
Application:
type: object
properties:
application_id:
type: string
format: uuid
description: The application id
account_id:
type: string
description: The applications account id
default_theme_id:
type: string
format: uuid
description: The application default theme id
UpdateApplicationDetails:
type: object
properties:
default_theme_id:
type: string
format: uuid
description: The theme id to set as application default theme
JoinApprovalLevel:
type: string
enum:
- none
- after_owner_only
- explicit_approval
description: The level of approval needed to join the meeting in the room. When set to "after_owner_only" the participants will join the meeting only after the host joined. When set to "explicit_approval" the participants will join the waiting room and the host will deny/approve them.
CallbackUrls:
type: object
properties:
rooms_callback_url:
type: string
description: Callback url for rooms events, overrides application level rooms callback url.
pattern: '^https?:\\/\\/.*$'
example: 'https://example.com'
sessions_callback_url:
type: string
description: Callback url for sessions events, overrides application level sessions callback url.
pattern: '^https?:\\/\\/.*$'
example: 'https://example.com'
recordings_callback_url:
type: string
description: Callback url for recordings events, overrides application level recordings callback url.
pattern: '^https?:\\/\\/.*$'
example: 'https://example.com'
AvailableFeatures:
type: object
properties:
is_recording_available:
type: boolean
default: true
description: Determine if recording feature is available in the UI.
example: true
is_chat_available:
type: boolean
default: true
description: Determine if chat feature is available in the UI.
example: true
is_whiteboard_available:
type: boolean
default: true
description: Determine if whiteboard feature is available in the UI.
example: true
tags: []