mirror of
https://github.com/nextcloud/spreed.git
synced 2025-07-21 10:37:10 +00:00
2426 lines
108 KiB
JSON
2426 lines
108 KiB
JSON
{
|
|
"openapi": "3.0.3",
|
|
"info": {
|
|
"title": "spreed-backend-sipbridge",
|
|
"version": "0.0.1",
|
|
"description": "Chat, video & audio-conferencing using WebRTC",
|
|
"license": {
|
|
"name": "agpl"
|
|
}
|
|
},
|
|
"components": {
|
|
"securitySchemes": {
|
|
"basic_auth": {
|
|
"type": "http",
|
|
"scheme": "basic"
|
|
},
|
|
"bearer_auth": {
|
|
"type": "http",
|
|
"scheme": "bearer"
|
|
}
|
|
},
|
|
"schemas": {
|
|
"BaseMessage": {
|
|
"type": "object",
|
|
"required": [
|
|
"actorDisplayName",
|
|
"actorId",
|
|
"actorType",
|
|
"expirationTimestamp",
|
|
"message",
|
|
"messageParameters",
|
|
"messageType",
|
|
"systemMessage"
|
|
],
|
|
"properties": {
|
|
"actorDisplayName": {
|
|
"type": "string"
|
|
},
|
|
"actorId": {
|
|
"type": "string"
|
|
},
|
|
"actorType": {
|
|
"type": "string"
|
|
},
|
|
"expirationTimestamp": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"messageParameters": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/RichObjectParameter"
|
|
}
|
|
},
|
|
"messageType": {
|
|
"type": "string"
|
|
},
|
|
"systemMessage": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Capabilities": {
|
|
"type": "object",
|
|
"required": [
|
|
"features",
|
|
"features-local",
|
|
"config",
|
|
"config-local",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"features": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"minItems": 1
|
|
},
|
|
"features-local": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"minItems": 1
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"required": [
|
|
"attachments",
|
|
"call",
|
|
"chat",
|
|
"conversations",
|
|
"federation",
|
|
"previews",
|
|
"signaling",
|
|
"experiments"
|
|
],
|
|
"properties": {
|
|
"attachments": {
|
|
"type": "object",
|
|
"required": [
|
|
"allowed"
|
|
],
|
|
"properties": {
|
|
"allowed": {
|
|
"type": "boolean"
|
|
},
|
|
"folder": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"call": {
|
|
"type": "object",
|
|
"required": [
|
|
"enabled",
|
|
"breakout-rooms",
|
|
"recording",
|
|
"recording-consent",
|
|
"supported-reactions",
|
|
"predefined-backgrounds",
|
|
"predefined-backgrounds-v2",
|
|
"can-upload-background",
|
|
"sip-enabled",
|
|
"sip-dialout-enabled",
|
|
"can-enable-sip",
|
|
"start-without-media",
|
|
"max-duration",
|
|
"blur-virtual-background",
|
|
"end-to-end-encryption"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"breakout-rooms": {
|
|
"type": "boolean"
|
|
},
|
|
"recording": {
|
|
"type": "boolean"
|
|
},
|
|
"recording-consent": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"supported-reactions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"predefined-backgrounds": {
|
|
"type": "array",
|
|
"description": "List of file names relative to the spreed/img/backgrounds/ web path, e.g. `2_home.jpg`",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"predefined-backgrounds-v2": {
|
|
"type": "array",
|
|
"description": "List of file paths relative to the server web root with leading slash, e.g. `/apps/spreed/img/backgrounds/2_home.jpg`",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"can-upload-background": {
|
|
"type": "boolean"
|
|
},
|
|
"sip-enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"sip-dialout-enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"can-enable-sip": {
|
|
"type": "boolean"
|
|
},
|
|
"start-without-media": {
|
|
"type": "boolean"
|
|
},
|
|
"max-duration": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"blur-virtual-background": {
|
|
"type": "boolean"
|
|
},
|
|
"end-to-end-encryption": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"chat": {
|
|
"type": "object",
|
|
"required": [
|
|
"max-length",
|
|
"read-privacy",
|
|
"has-translation-providers",
|
|
"has-translation-task-providers",
|
|
"typing-privacy",
|
|
"summary-threshold"
|
|
],
|
|
"properties": {
|
|
"max-length": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"read-privacy": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"has-translation-providers": {
|
|
"type": "boolean"
|
|
},
|
|
"has-translation-task-providers": {
|
|
"type": "boolean"
|
|
},
|
|
"typing-privacy": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"summary-threshold": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 1
|
|
}
|
|
}
|
|
},
|
|
"conversations": {
|
|
"type": "object",
|
|
"required": [
|
|
"can-create",
|
|
"force-passwords",
|
|
"list-style",
|
|
"description-length",
|
|
"retention-event",
|
|
"retention-phone",
|
|
"retention-instant-meetings"
|
|
],
|
|
"properties": {
|
|
"can-create": {
|
|
"type": "boolean"
|
|
},
|
|
"force-passwords": {
|
|
"type": "boolean"
|
|
},
|
|
"list-style": {
|
|
"type": "string",
|
|
"enum": [
|
|
"two-lines",
|
|
"compact"
|
|
]
|
|
},
|
|
"description-length": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 1
|
|
},
|
|
"retention-event": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
},
|
|
"retention-phone": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
},
|
|
"retention-instant-meetings": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"federation": {
|
|
"type": "object",
|
|
"required": [
|
|
"enabled",
|
|
"incoming-enabled",
|
|
"outgoing-enabled",
|
|
"only-trusted-servers"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"incoming-enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"outgoing-enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"only-trusted-servers": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"previews": {
|
|
"type": "object",
|
|
"required": [
|
|
"max-gif-size"
|
|
],
|
|
"properties": {
|
|
"max-gif-size": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
},
|
|
"signaling": {
|
|
"type": "object",
|
|
"required": [
|
|
"session-ping-limit"
|
|
],
|
|
"properties": {
|
|
"session-ping-limit": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"hello-v2-token-key": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"experiments": {
|
|
"type": "object",
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"config-local": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"minItems": 1
|
|
}
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ChatMessage": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/BaseMessage"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"isReplyable",
|
|
"markdown",
|
|
"reactions",
|
|
"referenceId",
|
|
"timestamp",
|
|
"token"
|
|
],
|
|
"properties": {
|
|
"deleted": {
|
|
"type": "boolean",
|
|
"enum": [
|
|
true
|
|
]
|
|
},
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"isReplyable": {
|
|
"type": "boolean"
|
|
},
|
|
"markdown": {
|
|
"type": "boolean"
|
|
},
|
|
"reactions": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"reactionsSelf": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"referenceId": {
|
|
"type": "string"
|
|
},
|
|
"timestamp": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"token": {
|
|
"type": "string"
|
|
},
|
|
"lastEditActorDisplayName": {
|
|
"type": "string"
|
|
},
|
|
"lastEditActorId": {
|
|
"type": "string"
|
|
},
|
|
"lastEditActorType": {
|
|
"type": "string"
|
|
},
|
|
"lastEditTimestamp": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"silent": {
|
|
"type": "boolean"
|
|
},
|
|
"threadId": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"isThread": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ChatProxyMessage": {
|
|
"$ref": "#/components/schemas/BaseMessage"
|
|
},
|
|
"OCSMeta": {
|
|
"type": "object",
|
|
"required": [
|
|
"status",
|
|
"statuscode"
|
|
],
|
|
"properties": {
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"statuscode": {
|
|
"type": "integer"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"totalitems": {
|
|
"type": "string"
|
|
},
|
|
"itemsperpage": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"PublicCapabilities": {
|
|
"type": "object",
|
|
"properties": {
|
|
"spreed": {
|
|
"$ref": "#/components/schemas/Capabilities"
|
|
}
|
|
}
|
|
},
|
|
"RichObjectParameter": {
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"id",
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"server": {
|
|
"type": "string"
|
|
},
|
|
"link": {
|
|
"type": "string"
|
|
},
|
|
"call-type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"one2one",
|
|
"group",
|
|
"public"
|
|
]
|
|
},
|
|
"icon-url": {
|
|
"type": "string"
|
|
},
|
|
"message-id": {
|
|
"type": "string"
|
|
},
|
|
"boardname": {
|
|
"type": "string"
|
|
},
|
|
"stackname": {
|
|
"type": "string"
|
|
},
|
|
"size": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"mimetype": {
|
|
"type": "string"
|
|
},
|
|
"preview-available": {
|
|
"type": "string",
|
|
"enum": [
|
|
"yes",
|
|
"no"
|
|
]
|
|
},
|
|
"hide-download": {
|
|
"type": "string",
|
|
"enum": [
|
|
"yes",
|
|
"no"
|
|
]
|
|
},
|
|
"mtime": {
|
|
"type": "string"
|
|
},
|
|
"latitude": {
|
|
"type": "string"
|
|
},
|
|
"longitude": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"thumb": {
|
|
"type": "string"
|
|
},
|
|
"website": {
|
|
"type": "string"
|
|
},
|
|
"visibility": {
|
|
"type": "string",
|
|
"enum": [
|
|
"0",
|
|
"1"
|
|
]
|
|
},
|
|
"assignable": {
|
|
"type": "string",
|
|
"enum": [
|
|
"0",
|
|
"1"
|
|
]
|
|
},
|
|
"conversation": {
|
|
"type": "string"
|
|
},
|
|
"etag": {
|
|
"type": "string"
|
|
},
|
|
"permissions": {
|
|
"type": "string"
|
|
},
|
|
"width": {
|
|
"type": "string"
|
|
},
|
|
"height": {
|
|
"type": "string"
|
|
},
|
|
"blurhash": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Room": {
|
|
"type": "object",
|
|
"required": [
|
|
"actorId",
|
|
"actorType",
|
|
"attendeeId",
|
|
"attendeePermissions",
|
|
"attendeePin",
|
|
"avatarVersion",
|
|
"breakoutRoomMode",
|
|
"breakoutRoomStatus",
|
|
"callFlag",
|
|
"callPermissions",
|
|
"callRecording",
|
|
"callStartTime",
|
|
"canDeleteConversation",
|
|
"canEnableSIP",
|
|
"canLeaveConversation",
|
|
"canStartCall",
|
|
"defaultPermissions",
|
|
"description",
|
|
"displayName",
|
|
"hasCall",
|
|
"hasPassword",
|
|
"id",
|
|
"isCustomAvatar",
|
|
"isFavorite",
|
|
"lastActivity",
|
|
"lastCommonReadMessage",
|
|
"lastPing",
|
|
"lastReadMessage",
|
|
"listable",
|
|
"lobbyState",
|
|
"lobbyTimer",
|
|
"mentionPermissions",
|
|
"messageExpiration",
|
|
"name",
|
|
"notificationCalls",
|
|
"notificationLevel",
|
|
"objectId",
|
|
"objectType",
|
|
"participantFlags",
|
|
"participantType",
|
|
"permissions",
|
|
"readOnly",
|
|
"recordingConsent",
|
|
"sessionId",
|
|
"sipEnabled",
|
|
"token",
|
|
"type",
|
|
"unreadMention",
|
|
"unreadMentionDirect",
|
|
"unreadMessages",
|
|
"isArchived",
|
|
"isImportant",
|
|
"isSensitive"
|
|
],
|
|
"properties": {
|
|
"actorId": {
|
|
"type": "string",
|
|
"description": "The unique identifier for the given actor type"
|
|
},
|
|
"invitedActorId": {
|
|
"type": "string",
|
|
"description": "The cloud id of the invited user"
|
|
},
|
|
"actorType": {
|
|
"type": "string",
|
|
"description": "Actor type of the current user (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-types))"
|
|
},
|
|
"attendeeId": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Unique attendee id"
|
|
},
|
|
"attendeePermissions": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Dedicated permissions for the current participant, if not `Custom` this are not the resulting permissions (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-permissions))"
|
|
},
|
|
"attendeePin": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Unique dial-in authentication code for this user, when the conversation has SIP enabled (see `sipEnabled` attribute)"
|
|
},
|
|
"avatarVersion": {
|
|
"type": "string",
|
|
"description": "Version of conversation avatar used to easier expiration of the avatar in case a moderator updates it, since the avatar endpoint should be cached for 24 hours. (only available with `avatar` capability)"
|
|
},
|
|
"breakoutRoomMode": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Breakout room configuration mode (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#breakout-room-modes)) (only available with `breakout-rooms-v1` capability)"
|
|
},
|
|
"breakoutRoomStatus": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Breakout room status (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#breakout-room-status)) (only available with `breakout-rooms-v1` capability)"
|
|
},
|
|
"callFlag": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Combined flag of all participants in the current call (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-in-call-flag), only available with `conversation-call-flags` capability)"
|
|
},
|
|
"callPermissions": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Call permissions, if not `Custom` this are not the resulting permissions, if set they will reset after the end of the call (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-permissions))"
|
|
},
|
|
"callRecording": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"enum": [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"description": "Type of call recording (see [Constants - Call recording status](https://nextcloud-talk.readthedocs.io/en/latest/constants#call-recording-status)) (only available with `recording-v1` capability)"
|
|
},
|
|
"callStartTime": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Timestamp when the call was started (only available with `recording-v1` capability)"
|
|
},
|
|
"canDeleteConversation": {
|
|
"type": "boolean",
|
|
"description": "Flag if the user can delete the conversation for everyone (not possible without moderator permissions or in one-to-one conversations)"
|
|
},
|
|
"canEnableSIP": {
|
|
"type": "boolean",
|
|
"description": "Whether the given user can enable SIP for this conversation. Note that when the token is not-numeric only, SIP can not be enabled even if the user is permitted and a moderator of the conversation"
|
|
},
|
|
"canLeaveConversation": {
|
|
"type": "boolean",
|
|
"description": "Flag if the user can leave the conversation (not possible for the last user with moderator permissions)"
|
|
},
|
|
"canStartCall": {
|
|
"type": "boolean",
|
|
"description": "Flag if the user can start a new call in this conversation (joining is always possible) (only available with `start-call-flag` capability)"
|
|
},
|
|
"defaultPermissions": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Default permissions for new participants (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-permissions))"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Description of the conversation (can also be empty) (only available with `room-description` capability)"
|
|
},
|
|
"displayName": {
|
|
"type": "string",
|
|
"description": "`name` if non-empty, otherwise it falls back to a list of participants"
|
|
},
|
|
"hasCall": {
|
|
"type": "boolean",
|
|
"description": "Flag if the conversation has an active call"
|
|
},
|
|
"hasPassword": {
|
|
"type": "boolean",
|
|
"description": "Flag if the conversation has a password"
|
|
},
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Numeric identifier of the conversation"
|
|
},
|
|
"isCustomAvatar": {
|
|
"type": "boolean",
|
|
"description": "Flag if the conversation has a custom avatar (only available with `avatar` capability)"
|
|
},
|
|
"isFavorite": {
|
|
"type": "boolean",
|
|
"description": "Flag if the conversation is favorited by the user"
|
|
},
|
|
"lastActivity": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Timestamp of the last activity in the conversation, in seconds and UTC time zone"
|
|
},
|
|
"lastCommonReadMessage": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "ID of the last message read by every user that has read privacy set to public in a room. When the user themself has it set to private the value is `0` (only available with `chat-read-status` capability)"
|
|
},
|
|
"lastMessage": {
|
|
"$ref": "#/components/schemas/RoomLastMessage",
|
|
"description": "Last message in a conversation if available, otherwise empty. **Note:** Even when given the message will not contain the `parent` or `reactionsSelf` attribute due to performance reasons"
|
|
},
|
|
"lastPing": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Timestamp of the user's session making the request"
|
|
},
|
|
"lastReadMessage": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "ID of the last read message in a room (only available with `chat-read-marker` capability)"
|
|
},
|
|
"listable": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Listable scope for the room (only available with `listable-rooms` capability)"
|
|
},
|
|
"lobbyState": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Webinar lobby restriction (0-1), if the participant is a moderator they can always join the conversation (only available with `webinary-lobby` capability) (See [Webinar lobby states](https://nextcloud-talk.readthedocs.io/en/latest/constants#webinar-lobby-states))"
|
|
},
|
|
"lobbyTimer": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Timestamp when the lobby will be automatically disabled (only available with `webinary-lobby` capability)"
|
|
},
|
|
"mentionPermissions": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"enum": [
|
|
0,
|
|
1
|
|
],
|
|
"description": "Whether all participants can mention using `@all` or only moderators (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#mention-permissions)) (only available with `mention-permissions` capability)"
|
|
},
|
|
"messageExpiration": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "The message expiration time in seconds in this chat. Zero if disabled. (only available with `message-expiration` capability)"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Name of the conversation (can also be empty)"
|
|
},
|
|
"notificationCalls": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"notificationLevel": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "The notification level for the user (See [Participant notification levels](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-notification-levels))"
|
|
},
|
|
"objectId": {
|
|
"type": "string",
|
|
"description": "See [Object types](https://nextcloud-talk.readthedocs.io/en/latest/constants#object-types) documentation for explanation"
|
|
},
|
|
"objectType": {
|
|
"type": "string",
|
|
"description": "The type of object that the conversation is associated with (See [Object types](https://nextcloud-talk.readthedocs.io/en/latest/constants#object-types))"
|
|
},
|
|
"participantFlags": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "\"In call\" flags of the user's session making the request (only available with `in-call-flags` capability)"
|
|
},
|
|
"participantType": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Permissions level of the current user"
|
|
},
|
|
"permissions": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Combined final permissions for the current participant, permissions are picked in order of attendee then call then default and the first which is `Custom` will apply (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-permissions))"
|
|
},
|
|
"readOnly": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Read-only state for the current user (only available with `read-only-rooms` capability)"
|
|
},
|
|
"recordingConsent": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Whether recording consent is required before joining a call (Only 0 and 1 will be returned, see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#recording-consent-required)) (only available with `recording-consent` capability)"
|
|
},
|
|
"remoteServer": {
|
|
"type": "string"
|
|
},
|
|
"remoteToken": {
|
|
"type": "string"
|
|
},
|
|
"sessionId": {
|
|
"type": "string",
|
|
"description": "`'0'` if not connected, otherwise an up to 512 character long string that is the identifier of the user's session making the request. Should only be used to pre-check if the user joined already with this session, but this might be outdated by the time of usage, so better check via [Get list of participants in a conversation](https://nextcloud-talk.readthedocs.io/en/latest/participant/#get-list-of-participants-in-a-conversation)"
|
|
},
|
|
"sipEnabled": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "SIP enable status (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#sip-states))"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"description": "Optional: Only available for one-to-one conversations, when `includeStatus=true` is set and the user has a status"
|
|
},
|
|
"statusClearAt": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true,
|
|
"description": "Optional: Only available for one-to-one conversations, when `includeStatus=true` is set and the user has a status, can still be null even with a status"
|
|
},
|
|
"statusIcon": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Optional: Only available for one-to-one conversations, when `includeStatus=true` is set and the user has a status, can still be null even with a status"
|
|
},
|
|
"statusMessage": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Optional: Only available for one-to-one conversations, when `includeStatus=true` is set and the user has a status, can still be null even with a status"
|
|
},
|
|
"token": {
|
|
"type": "string",
|
|
"description": "Token identifier of the conversation which is used for further interaction"
|
|
},
|
|
"type": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "See list of conversation types in the [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants/#conversation-types)"
|
|
},
|
|
"unreadMention": {
|
|
"type": "boolean",
|
|
"description": "Flag if the user was mentioned since their last visit"
|
|
},
|
|
"unreadMentionDirect": {
|
|
"type": "boolean",
|
|
"description": "Flag if the user was mentioned directly (ignoring `@all` mentions) since their last visit (only available with `direct-mention-flag` capability)"
|
|
},
|
|
"unreadMessages": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Number of unread chat messages in the conversation (only available with `chat-v2` capability)"
|
|
},
|
|
"isArchived": {
|
|
"type": "boolean",
|
|
"description": "Flag if the conversation is archived by the user (only available with `archived-conversations-v2` capability)"
|
|
},
|
|
"isImportant": {
|
|
"type": "boolean",
|
|
"description": "Required capability: `important-conversations`"
|
|
},
|
|
"isSensitive": {
|
|
"type": "boolean",
|
|
"description": "Required capability: `sensitive-conversations`"
|
|
}
|
|
}
|
|
},
|
|
"RoomLastMessage": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ChatMessage"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChatProxyMessage"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"paths": {
|
|
"/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}": {
|
|
"get": {
|
|
"operationId": "room-get-single-room",
|
|
"summary": "Get a room",
|
|
"tags": [
|
|
"room"
|
|
],
|
|
"security": [
|
|
{},
|
|
{
|
|
"bearer_auth": []
|
|
},
|
|
{
|
|
"basic_auth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "apiVersion",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"v4"
|
|
],
|
|
"default": "v4"
|
|
}
|
|
},
|
|
{
|
|
"name": "token",
|
|
"in": "path",
|
|
"description": "Token of the room",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9]{4,30}$"
|
|
}
|
|
},
|
|
{
|
|
"name": "x-nextcloud-federation",
|
|
"in": "header",
|
|
"description": "Set to 1 when the request is performed by another Nextcloud Server to indicate a federation request",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-random",
|
|
"in": "header",
|
|
"description": "Random seed used to generate the request checksum",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-checksum",
|
|
"in": "header",
|
|
"description": "Checksum over the request body to verify authenticity from the Sipbridge",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "OCS-APIRequest",
|
|
"in": "header",
|
|
"description": "Required to be true for the API request to pass",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Room returned",
|
|
"headers": {
|
|
"X-Nextcloud-Talk-Hash": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"$ref": "#/components/schemas/Room"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "SIP request invalid",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Room not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/pin/{pin}": {
|
|
"get": {
|
|
"operationId": "room-verify-dial-in-pin-deprecated",
|
|
"summary": "Verify a dial-in PIN (SIP bridge)",
|
|
"tags": [
|
|
"room"
|
|
],
|
|
"security": [
|
|
{},
|
|
{
|
|
"bearer_auth": []
|
|
},
|
|
{
|
|
"basic_auth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "apiVersion",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"v4"
|
|
],
|
|
"default": "v4"
|
|
}
|
|
},
|
|
{
|
|
"name": "token",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9]{4,30}$"
|
|
}
|
|
},
|
|
{
|
|
"name": "pin",
|
|
"in": "path",
|
|
"description": "PIN the participant used to dial-in",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^\\d{7,32}$"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-random",
|
|
"in": "header",
|
|
"description": "Random seed used to generate the request checksum",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-checksum",
|
|
"in": "header",
|
|
"description": "Checksum over the request body to verify authenticity from the Sipbridge",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "OCS-APIRequest",
|
|
"in": "header",
|
|
"description": "Required to be true for the API request to pass",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Participant returned",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"$ref": "#/components/schemas/Room"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "SIP request invalid",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Participant not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"501": {
|
|
"description": "SIP dial-in is not configured",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/verify-dialin": {
|
|
"post": {
|
|
"operationId": "room-verify-dial-in-pin",
|
|
"summary": "Verify a dial-in PIN (SIP bridge)",
|
|
"tags": [
|
|
"room"
|
|
],
|
|
"security": [
|
|
{},
|
|
{
|
|
"bearer_auth": []
|
|
},
|
|
{
|
|
"basic_auth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"pin"
|
|
],
|
|
"properties": {
|
|
"pin": {
|
|
"type": "string",
|
|
"description": "PIN the participant used to dial-in"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "apiVersion",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"v4"
|
|
],
|
|
"default": "v4"
|
|
}
|
|
},
|
|
{
|
|
"name": "token",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9]{4,30}$"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-random",
|
|
"in": "header",
|
|
"description": "Random seed used to generate the request checksum",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-checksum",
|
|
"in": "header",
|
|
"description": "Checksum over the request body to verify authenticity from the Sipbridge",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "OCS-APIRequest",
|
|
"in": "header",
|
|
"description": "Required to be true for the API request to pass",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Participant returned",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"$ref": "#/components/schemas/Room"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "SIP request invalid",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Participant not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"501": {
|
|
"description": "SIP dial-in is not configured",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/verify-dialout": {
|
|
"post": {
|
|
"operationId": "room-verify-dial-out-number",
|
|
"summary": "Verify a dial-out number (SIP bridge)",
|
|
"tags": [
|
|
"room"
|
|
],
|
|
"security": [
|
|
{},
|
|
{
|
|
"bearer_auth": []
|
|
},
|
|
{
|
|
"basic_auth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"number"
|
|
],
|
|
"properties": {
|
|
"number": {
|
|
"type": "string",
|
|
"description": "E164 formatted phone number"
|
|
},
|
|
"options": {
|
|
"type": "object",
|
|
"default": {},
|
|
"description": "Additional details to verify the validity of the request",
|
|
"properties": {
|
|
"actorId": {
|
|
"type": "string"
|
|
},
|
|
"actorType": {
|
|
"type": "string"
|
|
},
|
|
"attendeeId": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "apiVersion",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"v4"
|
|
],
|
|
"default": "v4"
|
|
}
|
|
},
|
|
{
|
|
"name": "token",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9]{4,30}$"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-random",
|
|
"in": "header",
|
|
"description": "Random seed used to generate the request checksum",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-checksum",
|
|
"in": "header",
|
|
"description": "Checksum over the request body to verify authenticity from the Sipbridge",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "OCS-APIRequest",
|
|
"in": "header",
|
|
"description": "Required to be true for the API request to pass",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Participant created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"$ref": "#/components/schemas/Room"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Phone number and details could not be confirmed",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "SIP request invalid",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Phone number is not invited as a participant",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"501": {
|
|
"description": "SIP dial-out is not configured",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/ocs/v2.php/apps/spreed/api/{apiVersion}/room/direct-dial-in": {
|
|
"post": {
|
|
"operationId": "room-direct-dial-in",
|
|
"summary": "Direct dial-in (SIP bridge)",
|
|
"description": "Required capability: `sip-direct-dialin`",
|
|
"tags": [
|
|
"room"
|
|
],
|
|
"security": [
|
|
{},
|
|
{
|
|
"bearer_auth": []
|
|
},
|
|
{
|
|
"basic_auth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"phoneNumber",
|
|
"caller"
|
|
],
|
|
"properties": {
|
|
"phoneNumber": {
|
|
"type": "string",
|
|
"description": "Phone number that is called"
|
|
},
|
|
"caller": {
|
|
"type": "string",
|
|
"description": "Phone number of the person calling in"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "apiVersion",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"v4"
|
|
],
|
|
"default": "v4"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-random",
|
|
"in": "header",
|
|
"description": "Random seed used to generate the request checksum",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-checksum",
|
|
"in": "header",
|
|
"description": "Checksum over the request body to verify authenticity from the Sipbridge",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "OCS-APIRequest",
|
|
"in": "header",
|
|
"description": "Required to be true for the API request to pass",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Call conversation created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"$ref": "#/components/schemas/Room"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "SIP request invalid",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Number is not assigned to any user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Error occurred while creating conversation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"501": {
|
|
"description": "SIP dial-in is not configured",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/open-dial-in": {
|
|
"post": {
|
|
"operationId": "room-create-guest-by-dial-in",
|
|
"summary": "Create a guest by their dial-in",
|
|
"tags": [
|
|
"room"
|
|
],
|
|
"security": [
|
|
{},
|
|
{
|
|
"bearer_auth": []
|
|
},
|
|
{
|
|
"basic_auth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "apiVersion",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"v4"
|
|
],
|
|
"default": "v4"
|
|
}
|
|
},
|
|
{
|
|
"name": "token",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9]{4,30}$"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-random",
|
|
"in": "header",
|
|
"description": "Random seed used to generate the request checksum",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-checksum",
|
|
"in": "header",
|
|
"description": "Checksum over the request body to verify authenticity from the Sipbridge",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "OCS-APIRequest",
|
|
"in": "header",
|
|
"description": "Required to be true for the API request to pass",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Participant created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"$ref": "#/components/schemas/Room"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "SIP not enabled",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "SIP request invalid",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/rejected-dialout": {
|
|
"delete": {
|
|
"operationId": "room-rejected-dial-out-request",
|
|
"summary": "Reset call ID of a dial-out participant when the SIP gateway rejected it",
|
|
"tags": [
|
|
"room"
|
|
],
|
|
"security": [
|
|
{},
|
|
{
|
|
"bearer_auth": []
|
|
},
|
|
{
|
|
"basic_auth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "apiVersion",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"v4"
|
|
],
|
|
"default": "v4"
|
|
}
|
|
},
|
|
{
|
|
"name": "token",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9]{4,30}$"
|
|
}
|
|
},
|
|
{
|
|
"name": "callId",
|
|
"in": "query",
|
|
"description": "The call ID provided by the SIP bridge earlier to uniquely identify the call to terminate",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "options",
|
|
"in": "query",
|
|
"description": "Additional details to verify the validity of the request",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-random",
|
|
"in": "header",
|
|
"description": "Random seed used to generate the request checksum",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "talk-sipbridge-checksum",
|
|
"in": "header",
|
|
"description": "Checksum over the request body to verify authenticity from the Sipbridge",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "OCS-APIRequest",
|
|
"in": "header",
|
|
"description": "Required to be true for the API request to pass",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Call ID reset",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Call ID mismatch or attendeeId not found in $options",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "SIP request invalid",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Participant was not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"501": {
|
|
"description": "SIP dial-out is not configured",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"ocs"
|
|
],
|
|
"properties": {
|
|
"ocs": {
|
|
"type": "object",
|
|
"required": [
|
|
"meta",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"meta": {
|
|
"$ref": "#/components/schemas/OCSMeta"
|
|
},
|
|
"data": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tags": []
|
|
}
|