{ "swagger": "2.0", "info": { "title": "Azure Communication Room Service", "description": "Azure Communication Room Service", "version": "2022-02-01" }, "paths": { "/rooms": { "post": { "tags": [ "Rooms" ], "summary": "Creates a new room.", "operationId": "Rooms_CreateRoom", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "$ref": "#/parameters/ApiVersionParameter" }, { "in": "header", "name": "Repeatability-Request-ID", "description": "If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated, globally unique for all time, identifier for the request. It is recommended to use version 4 (random) UUIDs.", "type": "string", "format": "uuid" }, { "in": "header", "name": "Repeatability-First-Sent", "description": "If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date", "type": "string", "format": "date-time" }, { "in": "body", "name": "createRoomRequest", "description": "The create room request body.", "schema": { "$ref": "#/definitions/CreateRoomRequest" }, "required": true } ], "responses": { "201": { "description": "Request successful. The action returns a new room.", "schema": { "$ref": "#/definitions/RoomModel" } }, "default": { "description": "Error response", "schema": { "$ref": "#/definitions/CommunicationErrorResponse" }, "headers": { "x-ms-error-code": { "x-ms-client-name": "ErrorCode", "type": "string" } } } }, "x-ms-examples": { "Create a new meeting room.": { "$ref": "./examples/Rooms_CreateRoom.json" } } } }, "/rooms/{roomId}": { "get": { "tags": [ "Rooms" ], "summary": "Retrieves an existing room by id.", "operationId": "Rooms_GetRoom", "produces": [ "application/json" ], "parameters": [ { "in": "path", "name": "roomId", "description": "The id of the room requested", "required": true, "type": "string" }, { "$ref": "#/parameters/ApiVersionParameter" } ], "responses": { "200": { "description": "Request successful. The action returns a room.", "schema": { "$ref": "#/definitions/RoomModel" } }, "default": { "description": "Error response", "schema": { "$ref": "#/definitions/CommunicationErrorResponse" }, "headers": { "x-ms-error-code": { "x-ms-client-name": "ErrorCode", "type": "string" } } } }, "x-ms-examples": { "Get meeting room.": { "$ref": "./examples/Rooms_GetRoom.json" } } }, "patch": { "tags": [ "Rooms" ], "summary": "Update a room with given changes.", "operationId": "Rooms_UpdateRoom", "consumes": [ "application/json", "application/merge-patch+json" ], "produces": [ "application/json" ], "parameters": [ { "in": "path", "name": "roomId", "description": "The id of the room requested", "required": true, "type": "string" }, { "$ref": "#/parameters/ApiVersionParameter" }, { "in": "body", "name": "patchRoomRequest", "description": "The patch room request", "schema": { "$ref": "#/definitions/UpdateRoomRequest" } } ], "responses": { "200": { "description": "Request successful. The action returns an updated room.", "schema": { "$ref": "#/definitions/RoomModel" } }, "default": { "description": "Error response", "schema": { "$ref": "#/definitions/CommunicationErrorResponse" }, "headers": { "x-ms-error-code": { "x-ms-client-name": "ErrorCode", "type": "string" } } } }, "x-ms-examples": { "Update meeting room's properties.": { "$ref": "./examples/Rooms_UpdateRoom.json" } } }, "delete": { "tags": [ "Rooms" ], "summary": "Delete a room.", "operationId": "Rooms_DeleteRoom", "produces": [ "application/json" ], "parameters": [ { "in": "path", "name": "roomId", "description": "The id of the room to be deleted", "required": true, "type": "string" }, { "$ref": "#/parameters/ApiVersionParameter" } ], "responses": { "204": { "description": "The room was successfully deleted." }, "default": { "description": "Error response", "schema": { "$ref": "#/definitions/CommunicationErrorResponse" }, "headers": { "x-ms-error-code": { "x-ms-client-name": "ErrorCode", "type": "string" } } } }, "x-ms-examples": { "Delete a meeting room.": { "$ref": "./examples/Rooms_DeleteRoom.json" } } } }, "/rooms/{roomId}/participants": { "get": { "tags": [ "Participants" ], "summary": "Get participants in a room.", "operationId": "Rooms_GetParticipants", "produces": [ "application/json" ], "parameters": [ { "in": "path", "name": "roomId", "description": "The id of the room to get participants from", "required": true, "type": "string" }, { "$ref": "#/parameters/ApiVersionParameter" } ], "responses": { "200": { "description": "Request successful. The action returns the participants of a room.", "schema": { "$ref": "#/definitions/ParticipantsCollection" } }, "default": { "description": "Error response", "schema": { "$ref": "#/definitions/CommunicationErrorResponse" }, "headers": { "x-ms-error-code": { "x-ms-client-name": "ErrorCode", "type": "string" } } } }, "x-ms-examples": { "Get participants": { "$ref": "./examples/Rooms_GetParticipants.json" } } } }, "/rooms/{roomId}/participants:add": { "post": { "tags": [ "Participants" ], "summary": "Adds participants to a room. If participants already exist, no change occurs.", "operationId": "Rooms_AddParticipants", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "in": "path", "name": "roomId", "description": "Room id to add participants.", "required": true, "type": "string" }, { "$ref": "#/parameters/ApiVersionParameter" }, { "in": "body", "name": "addParticipantsRequest", "description": "Participants to be added to the room.", "required": true, "schema": { "$ref": "#/definitions/AddParticipantsRequest" } } ], "responses": { "200": { "description": "The participants were successfully added. The action returns an updated list of participants.", "schema": { "$ref": "#/definitions/ParticipantsCollection" } }, "default": { "description": "Error response", "schema": { "$ref": "#/definitions/CommunicationErrorResponse" }, "headers": { "x-ms-error-code": { "x-ms-client-name": "ErrorCode", "type": "string" } } } }, "x-ms-examples": { "Add participants": { "$ref": "./examples/Rooms_AddParticipants.json" } } } }, "/rooms/{roomId}/participants:update": { "post": { "tags": [ "Participants" ], "summary": "Update participants in a room.", "operationId": "Rooms_UpdateParticipants", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "in": "path", "name": "roomId", "description": "The room id.", "required": true, "type": "string" }, { "$ref": "#/parameters/ApiVersionParameter" }, { "in": "body", "name": "updateParticipantsRequest", "description": "Participants in a room to be updated.", "required": true, "schema": { "$ref": "#/definitions/UpdateParticipantsRequest" } } ], "responses": { "200": { "description": "The participants were successfully updated. The action returns an updated list of participants.", "schema": { "$ref": "#/definitions/ParticipantsCollection" } }, "default": { "description": "Error response", "schema": { "$ref": "#/definitions/CommunicationErrorResponse" }, "headers": { "x-ms-error-code": { "x-ms-client-name": "ErrorCode", "type": "string" } } } }, "x-ms-examples": { "Update participant": { "$ref": "./examples/Rooms_UpdateParticipants.json" } } } }, "/rooms/{roomId}/participants:remove": { "post": { "tags": [ "Participants" ], "summary": "Remove participants from a room.", "operationId": "Rooms_RemoveParticipants", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "in": "path", "name": "roomId", "description": "Room id to remove the participants from.", "required": true, "type": "string" }, { "$ref": "#/parameters/ApiVersionParameter" }, { "in": "body", "name": "removeParticipantsRequest", "description": "Participants in a room to be removed.", "required": true, "schema": { "$ref": "#/definitions/RemoveParticipantsRequest" } } ], "responses": { "200": { "description": "The participants were successfully deleted. The action returns an updated list of participants.", "schema": { "$ref": "#/definitions/ParticipantsCollection" } }, "default": { "description": "Error response", "schema": { "$ref": "#/definitions/CommunicationErrorResponse" }, "headers": { "x-ms-error-code": { "x-ms-client-name": "ErrorCode", "type": "string" } } } }, "x-ms-examples": { "Remove participant": { "$ref": "./examples/Rooms_RemoveParticipants.json" } } } } }, "definitions": { "CommunicationErrorResponse": { "$ref": "../../../Common/stable/2021-03-07/common.json#/definitions/CommunicationErrorResponse" }, "CreateRoomRequest": { "description": "Request payload for creating new room.", "type": "object", "properties": { "validFrom": { "format": "date-time", "description": "The timestamp from when the room is open for joining. The timestamp is in RFC3339 format: `yyyy-MM-ddTHH:mm:ssZ`.", "type": "string", "example": "2021-09-07T07:55:41Z" }, "validUntil": { "format": "date-time", "description": "The timestamp from when the room can no longer be joined. The timestamp is in RFC3339 format: `yyyy-MM-ddTHH:mm:ssZ`.", "type": "string", "example": "2020-09-08T15:55:41Z" }, "roomJoinPolicy": { "$ref": "#/definitions/RoomJoinPolicy" }, "participants": { "description": "(Optional) Collection of participants invited to the room.", "type": "array", "items": { "$ref": "#/definitions/RoomParticipant" }, "x-ms-identifiers": [] } } }, "RoomParticipant": { "description": "A participant of the room.", "required": [ "communicationIdentifier" ], "type": "object", "properties": { "communicationIdentifier": { "$ref": "#/definitions/CommunicationIdentifierModel" }, "role": { "$ref": "#/definitions/RoleType" } } }, "CommunicationIdentifierModel": { "description": "Identifies a participant in Azure Communication services. A participant is, for example, an Azure communication user. This model must be interpreted as a union: Apart from rawId, at most one further property may be set.", "type": "object", "properties": { "rawId": { "description": "Raw id of the identifier. Optional in requests, required in responses.", "type": "string" }, "communicationUser": { "$ref": "#/definitions/CommunicationUserIdentifierModel" } } }, "CommunicationUserIdentifierModel": { "$ref": "../../../Common/stable/2021-03-07/common.json#/definitions/CommunicationUserIdentifierModel" }, "RoleType": { "description": "The Role of a room participant.", "enum": [ "Presenter", "Attendee", "Consumer" ], "type": "string", "x-ms-enum": { "name": "RoleType", "modelAsString": true } }, "RoomJoinPolicy": { "description": "The Policy based on which Participants can join a room.", "enum": [ "InviteOnly", "CommunicationServiceUsers" ], "type": "string", "x-ms-enum": { "name": "RoomJoinPolicy", "modelAsString": true } }, "RoomModel": { "description": "The meeting room.", "type": "object", "properties": { "id": { "description": "Unique identifier of a room. This id is server generated.", "type": "string", "example": "999126454" }, "createdDateTime": { "format": "date-time", "description": "The timestamp when the room was created at the server. The timestamp is in RFC3339 format: `yyyy-MM-ddTHH:mm:ssZ`.", "type": "string", "example": "2021-09-06T05:55:41Z" }, "validFrom": { "format": "date-time", "description": "The timestamp from when the room is open for joining. The timestamp is in RFC3339 format: `yyyy-MM-ddTHH:mm:ssZ`.", "type": "string", "example": "2021-09-07T07:55:41Z" }, "validUntil": { "format": "date-time", "description": "The timestamp from when the room can no longer be joined. The timestamp is in RFC3339 format: `yyyy-MM-ddTHH:mm:ssZ`.", "type": "string", "example": "2021-09-08T15:55:41Z" }, "roomJoinPolicy": { "$ref": "#/definitions/RoomJoinPolicy" }, "participants": { "description": "Collection of room participants.", "type": "array", "items": { "$ref": "#/definitions/RoomParticipant" }, "x-ms-identifiers": [] } } }, "UpdateRoomRequest": { "description": "Request payload for updating a room.", "type": "object", "properties": { "validFrom": { "format": "date-time", "description": "(Optional) The timestamp from when the room is open for joining. The timestamp is in RFC3339 format: `yyyy-MM-ddTHH:mm:ssZ`.", "type": "string", "example": "2021-09-07T07:55:41Z" }, "validUntil": { "format": "date-time", "description": "(Optional) The timestamp from when the room can no longer be joined. The timestamp is in RFC3339 format: `yyyy-MM-ddTHH:mm:ssZ`.", "type": "string", "example": "2020-09-08T15:55:41Z" }, "roomJoinPolicy": { "$ref": "#/definitions/RoomJoinPolicy" }, "participants": { "description": "Collection of room participants.", "type": "array", "items": { "$ref": "#/definitions/RoomParticipant" }, "x-ms-identifiers": [] } } }, "AddParticipantsRequest": { "description": "Participants to be added to the room.", "required": [ "participants" ], "type": "object", "properties": { "participants": { "description": "Participants to add to a room.", "type": "array", "items": { "$ref": "#/definitions/RoomParticipant" }, "x-ms-identifiers": [] } } }, "UpdateParticipantsRequest": { "description": "Participants to be updated in a room.", "required": [ "participants" ], "type": "object", "properties": { "participants": { "description": "Participants to update in a room.", "type": "array", "items": { "$ref": "#/definitions/RoomParticipant" }, "x-ms-identifiers": [] } } }, "RemoveParticipantsRequest": { "description": "Participants to be removed from a room.", "required": [ "participants" ], "type": "object", "properties": { "participants": { "description": "Participants to be removed from a room.", "type": "array", "items": { "$ref": "#/definitions/RoomParticipant" }, "x-ms-identifiers": [] } } }, "ParticipantsCollection": { "description": "Collection of participants in a room.", "required": [ "participants" ], "type": "object", "properties": { "participants": { "description": "Room Participants.", "type": "array", "items": { "$ref": "#/definitions/RoomParticipant" }, "x-ms-identifiers": [] } } } }, "parameters": { "ApiVersionParameter": { "in": "query", "name": "api-version", "description": "Version of API to invoke.", "required": true, "type": "string", "x-ms-parameter-location": "method" }, "Endpoint": { "in": "path", "name": "endpoint", "description": "The endpoint of the Azure Communication resource.", "required": true, "type": "string", "format": "uri", "x-ms-skip-url-encoding": true, "x-ms-parameter-location": "client" } }, "securityDefinitions": { "Authorization": { "type": "apiKey", "name": "Authorization", "in": "header", "description": "An ACS (Azure Communication Services) user access token." } }, "security": [ { "Authorization": [] } ], "x-ms-parameterized-host": { "hostTemplate": "{endpoint}", "useSchemePrefix": false, "parameters": [ { "$ref": "#/parameters/Endpoint" } ] } }