{ "openapi": "3.0.3", "info": { "title": "spreed", "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": { "ActorTypes": { "type": "string", "enum": [ "users", "groups", "guests", "emails", "circles", "bridged", "bots", "federated_users", "phones" ] }, "Ban": { "type": "object", "required": [ "id", "moderatorActorType", "moderatorActorId", "moderatorDisplayName", "bannedActorType", "bannedActorId", "bannedDisplayName", "bannedTime", "internalNote" ], "properties": { "id": { "type": "integer", "format": "int64", "description": "Identifier of the ban" }, "moderatorActorType": { "type": "string", "description": "Actor type of the moderator that banned the participant" }, "moderatorActorId": { "type": "string", "description": "Actor id of the moderator that banned the participant" }, "moderatorDisplayName": { "type": "string", "description": "Display name of the moderator that banned the participant" }, "bannedActorType": { "type": "string", "description": "Actor type of the banned participant" }, "bannedActorId": { "type": "string", "description": "Actor id of the banned participant" }, "bannedDisplayName": { "type": "string", "description": "Display name of the banned participant" }, "bannedTime": { "type": "integer", "format": "int64", "description": "UNIX timestamp when the participant was banned" }, "internalNote": { "type": "string", "description": "Internal note for the moderator to remember the reason for the ban" } } }, "BaseMessage": { "type": "object", "required": [ "actorDisplayName", "actorId", "actorType", "expirationTimestamp", "message", "messageParameters", "messageType", "systemMessage" ], "properties": { "actorDisplayName": { "type": "string", "description": "Display name of the message author (can be empty for type `deleted_users` and `guests`)" }, "actorId": { "type": "string", "description": "Actor id of the message author" }, "actorType": { "type": "string", "description": "See [Constants - Actor types of chat messages](https://nextcloud-talk.readthedocs.io/en/latest/constants#actor-types-of-chat-messages)" }, "expirationTimestamp": { "type": "integer", "format": "int64", "description": "Unix time stamp when the message expires and should be removed from the clients UI without further note or warning (only available with `message-expiration` capability)" }, "message": { "type": "string", "description": "Message string with placeholders (see [Rich Object String](https://github.com/nextcloud/server/issues/1706))" }, "messageParameters": { "type": "object", "description": "Message parameters for `message` (see [Rich Object String](https://github.com/nextcloud/server/issues/1706))", "additionalProperties": { "$ref": "#/components/schemas/RichObjectParameter" } }, "messageType": { "type": "string", "description": "Currently known types are `comment`, `comment_deleted`, `system` and `command`" }, "systemMessage": { "type": "string", "description": "Empty for normal chat message or the type of the system message (untranslated)" } } }, "Bot": { "type": "object", "required": [ "description", "id", "name", "state" ], "properties": { "description": { "type": "string", "nullable": true, "description": "A longer description of the bot helping moderators to decide if they want to enable this bot" }, "id": { "type": "integer", "format": "int64", "description": "Unique numeric identifier of the bot on this server" }, "name": { "type": "string", "description": "Display name of the bot shown as author when it posts a message or reaction" }, "state": { "type": "integer", "format": "int64", "description": "One of the [Bot states](https://nextcloud-talk.readthedocs.io/en/latest/constants#bot-states)" } } }, "CallPeer": { "type": "object", "required": [ "actorId", "actorType", "displayName", "lastPing", "sessionId", "token" ], "properties": { "actorId": { "type": "string", "description": "The user id, guest random id or email address of the attendee" }, "actorType": { "type": "string", "description": "Actor type of the attendee (see [Constants - Attendee types](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-types))" }, "displayName": { "type": "string", "description": "The display name of the attendee" }, "lastPing": { "type": "integer", "format": "int64", "description": "Timestamp of the last ping of the user (should be used for sorting)" }, "sessionId": { "type": "string", "description": "up to 512 character long string" }, "token": { "type": "string", "description": "Conversation token" } } }, "Capabilities": { "type": "object", "required": [ "features", "features-local", "config", "config-local", "version" ], "properties": { "features": { "type": "array", "description": "List of features available on the server", "items": { "type": "string" }, "minItems": 1 }, "features-local": { "type": "array", "description": "List of features only available locally (not for federated conversations)", "items": { "type": "string" }, "minItems": 1 }, "config": { "type": "object", "required": [ "attachments", "call", "chat", "conversations", "federation", "previews", "signaling", "experiments", "feature-hints", "permissions" ], "properties": { "attachments": { "type": "object", "required": [ "allowed", "conversation-subfolders" ], "properties": { "allowed": { "type": "boolean", "description": "Whether file sharing is allowed in conversations" }, "folder": { "type": "string", "description": "User's attachment folder (only available for logged in users)" }, "conversation-subfolders": { "type": "boolean", "description": "Whether per-conversation subfolders are used for attachments" } } }, "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", "default-phone-region", "can-enable-sip", "start-without-media", "max-duration", "blur-virtual-background", "end-to-end-encryption", "live-transcription", "live-translation", "live-transcription-target-language-id", "play-sounds", "grid-limit", "grid-limit-enforced" ], "properties": { "enabled": { "type": "boolean", "description": "Whether calls are enabled" }, "breakout-rooms": { "type": "boolean", "description": "Whether breakout rooms are enabled" }, "recording": { "type": "boolean", "description": "Whether call recording is enabled" }, "recording-consent": { "type": "integer", "format": "int64", "description": "Whether recording consent is required (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#recording-consent-required))" }, "supported-reactions": { "type": "array", "description": "List of supported reaction emojis during calls", "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", "description": "Whether the user can upload custom virtual backgrounds" }, "sip-enabled": { "type": "boolean", "description": "Whether SIP is enabled on the server" }, "sip-dialout-enabled": { "type": "boolean", "description": "Whether SIP dial-out is enabled on the server" }, "default-phone-region": { "type": "string", "description": "Default phone region of the server" }, "can-enable-sip": { "type": "boolean", "description": "Whether the user can enable SIP for conversations" }, "start-without-media": { "type": "boolean", "description": "Whether calls start without media by default" }, "max-duration": { "type": "integer", "format": "int64", "description": "Maximum duration of a call in seconds, `0` means unlimited" }, "blur-virtual-background": { "type": "boolean", "description": "Whether the blur virtual background is available" }, "end-to-end-encryption": { "type": "boolean", "description": "Whether end-to-end encryption is available" }, "live-transcription": { "type": "boolean", "description": "Whether live transcription is available" }, "live-translation": { "type": "boolean", "description": "Whether live translation is available" }, "live-transcription-target-language-id": { "type": "string", "description": "The default target language for live transcription" }, "play-sounds": { "type": "boolean", "description": "Whether to play sounds for call events" }, "grid-limit": { "type": "integer", "format": "int64", "description": "Maximum number of participants shown in the grid view" }, "grid-limit-enforced": { "type": "boolean", "description": "Whether the grid limit is enforced by the server" }, "external-call-service": { "type": "string", "description": "URL of an external call service if one is used" } } }, "chat": { "type": "object", "required": [ "max-length", "read-privacy", "has-translation-providers", "has-translation-task-providers", "typing-privacy", "summary-threshold", "style", "matterbridge-enabled" ], "properties": { "max-length": { "type": "integer", "format": "int64", "description": "Maximum length of a chat message" }, "read-privacy": { "type": "integer", "format": "int64", "description": "Read privacy setting for the user (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-read-status-privacy))" }, "has-translation-providers": { "type": "boolean", "description": "Whether translation providers are available" }, "has-translation-task-providers": { "type": "boolean", "description": "Whether translation task providers are available" }, "typing-privacy": { "type": "integer", "format": "int64", "description": "Typing privacy setting for the user (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-typing-privacy))" }, "summary-threshold": { "type": "integer", "format": "int64", "description": "Minimum number of chat messages before a summary can be generated", "minimum": 1 }, "style": { "type": "string", "enum": [ "split", "unified" ], "description": "Chat message rendering style (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#chat-style))" }, "matterbridge-enabled": { "type": "boolean", "description": "Whether Matterbridge is enabled" } } }, "conversations": { "type": "object", "required": [ "can-create", "force-passwords", "list-style", "description-length", "retention-event", "retention-phone", "retention-instant-meetings", "retention-classified", "sort-order", "group-mode" ], "properties": { "can-create": { "type": "boolean", "description": "Whether the user can create conversations" }, "force-passwords": { "type": "boolean", "description": "Whether passwords are enforced for public conversations" }, "list-style": { "type": "string", "enum": [ "two-lines", "compact" ], "description": "Conversation list style (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#conversation-list-style))" }, "description-length": { "type": "integer", "format": "int64", "description": "Maximum length of a conversation description", "minimum": 1 }, "retention-event": { "type": "integer", "format": "int64", "description": "Retention period for event conversations in seconds, `0` means no retention", "minimum": 0 }, "retention-phone": { "type": "integer", "format": "int64", "description": "Retention period for phone conversations in seconds, `0` means no retention", "minimum": 0 }, "retention-instant-meetings": { "type": "integer", "format": "int64", "description": "Retention period for instant meetings in seconds, `0` means no retention", "minimum": 0 }, "retention-classified": { "type": "integer", "format": "int64", "description": "Retention period for classified conversations after a call in seconds, `0` means no retention", "minimum": 0 }, "sort-order": { "type": "string", "enum": [ "activity", "alphabetical" ], "description": "User selected sort order for conversations (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#conversations-sort-options))" }, "group-mode": { "type": "string", "enum": [ "none", "group-first", "private-first" ], "description": "User selected grouping mode for conversations (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#conversations-group-mode))" } } }, "federation": { "type": "object", "required": [ "enabled", "incoming-enabled", "outgoing-enabled", "only-trusted-servers" ], "properties": { "enabled": { "type": "boolean", "description": "Whether federation is enabled" }, "incoming-enabled": { "type": "boolean", "description": "Whether incoming federation is enabled" }, "outgoing-enabled": { "type": "boolean", "description": "Whether outgoing federation is enabled" }, "only-trusted-servers": { "type": "boolean", "description": "Whether only trusted servers are allowed for federation" } } }, "previews": { "type": "object", "required": [ "max-gif-size" ], "properties": { "max-gif-size": { "type": "integer", "format": "int64", "description": "Maximum GIF file size in bytes for previews" } } }, "signaling": { "type": "object", "required": [ "session-ping-limit", "mode" ], "properties": { "session-ping-limit": { "type": "integer", "format": "int64", "description": "Maximum number of sessions that can be pinged in a single request" }, "mode": { "type": "string", "enum": [ "internal", "external" ], "description": "Signaling mode (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#signaling-modes))" }, "hello-v2-token-key": { "type": "string", "description": "Public key for hello v2 authentication" } } }, "experiments": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "integer", "format": "int64", "description": "Bit-flag of enabled experiments", "minimum": 0 } } }, "feature-hints": { "type": "object", "required": [ "current", "hidden" ], "properties": { "current": { "type": "integer", "format": "int64", "minimum": 1 }, "hidden": { "type": "integer", "format": "int64", "minimum": 0 } } }, "permissions": { "type": "object", "required": [ "max-default", "max-custom", "default" ], "properties": { "max-default": { "type": "integer", "format": "int64", "description": "Maximum default permissions (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-permissions))" }, "max-custom": { "type": "integer", "format": "int64", "description": "Maximum custom permissions (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-permissions))" }, "default": { "type": "integer", "format": "int64", "description": "Server default permissions (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-permissions))" } } } } }, "config-local": { "type": "object", "description": "Map of config keys that are only available locally (not for federated conversations)", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "version": { "type": "string", "description": "Version of the Talk app" } } }, "ChatMentionSuggestion": { "type": "object", "required": [ "id", "label", "source", "mentionId" ], "properties": { "id": { "type": "string", "description": "The actor id of the suggestion" }, "label": { "type": "string", "description": "The display name of the suggestion" }, "source": { "type": "string", "description": "The source of the suggestion (e.g. `users`, `groups`, `calls`)" }, "mentionId": { "type": "string", "description": "The mention id to use for the mention" }, "details": { "type": "string", "description": "Additional details of the suggestion (e.g. group description)" }, "status": { "type": "string", "description": "User status of the suggestion" }, "statusClearAt": { "type": "integer", "format": "int64", "nullable": true, "description": "UNIX timestamp when the user status will be cleared" }, "statusIcon": { "type": "string", "nullable": true, "description": "User status icon" }, "statusMessage": { "type": "string", "nullable": true, "description": "User status message" } } }, "ChatMessage": { "allOf": [ { "$ref": "#/components/schemas/BaseMessage" }, { "type": "object", "required": [ "id", "isReplyable", "markdown", "reactions", "referenceId", "timestamp", "token" ], "properties": { "deleted": { "type": "boolean", "enum": [ true ], "description": "Set to `true` when the message was deleted" }, "id": { "type": "integer", "format": "int64", "description": "ID of the comment" }, "isReplyable": { "type": "boolean", "description": "True if the user can post a reply to this message (only available with `chat-replies` capability)" }, "markdown": { "type": "boolean", "description": "Whether the message should be rendered as markdown or shown as plain text" }, "reactions": { "type": "object", "description": "An array map with relation between reaction emoji and total count of reactions with this emoji", "additionalProperties": { "type": "integer", "format": "int64" } }, "reactionsSelf": { "type": "array", "description": "When the user reacted this is the list of emojis the user reacted with", "items": { "type": "string" } }, "referenceId": { "type": "string", "description": "A reference string that was given while posting the message to be able to identify a sent message again (only available with `chat-reference-id` capability)" }, "timestamp": { "type": "integer", "format": "int64", "description": "Timestamp in seconds and UTC time zone" }, "token": { "type": "string", "description": "Conversation token" }, "lastEditActorDisplayName": { "type": "string", "description": "Display name of the last editing author (only available with `edit-messages` capability and when the message was actually edited)" }, "lastEditActorId": { "type": "string", "description": "Actor id of the last editing author (only available with `edit-messages` capability and when the message was actually edited)" }, "lastEditActorType": { "type": "string", "description": "Actor type of the last editing author - See [Constants - Actor types of chat messages](https://nextcloud-talk.readthedocs.io/en/latest/constants#actor-types-of-chat-messages) (only available with `edit-messages` capability and when the message was actually edited)" }, "lastEditTimestamp": { "type": "integer", "format": "int64", "description": "Unix time stamp when the message was last edited (only available with `edit-messages` capability and when the message was actually edited)" }, "silent": { "type": "boolean", "description": "Whether the message was sent silently (only available with `silent-send-state` capability)" }, "threadId": { "type": "integer", "format": "int64", "description": "Thread ID if this message is part of a thread" }, "isThread": { "type": "boolean", "description": "Whether this message is the root of a thread" }, "threadTitle": { "type": "string", "description": "Title of the thread if this message is the root of a thread" }, "threadReplies": { "type": "integer", "format": "int64", "description": "Number of replies in the thread if this message is the root of a thread" }, "metaData": { "$ref": "#/components/schemas/ChatMessageMetaData", "description": "Additional metadata of the message" } } } ] }, "ChatMessageMetaData": { "type": "object", "properties": { "pinnedActorType": { "type": "string", "description": "Actor type of the attendee that pinned the message - Required capability: `pinned-messages`" }, "pinnedActorId": { "type": "string", "description": "Actor ID of the attendee that pinned the message - Required capability: `pinned-messages`" }, "pinnedActorDisplayName": { "type": "string", "description": "Display name of the attendee that pinned the message - Required capability: `pinned-messages`" }, "pinnedAt": { "type": "integer", "format": "int64", "description": "Timestamp when the message was pinned - Required capability: `pinned-messages`" }, "pinnedUntil": { "type": "integer", "format": "int64", "description": "Timestamp until when the message is pinned. If missing the message is pinned infinitely - Required capability: `pinned-messages`" }, "threadId": { "type": "integer", "format": "int64", "description": "Set when a thread is created with this message. If missing, no thread creation is associated with this message" }, "threadTitle": { "type": "string", "description": "Set when a thread is created with this message. If missing, no thread creation is associated with this message" }, "replyToMessageId": { "type": "integer", "format": "int64", "description": "Set only when a message in a convo is private replied on a 1-1 room. Represents the parent message id" }, "replyToConversationToken": { "type": "string", "description": "Set only when a message in a convo is private replied on a 1-1 room. Represents the parent message's group conversation token." }, "replyToConversationName": { "type": "string", "description": "Set only when a message in a convo is private replied on a 1-1 room. Represents the parent message's group conversation name" }, "replyToActorDisplayName": { "type": "string", "description": "Set only when a message in a convo is private replied on a 1-1 room. Represents the parent message's actor display name" } } }, "ChatMessageWithParent": { "allOf": [ { "$ref": "#/components/schemas/ChatMessage" }, { "type": "object", "properties": { "parent": { "anyOf": [ { "$ref": "#/components/schemas/ChatMessage" }, { "$ref": "#/components/schemas/DeletedChatMessage" } ] } } } ] }, "ChatProxyMessage": { "$ref": "#/components/schemas/BaseMessage" }, "ChatReminder": { "type": "object", "required": [ "messageId", "timestamp", "token", "userId" ], "properties": { "messageId": { "type": "integer", "format": "int64", "description": "ID of the message the reminder is for" }, "timestamp": { "type": "integer", "format": "int64", "description": "UNIX timestamp when the reminder should trigger" }, "token": { "type": "string", "description": "Conversation token" }, "userId": { "type": "string", "description": "User id of the user that set the reminder" } } }, "ChatReminderUpcoming": { "type": "object", "required": [ "actorDisplayName", "actorId", "actorType", "message", "messageId", "messageParameters", "reminderTimestamp", "roomToken" ], "properties": { "actorDisplayName": { "type": "string", "description": "Display name of the message author" }, "actorId": { "type": "string", "description": "Actor id of the message author" }, "actorType": { "type": "string", "description": "Actor type of the message author" }, "message": { "type": "string", "description": "Message string with placeholders" }, "messageId": { "type": "integer", "format": "int64", "description": "ID of the message the reminder is for" }, "messageParameters": { "type": "object", "description": "Message parameters for `message` (see [Rich Object String](https://github.com/nextcloud/server/issues/1706))", "additionalProperties": { "$ref": "#/components/schemas/RichObjectParameter" } }, "reminderTimestamp": { "type": "integer", "format": "int64", "description": "UNIX timestamp when the reminder should trigger" }, "roomToken": { "type": "string", "description": "Conversation token" } } }, "ConversationPreset": { "type": "object", "required": [ "identifier", "name", "description", "parameters" ], "properties": { "identifier": { "type": "string", "description": "Identifier of the preset, currently known: default, forced, webinar, presentation, hallway" }, "name": { "type": "string", "description": "Translated name of the preset in user's language" }, "description": { "type": "string", "description": "Translated description of the preset in user's language" }, "parameters": { "type": "object", "description": "List of parameters that should be set", "additionalProperties": { "type": "integer", "format": "int64" } } } }, "ConversationTag": { "type": "object", "required": [ "id", "name", "sortOrder", "collapsed", "type" ], "properties": { "id": { "type": "string", "description": "SnowflakeID" }, "name": { "type": "string", "description": "Display name" }, "sortOrder": { "type": "integer", "format": "int64", "description": "Sort order from 0 (top) to higher (bottom)" }, "collapsed": { "type": "boolean", "description": "Whether the tag list should be open or collapsed" }, "type": { "type": "string", "enum": [ "custom", "favorites", "other" ], "description": "favorites and other are special tags and have a fixed sorting position" } } }, "DashboardEvent": { "type": "object", "required": [ "calendars", "eventName", "eventDescription", "eventAttachments", "eventLink", "start", "end", "roomToken", "roomAvatarVersion", "roomName", "roomDisplayName", "roomType", "roomActiveSince", "invited", "accepted", "tentative", "declined" ], "properties": { "calendars": { "type": "array", "description": "List of calendars this event belongs to", "items": { "$ref": "#/components/schemas/DashboardEventCalendar" }, "minItems": 1 }, "eventName": { "type": "string", "description": "Name of the event" }, "eventDescription": { "type": "string", "nullable": true, "description": "Description of the event" }, "eventAttachments": { "type": "object", "description": "Attachments of the event", "additionalProperties": { "$ref": "#/components/schemas/DashboardEventAttachment" } }, "eventLink": { "type": "string", "description": "Link to the event" }, "start": { "type": "integer", "format": "int64", "description": "UNIX timestamp of the event start" }, "end": { "type": "integer", "format": "int64", "description": "UNIX timestamp of the event end" }, "roomToken": { "type": "string", "description": "Conversation token" }, "roomAvatarVersion": { "type": "string", "description": "Version of conversation avatar for caching" }, "roomName": { "type": "string", "description": "Name of the conversation" }, "roomDisplayName": { "type": "string", "description": "Display name of the conversation" }, "roomType": { "type": "integer", "format": "int64", "description": "Type of the conversation (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#conversation-types))" }, "roomActiveSince": { "type": "integer", "format": "int64", "nullable": true, "description": "UNIX timestamp since when a call is active, or null if no call" }, "invited": { "type": "integer", "format": "int64", "nullable": true, "description": "Number of invited attendees" }, "accepted": { "type": "integer", "format": "int64", "nullable": true, "description": "Number of accepted attendees" }, "tentative": { "type": "integer", "format": "int64", "nullable": true, "description": "Number of tentative attendees" }, "declined": { "type": "integer", "format": "int64", "nullable": true, "description": "Number of declined attendees" } } }, "DashboardEventAttachment": { "type": "object", "required": [ "calendars", "fmttype", "filename", "fileid", "preview", "previewLink" ], "properties": { "calendars": { "type": "array", "description": "List of calendar principal URIs this attachment belongs to", "items": { "type": "string" }, "minItems": 1 }, "fmttype": { "type": "string", "description": "MIME type of the attachment" }, "filename": { "type": "string", "description": "File name of the attachment" }, "fileid": { "type": "integer", "format": "int64", "description": "File id of the attachment" }, "preview": { "type": "boolean", "description": "Whether a preview is available for the attachment" }, "previewLink": { "type": "string", "nullable": true, "description": "Link to the preview of the attachment" } } }, "DashboardEventCalendar": { "type": "object", "required": [ "principalUri", "calendarName", "calendarColor" ], "properties": { "principalUri": { "type": "string", "description": "Principal URI of the calendar owner" }, "calendarName": { "type": "string", "description": "Name of the calendar" }, "calendarColor": { "type": "string", "nullable": true, "description": "Color of the calendar" } } }, "DeletedChatMessage": { "type": "object", "required": [ "id", "deleted" ], "properties": { "id": { "type": "integer", "format": "int64", "description": "ID of the parent comment" }, "deleted": { "type": "boolean", "enum": [ true ], "description": "`true` when the parent is deleted" } } }, "InvitationList": { "type": "object", "properties": { "users": { "type": "array", "description": "List of user ids that could not be invited", "items": { "type": "string" } }, "federated_users": { "type": "array", "description": "List of federated user ids that could not be invited", "items": { "type": "string" } }, "groups": { "type": "array", "description": "List of group ids that could not be invited", "items": { "type": "string" } }, "emails": { "type": "array", "description": "List of email addresses that could not be invited", "items": { "type": "string" } }, "phones": { "type": "array", "description": "List of phone numbers that could not be invited", "items": { "type": "string" } }, "teams": { "type": "array", "description": "List of team ids that could not be invited", "items": { "type": "string" } } } }, "LiveTranscriptionLanguage": { "type": "object", "required": [ "name", "metadata" ], "properties": { "name": { "type": "string", "description": "Name of the language" }, "metadata": { "type": "object", "description": "Metadata of the language", "required": [ "separator", "rtl" ], "properties": { "separator": { "type": "string", "description": "Word separator character" }, "rtl": { "type": "boolean", "description": "Whether the language is right-to-left" } } } } }, "Matterbridge": { "type": "object", "required": [ "enabled", "parts", "pid" ], "properties": { "enabled": { "type": "boolean", "description": "Whether the bridge is enabled" }, "parts": { "$ref": "#/components/schemas/MatterbridgeConfigFields", "description": "Bridge configuration parts" }, "pid": { "type": "integer", "format": "int64", "description": "Process ID of the Matterbridge process" } } }, "MatterbridgeConfigFields": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "object" } } }, "MatterbridgeProcessState": { "type": "object", "required": [ "log", "running" ], "properties": { "log": { "type": "string", "description": "Log output of the Matterbridge process" }, "running": { "type": "boolean", "description": "Whether the Matterbridge process is running" } } }, "MatterbridgeWithProcessState": { "allOf": [ { "$ref": "#/components/schemas/Matterbridge" }, { "$ref": "#/components/schemas/MatterbridgeProcessState" } ] }, "OCSMeta": { "type": "object", "required": [ "status", "statuscode" ], "properties": { "status": { "type": "string" }, "statuscode": { "type": "integer" }, "message": { "type": "string" }, "totalitems": { "type": "string" }, "itemsperpage": { "type": "string" } } }, "Participant": { "type": "object", "required": [ "actorId", "actorType", "attendeeId", "attendeePermissions", "attendeePin", "displayName", "inCall", "lastPing", "participantType", "permissions", "roomToken", "sessionIds" ], "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": "Currently known `users|guests|emails|groups|circles` (see [Constants - Attendee types](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", "description": "Unique dial-in authentication code for this user, when the conversation has SIP enabled (see `sipEnabled` attribute)" }, "displayName": { "type": "string", "description": "Can be empty for guests" }, "inCall": { "type": "integer", "format": "int64", "description": "Call flags the user joined with (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-in-call-flag))" }, "lastPing": { "type": "integer", "format": "int64", "description": "Timestamp of the last ping of the user (should be used for sorting)" }, "participantType": { "type": "integer", "format": "int64", "description": "Permissions level of the participant (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-types))" }, "permissions": { "type": "integer", "format": "int64", "description": "Combined final permissions for the 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))" }, "roomToken": { "type": "string", "description": "Only available with `breakout-rooms-v1` capability" }, "sessionIds": { "type": "array", "description": "Array of session ids, each are up to 512 character long strings, or empty if no session", "items": { "type": "string" } }, "status": { "type": "string", "description": "Only available with `includeStatus=true`, for users with a set status and when there are less than 100 participants in the conversation" }, "statusClearAt": { "type": "integer", "format": "int64", "nullable": true, "description": "Only available with `includeStatus=true`, for users with a set status and when there are less than 100 participants in the conversation" }, "statusIcon": { "type": "string", "nullable": true, "description": "Only available with `includeStatus=true`, for users with a set status and when there are less than 100 participants in the conversation" }, "statusMessage": { "type": "string", "nullable": true, "description": "Only available with `includeStatus=true`, for users with a set status and when there are less than 100 participants in the conversation" }, "phoneNumber": { "type": "string", "nullable": true, "description": "Only available with `sip-support-dialout` capability and only filled for moderators that are allowed to configure SIP for conversations" }, "callId": { "type": "string", "nullable": true, "description": "Only available with `sip-support-dialout` capability and only filled for moderators that are allowed to configure SIP for conversations" } } }, "Poll": { "allOf": [ { "$ref": "#/components/schemas/PollDraft" }, { "type": "object", "properties": { "details": { "type": "array", "description": "Detailed list who voted for which option (only available for public closed polls)", "items": { "$ref": "#/components/schemas/PollVote" } }, "numVoters": { "type": "integer", "format": "int64", "description": "The number of unique voters that voted (only available when the actor voted on public poll or the poll is closed unless for the creator and moderators)", "minimum": 0 }, "votedSelf": { "type": "array", "description": "Array of option ids the participant voted for", "items": { "type": "integer", "format": "int64" } }, "votes": { "type": "object", "description": "Map with `'option-' + optionId` => number of votes (only available when the actor voted on public poll or the poll is closed)", "additionalProperties": { "type": "integer", "format": "int64" } } } } ] }, "PollDraft": { "type": "object", "required": [ "actorDisplayName", "actorId", "actorType", "id", "maxVotes", "options", "question", "resultMode", "status" ], "properties": { "actorDisplayName": { "type": "string", "description": "Display name of the poll author" }, "actorId": { "type": "string", "description": "Actor ID identifying the poll author", "minLength": 1 }, "actorType": { "$ref": "#/components/schemas/ActorTypes", "description": "Actor type of the poll author (see [Constants - Attendee types](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-types))" }, "id": { "type": "integer", "format": "int64", "description": "ID of the poll", "minimum": 1 }, "maxVotes": { "type": "integer", "format": "int64", "description": "Maximum amount of options a user can vote for, `0` means unlimited", "minimum": 0 }, "options": { "type": "array", "description": "The options participants can vote for", "items": { "type": "string" } }, "question": { "type": "string", "description": "The question of the poll", "minLength": 1 }, "resultMode": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "Result mode of the poll (see [Constants - Poll mode](https://nextcloud-talk.readthedocs.io/en/latest/constants#poll-mode))" }, "status": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2 ], "description": "Status of the poll (see [Constants - Poll status](https://nextcloud-talk.readthedocs.io/en/latest/constants#poll-status))" } } }, "PollVote": { "type": "object", "required": [ "actorDisplayName", "actorId", "actorType", "optionId" ], "properties": { "actorDisplayName": { "type": "string", "description": "The display name of the participant that voted" }, "actorId": { "type": "string", "description": "The actor id of the participant that voted" }, "actorType": { "type": "string", "description": "The actor type of the participant that voted (see [Constants - Attendee types](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-types))" }, "optionId": { "type": "integer", "format": "int64", "description": "The option that was voted for" } } }, "PublicCapabilities": { "type": "object", "properties": { "spreed": { "$ref": "#/components/schemas/Capabilities" } } }, "Reaction": { "type": "object", "required": [ "actorDisplayName", "actorId", "actorType", "timestamp" ], "properties": { "actorDisplayName": { "type": "string", "description": "Display name of the reaction author" }, "actorId": { "type": "string", "description": "Actor id of the reacting participant" }, "actorType": { "type": "string", "description": "`guests` or `users`" }, "timestamp": { "type": "integer", "format": "int64", "description": "Timestamp in seconds and UTC time zone" } } }, "RichObjectParameter": { "type": "object", "required": [ "type", "id", "name" ], "properties": { "type": { "type": "string", "description": "Object type (see [Rich Object String](https://github.com/nextcloud/server/issues/1706))" }, "id": { "type": "string", "description": "Object id" }, "name": { "type": "string", "description": "Visible name" }, "server": { "type": "string", "description": "Server URL for federated users" }, "link": { "type": "string", "description": "URL of the object" }, "call-type": { "type": "string", "enum": [ "one2one", "group", "public" ], "description": "Type of the call" }, "icon-url": { "type": "string", "description": "URL of the icon" }, "message-id": { "type": "string", "description": "ID of a message that this object refers to" }, "boardname": { "type": "string", "description": "Name of the Deck board" }, "stackname": { "type": "string", "description": "Name of the Deck stack" }, "size": { "type": "string", "description": "File size in bytes" }, "path": { "type": "string", "description": "Path of the file" }, "mimetype": { "type": "string", "description": "Mimetype of the file" }, "preview-available": { "type": "string", "enum": [ "yes", "no" ], "description": "Whether a preview is available for the file" }, "hide-download": { "type": "string", "enum": [ "yes", "no" ], "description": "Whether the download should be hidden for the file" }, "mtime": { "type": "string", "description": "Modification time of the file as UNIX timestamp" }, "latitude": { "type": "string", "description": "Latitude of a location" }, "longitude": { "type": "string", "description": "Longitude of a location" }, "description": { "type": "string", "description": "Description of the object" }, "thumb": { "type": "string", "description": "URL of a thumbnail" }, "website": { "type": "string", "description": "Website URL" }, "visibility": { "type": "string", "enum": [ "0", "1" ], "description": "Visibility of the object" }, "assignable": { "type": "string", "enum": [ "0", "1" ], "description": "Whether the object is assignable" }, "conversation": { "type": "string", "description": "Conversation token" }, "etag": { "type": "string", "description": "ETag of the object for caching" }, "permissions": { "type": "string", "description": "Permissions for the file" }, "width": { "type": "string", "description": "Width of the object (e.g. image, video)" }, "height": { "type": "string", "description": "Height of the object (e.g. image, video)" }, "blurhash": { "type": "string", "description": "Blurhash of the image" } } }, "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", "liveTranscriptionLanguageId", "lobbyState", "lobbyTimer", "mentionPermissions", "messageExpiration", "name", "notificationCalls", "notificationLevel", "objectId", "objectType", "participantFlags", "participantType", "permissions", "readOnly", "recordingConsent", "sessionId", "sipEnabled", "token", "type", "unreadMention", "unreadMentionDirect", "unreadMessages", "isArchived", "isImportant", "isSensitive", "tagIds", "lastPinnedId", "hiddenPinnedId", "hasScheduledMessages", "attributes" ], "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": "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 (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#listable-scope)) (only available with `listable-rooms` capability)" }, "liveTranscriptionLanguageId": { "type": "string", "description": "ID of the language to use for live transcriptions in the room," }, "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", "description": "The call notification level for the user (see [Participant call notification levels](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-call-notification-levels))" }, "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 (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-in-call-flag)) (only available with `in-call-flags` capability)" }, "participantType": { "type": "integer", "format": "int64", "description": "Permissions level of the current user (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-types))" }, "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 (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#read-only-states)) (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": "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": "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": "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": "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`" }, "tagIds": { "type": "array", "description": "IDs of the custom tags this conversation is marked with (only available with `conversation-tags` capability)", "items": { "type": "string" } }, "lastPinnedId": { "type": "integer", "format": "int64", "description": "Required capability: `pinned-messages`" }, "hiddenPinnedId": { "type": "integer", "format": "int64", "description": "Required capability: `pinned-messages`" }, "hasScheduledMessages": { "type": "integer", "format": "int64", "description": "Required capability: `scheduled-messages` (local)" }, "attributes": { "type": "integer", "format": "int64", "description": "Bit-flag of enabled attributes of this conversation (only available with capability: `conversation-attributes`). See [attributes list](https://nextcloud-talk.readthedocs.io/en/latest/constants/#conversation-attributes) for details" } } }, "RoomLastMessage": { "anyOf": [ { "$ref": "#/components/schemas/ChatMessage" }, { "$ref": "#/components/schemas/ChatProxyMessage" } ] }, "RoomWithInvalidInvitations": { "allOf": [ { "$ref": "#/components/schemas/Room" }, { "type": "object", "required": [ "invalidParticipants" ], "properties": { "invalidParticipants": { "$ref": "#/components/schemas/InvitationList", "description": "List of participants that could not be invited grouped by source type" } } } ] }, "ScheduledMessage": { "type": "object", "required": [ "id", "actorId", "actorType", "threadId", "message", "messageType", "createdAt", "sendAt", "silent" ], "properties": { "id": { "type": "string", "description": "SnowflakeID" }, "actorId": { "type": "string", "description": "Actor id of the message author" }, "actorType": { "type": "string", "description": "Actor type of the message author" }, "threadId": { "type": "integer", "format": "int64", "description": "Thread ID if the scheduled message is for a thread" }, "threadTitle": { "type": "string", "description": "Title of the thread if the scheduled message is for a thread" }, "parent": { "$ref": "#/components/schemas/ChatMessage", "description": "Parent message if the scheduled message is a reply" }, "message": { "type": "string", "description": "Message string with placeholders" }, "messageType": { "type": "string", "description": "Currently known types are `comment`, `comment_deleted`, `system` and `command`" }, "createdAt": { "type": "integer", "format": "int64", "description": "UNIX timestamp when the scheduled message was created" }, "sendAt": { "type": "integer", "format": "int64", "description": "UNIX timestamp when the message should be sent" }, "silent": { "type": "boolean", "description": "Whether the message should be sent silently without creating chat notifications" }, "originalSendAt": { "type": "integer", "format": "int64", "description": "Set only if sending failed to persist the original timestamp and expose it" } } }, "SignalingFederationSettings": { "type": "object", "required": [ "server", "nextcloudServer", "helloAuthParams", "roomId" ], "properties": { "server": { "type": "string", "description": "URL of the signaling server for federation" }, "nextcloudServer": { "type": "string", "description": "URL of the Nextcloud server for federation" }, "helloAuthParams": { "type": "object", "description": "Authentication parameters for the hello request", "required": [ "token" ], "properties": { "token": { "type": "string" } } }, "roomId": { "type": "string", "description": "Room id on the federated server" } } }, "SignalingSession": { "type": "object", "required": [ "actorId", "actorType", "inCall", "lastPing", "participantPermissions", "roomId", "sessionId", "userId" ], "properties": { "actorId": { "type": "string", "description": "The unique identifier for the given actor type" }, "actorType": { "type": "string", "description": "Actor type of the attendee (see [Constants - Attendee types](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-types))" }, "inCall": { "type": "integer", "format": "int64", "description": "Call flags the user joined with (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-in-call-flag))" }, "lastPing": { "type": "integer", "format": "int64", "description": "Timestamp of the last ping of the user" }, "participantPermissions": { "type": "integer", "format": "int64", "description": "Combined final permissions for the participant (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#attendee-permissions))" }, "roomId": { "type": "integer", "format": "int64", "description": "Identifier of the conversation" }, "sessionId": { "type": "string", "description": "up to 512 character long string" }, "userId": { "type": "string", "description": "User id of the participant (empty for guests)" } } }, "SignalingSettings": { "type": "object", "required": [ "federation", "hideWarning", "server", "signalingMode", "sipDialinInfo", "stunservers", "turnservers", "userId" ], "properties": { "federation": { "nullable": true, "description": "Federation signaling settings, or null if not federated", "allOf": [ { "$ref": "#/components/schemas/SignalingFederationSettings" } ] }, "helloAuthParams": { "type": "object", "description": "Authentication parameters for the hello request", "required": [ "1.0", "2.0" ], "properties": { "1.0": { "type": "object", "required": [ "userid", "ticket" ], "properties": { "userid": { "type": "string", "nullable": true }, "ticket": { "type": "string" } } }, "2.0": { "type": "object", "required": [ "token" ], "properties": { "token": { "type": "string" } } } } }, "hideWarning": { "type": "boolean", "description": "Whether the warning about the signaling server should be hidden" }, "server": { "type": "string", "description": "URL of the signaling server" }, "signalingMode": { "type": "string", "description": "Signaling mode (see [constants list](https://nextcloud-talk.readthedocs.io/en/latest/constants#signaling-modes))" }, "sipDialinInfo": { "type": "string", "description": "SIP dial-in information" }, "stunservers": { "type": "array", "description": "STUN servers", "items": { "type": "object", "required": [ "urls" ], "properties": { "urls": { "type": "array", "items": { "type": "string" } } } } }, "ticket": { "type": "string", "description": "Authentication ticket for the signaling server" }, "turnservers": { "type": "array", "description": "TURN servers", "items": { "type": "object", "required": [ "urls", "username", "credential" ], "properties": { "urls": { "type": "array", "items": { "type": "string" } }, "username": { "type": "string" }, "credential": { "type": "string" } } } }, "userId": { "type": "string", "nullable": true, "description": "User id of the current user" } } }, "Thread": { "type": "object", "required": [ "id", "roomToken", "title", "lastMessageId", "lastActivity", "numReplies" ], "properties": { "id": { "type": "integer", "format": "int64", "description": "Identifier of the thread", "minimum": 1 }, "roomToken": { "type": "string", "description": "Conversation token" }, "title": { "type": "string", "description": "Title of the thread" }, "lastMessageId": { "type": "integer", "format": "int64", "description": "ID of the last message in the thread", "minimum": 0 }, "lastActivity": { "type": "integer", "format": "int64", "description": "UNIX timestamp of the last activity in the thread", "minimum": 0 }, "numReplies": { "type": "integer", "format": "int64", "description": "Number of replies in the thread", "minimum": 0 } } }, "ThreadAttendee": { "type": "object", "required": [ "notificationLevel" ], "properties": { "notificationLevel": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2, 3 ], "description": "The notification level for the user in this thread (See [Participant notification levels](https://nextcloud-talk.readthedocs.io/en/latest/constants#participant-notification-levels))" } } }, "ThreadInfo": { "type": "object", "required": [ "thread", "attendee", "first", "last" ], "properties": { "thread": { "$ref": "#/components/schemas/Thread", "description": "Thread details" }, "attendee": { "$ref": "#/components/schemas/ThreadAttendee", "description": "Attendee details for the current user in this thread" }, "first": { "nullable": true, "description": "First message in the thread (root message)", "allOf": [ { "$ref": "#/components/schemas/ChatMessage" } ] }, "last": { "nullable": true, "description": "Last message in the thread", "allOf": [ { "$ref": "#/components/schemas/ChatMessage" } ] } } } } }, "paths": { "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/avatar": { "post": { "operationId": "avatar-upload-avatar", "summary": "Upload an avatar for a room", "tags": [ "avatar" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Avatar uploaded 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": "Avatar invalid", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string" } } } } } } } } } } } }, "get": { "operationId": "avatar-get-avatar", "summary": "Get the avatar of a room", "tags": [ "avatar" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "darkTheme", "in": "query", "description": "Theme used for background", "schema": { "type": "boolean", "default": false } }, { "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": "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 avatar returned", "content": { "*/*": { "schema": { "type": "string", "format": "binary" } } } } } }, "delete": { "operationId": "avatar-delete-avatar", "summary": "Delete the avatar of a room", "tags": [ "avatar" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Avatar removed 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" } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/avatar/emoji": { "post": { "operationId": "avatar-emoji-avatar", "summary": "Set an emoji as avatar", "tags": [ "avatar" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "emoji" ], "properties": { "emoji": { "type": "string", "description": "Emoji" }, "color": { "type": "string", "nullable": true, "description": "Color of the emoji" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Avatar set 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": "Setting emoji avatar is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string" } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/avatar/dark": { "get": { "operationId": "avatar-get-avatar-dark", "summary": "Get the dark mode avatar of a room", "tags": [ "avatar" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "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": "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 avatar returned", "content": { "*/*": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/ban/{token}": { "post": { "operationId": "ban-ban-actor", "summary": "Ban an actor or IP address", "description": "Required capability: `ban-v1`", "tags": [ "ban" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "actorType", "actorId" ], "properties": { "actorType": { "type": "string", "enum": [ "users", "guests", "emails", "ip" ], "description": "Type of actor to ban, or `ip` when banning a clients remote address" }, "actorId": { "type": "string", "description": "Actor ID or the IP address or range in case of type `ip`" }, "internalNote": { "type": "string", "default": "", "description": "Optional internal note (max. 4000 characters)" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Ban 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/Ban" } } } } } } } }, "400": { "description": "Actor information is invalid", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "bannedActor", "internalNote", "moderator", "self", "room" ] } } } } } } } } } } } }, "get": { "operationId": "ban-list-bans", "summary": "List the bans of a conversation", "description": "Required capability: `ban-v1`", "tags": [ "ban" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "List all bans", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Ban" } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/ban/{token}/{banId}": { "delete": { "operationId": "ban-unban-actor", "summary": "Unban an actor or IP address", "description": "Required capability: `ban-v1`", "tags": [ "ban" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "banId", "in": "path", "description": "ID of the ban to be removed", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "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": "Unban successfully or 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}/bot/{token}": { "get": { "operationId": "bot-list-bots", "summary": "List bots", "tags": [ "bot" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Bot list returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Bot" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/bot/{token}/{botId}": { "post": { "operationId": "bot-enable-bot", "summary": "Enables a bot", "tags": [ "bot" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "botId", "in": "path", "description": "ID of the bot", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "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": "Bot already 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, "allOf": [ { "$ref": "#/components/schemas/Bot" } ] } } } } } } } }, "201": { "description": "Bot enabled successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Bot" } ] } } } } } } } }, "400": { "description": "Enabling bot errored, e.g. when the conversation is classified", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "bot-disable-bot", "summary": "Disables a bot", "tags": [ "bot" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "botId", "in": "path", "description": "ID of the bot", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "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": "Bot disabled successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Bot" } ] } } } } } } } }, "400": { "description": "Disabling bot errored", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/breakout-rooms/{token}": { "post": { "operationId": "breakout_room-configure-breakout-rooms", "summary": "Configure the breakout rooms", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "mode", "amount" ], "properties": { "mode": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2, 3 ], "description": "Mode of the breakout rooms" }, "amount": { "type": "integer", "format": "int64", "description": "Number of breakout rooms - Constants {@see BreakoutRoom::MINIMUM_ROOM_AMOUNT} and {@see BreakoutRoom::MAXIMUM_ROOM_AMOUNT}", "minimum": 1, "maximum": 20 }, "attendeeMap": { "type": "string", "default": "[]", "description": "Mapping of the attendees to breakout rooms" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Breakout rooms configured successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Room" } } } } } } } } }, "400": { "description": "Configuring breakout rooms errored, e.g. when the conversation is classified", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "breakout_room-remove-breakout-rooms", "summary": "Remove the breakout rooms", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Breakout rooms removed 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" } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/breakout-rooms/{token}/broadcast": { "post": { "operationId": "breakout_room-broadcast-chat-message", "summary": "Broadcast a chat message to all breakout rooms", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string", "description": "Message to broadcast" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Chat message broadcasted successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Room" } } } } } } } } }, "400": { "description": "Broadcasting chat message is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "413": { "description": "Chat message too long", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/breakout-rooms/{token}/attendees": { "post": { "operationId": "breakout_room-apply-attendee-map", "summary": "Apply an attendee map to the breakout rooms", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "attendeeMap" ], "properties": { "attendeeMap": { "type": "string", "description": "JSON encoded mapping of the attendees to breakout rooms `array`" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Attendee map applied successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Room" } } } } } } } } }, "400": { "description": "Applying attendee map is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/breakout-rooms/{token}/request-assistance": { "post": { "operationId": "breakout_room-request-assistance", "summary": "Request assistance", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Assistance requested 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": "Requesting assistance is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "breakout_room-reset-request-for-assistance", "summary": "Reset the request for assistance", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Request for assistance reset 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": "Resetting the request for assistance is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/breakout-rooms/{token}/rooms": { "post": { "operationId": "breakout_room-start-breakout-rooms", "summary": "Start the breakout rooms", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Breakout rooms started successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Room" } } } } } } } } }, "400": { "description": "Starting breakout rooms is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "breakout_room-stop-breakout-rooms", "summary": "Stop the breakout rooms", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Breakout rooms stopped successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Room" } } } } } } } } }, "400": { "description": "Stopping breakout rooms is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/breakout-rooms/{token}/switch": { "post": { "operationId": "breakout_room-switch-breakout-room", "summary": "Switch to another breakout room", "tags": [ "breakout_room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "target" ], "properties": { "target": { "type": "string", "description": "Target breakout room" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Switched to breakout room 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": "Switching to breakout room is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/dashboard/events": { "get": { "operationId": "calendar_integration-get-dashboard-events", "summary": "Get up to 10 rooms that have events in the next 7 days sorted by their start timestamp ascending", "description": "Required capability: `dashboard-event-rooms`", "tags": [ "calendar_integration" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "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": "A list of dashboard entries or an empty array", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardEvent" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/mutual-events": { "get": { "operationId": "calendar_integration-get-mutual-events", "summary": "Get up to 3 events in the next 7 days sorted by their start timestamp ascending", "description": "Required capability: `mutual-calendar-events`", "tags": [ "calendar_integration" ], "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": "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": "A list of dashboard entries or an empty array", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardEvent" } } } } } } } } }, "403": { "description": "Room is not a 1 to 1 room, room is invalid, or user is not 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 } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/call/{token}": { "get": { "operationId": "call-get-peers-for-call", "summary": "Get the peers for a call", "tags": [ "call" ], "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": "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": "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": "List of peers in the call returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/CallPeer" } } } } } } } } } } }, "post": { "operationId": "call-join-call", "summary": "Join a call", "tags": [ "call" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "flags": { "type": "integer", "format": "int64", "nullable": true, "default": null, "description": "In-Call flags", "minimum": 0, "maximum": 15 }, "silent": { "type": "boolean", "default": false, "description": "Join the call silently" }, "recordingConsent": { "type": "boolean", "default": false, "description": "When the user ticked a checkbox and agreed with being recorded (Only needed when the `config => call => recording-consent` capability is set to {@see RecordingService::CONSENT_REQUIRED_YES} or the capability is {@see RecordingService::CONSENT_REQUIRED_OPTIONAL} and the conversation `recordingConsent` value is {@see RecordingService::CONSENT_REQUIRED_YES} )" }, "silentFor": { "type": "array", "default": [], "description": "Send no call notification for previous participants", "items": { "type": "string" } } } } } } }, "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": "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": "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 joined successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true } } } } } } } }, "403": { "description": "Host server of the federated conversation does not allow joining the call", "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": "Call 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 } } } } } } } }, "400": { "description": "No recording consent was given", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } }, "put": { "operationId": "call-update-call-flags", "summary": "Update the in-call flags", "tags": [ "call" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "flags" ], "properties": { "flags": { "type": "integer", "format": "int64", "description": "New flags", "minimum": 0, "maximum": 15 } } } } } }, "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": "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": "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": "In-call flags updated successfully", "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": "Updating in-call flags is not possible", "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": "Call session 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 } } } } } } } } } }, "delete": { "operationId": "call-leave-call", "summary": "Leave a call", "tags": [ "call" ], "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": "all", "in": "query", "description": "whether to also terminate the call for all participants", "schema": { "type": "boolean", "default": false } }, { "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": "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 left successfully", "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": "Call session 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}/call/{token}/download": { "get": { "operationId": "call-download-participants-for-call", "summary": "Download the list of current call participants", "description": "Required capability: `download-call-participants`", "tags": [ "call" ], "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": "format", "in": "query", "description": "Download format", "schema": { "type": "string", "default": "csv", "enum": [ "csv" ] } }, { "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": "List of participants in the call downloaded in the requested format", "content": { "text/csv": { "schema": { "type": "string", "format": "binary" } } } }, "400": { "description": "No call in progress" }, "403": { "description": "Downloading the participants list is not allowed (e.g. classified conversation)" } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/call/{token}/federation": { "post": { "operationId": "call-join-federated-call", "summary": "Join call on the host server using the session id of the federated user", "tags": [ "call" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "sessionId" ], "properties": { "sessionId": { "type": "string", "description": "Federated session id to join with" }, "flags": { "type": "integer", "format": "int64", "nullable": true, "default": null, "description": "In-Call flags", "minimum": 0, "maximum": 15 }, "silent": { "type": "boolean", "default": false, "description": "Join the call silently" }, "recordingConsent": { "type": "boolean", "default": false, "description": "Agreement to be recorded" } } } } } }, "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": "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 joined successfully", "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": "Call 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 } } } } } } } }, "400": { "description": "Conditions to join not met", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } }, "put": { "operationId": "call-update-federated-call-flags", "summary": "Update the in-call flags on the host server using the session id of the federated user", "tags": [ "call" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "sessionId", "flags" ], "properties": { "sessionId": { "type": "string", "description": "Federated session id to update the flags with" }, "flags": { "type": "integer", "format": "int64", "description": "New flags", "minimum": 0, "maximum": 15 } } } } } }, "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": "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": "In-call flags updated successfully", "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": "Updating in-call flags is not possible", "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": "Call session 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 } } } } } } } } } }, "delete": { "operationId": "call-leave-federated-call", "summary": "Leave a call on the host server using the session id of the federated user", "tags": [ "call" ], "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": "sessionId", "in": "query", "description": "Federated session id to leave with", "required": true, "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 left successfully", "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": "Call session 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}/call/{token}/ring/{attendeeId}": { "post": { "operationId": "call-ring-attendee", "summary": "Ring an attendee", "tags": [ "call" ], "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": "attendeeId", "in": "path", "description": "ID of the attendee to ring", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "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": "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": "Attendee rang successfully", "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": "Attendee could not be 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 } } } } } } } }, "400": { "description": "Ringing attendee is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/call/{token}/dialout/{attendeeId}": { "post": { "operationId": "call-sip-dial-out", "summary": "Call a SIP dial-out attendee", "tags": [ "call" ], "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": "attendeeId", "in": "path", "description": "ID of the attendee to call", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Dial-out initiated successfully", "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": "SIP dial-out not possible, e.g. when the conversation is classified", "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 could not be found or is a wrong type", "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 on the server", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" }, "message": { "type": "string" } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/call/{token}/notification-state": { "get": { "operationId": "call_notification-state", "summary": "Check the expected state of a call notification", "description": "Required capability: `call-notification-state-api`", "tags": [ "call" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "name": "token", "in": "path", "description": "Conversation token to check", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Notification should be kept alive", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true } } } } } } } }, "201": { "description": "Dismiss call notification and show \"Missed call\"-notification instead", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true } } } } } } } }, "403": { "description": "Not logged in, try again with auth data sent", "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": "Dismiss call notification", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}": { "post": { "operationId": "chat-send-message", "summary": "Sends a new chat message to the given room", "description": "The author and timestamp are automatically set to the current user/guest and time.", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string", "description": "the message to send" }, "actorDisplayName": { "type": "string", "default": "", "description": "for guests" }, "referenceId": { "type": "string", "default": "", "description": "for the message to be able to later identify it again" }, "replyTo": { "type": "integer", "format": "int64", "default": 0, "description": "Parent id which this message is a reply to", "minimum": 0 }, "replyToToken": { "type": "string", "default": "", "description": "Parent token to which reply is initiated" }, "silent": { "type": "boolean", "default": false, "description": "If sent silent the chat message will not create any notifications" }, "threadTitle": { "type": "string", "default": "", "description": "Only supported when not replying, when given will create a thread (requires `threads` capability)" }, "threadId": { "type": "integer", "format": "int64", "default": 0, "description": "Thread id which this message is a reply to without quoting a specific message (ignored when $replyTo is given, also requires `threads` capability)" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "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": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Message sent successfully", "headers": { "X-Chat-Last-Common-Read": { "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": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/ChatMessageWithParent" } ] } } } } } } } }, "400": { "description": "Sending message is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "403": { "description": "When trying to cross reference wrongly on a reply-private", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "404": { "description": "Actor not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "413": { "description": "Message too long", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "429": { "description": "Mention rate limit exceeded (guests only)", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } }, "get": { "operationId": "chat-receive-messages", "summary": "Receives chat messages from the given room", "description": "- Receiving the history ($lookIntoFuture=0): The next $limit messages after $lastKnownMessageId will be returned. The new $lastKnownMessageId for the follow up query is available as `X-Chat-Last-Given` header.\n- Looking into the future ($lookIntoFuture=1): If there are currently no messages the response will not be sent immediately. Instead, HTTP connection will be kept open waiting for new messages to arrive and, when they do, then the response will be sent. The connection will not be kept open indefinitely, though; the number of seconds to wait for new messages to arrive can be set using the timeout parameter; the default timeout is 30 seconds, maximum timeout is 60 seconds. If the timeout ends a successful but empty response will be sent. If messages have been returned (status=200) the new $lastKnownMessageId for the follow up query is available as `X-Chat-Last-Given` header.\nThe limit specifies the maximum number of messages that will be returned, although the actual number of returned messages could be lower if some messages are not visible to the participant. Note that if none of the messages are visible to the participant the returned number of messages will be 0, yet the status will still be 200. Also note that `X-Chat-Last-Given` may reference a message not visible and thus not returned, but it should be used nevertheless as the $lastKnownMessageId for the follow-up query.", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "lookIntoFuture", "in": "query", "description": "Polling for new messages (1) or getting the history of the chat (0)", "required": true, "schema": { "type": "integer", "format": "int64", "enum": [ 0, 1 ] } }, { "name": "limit", "in": "query", "description": "Number of chat messages to receive (100 by default, 200 at most)", "schema": { "type": "integer", "format": "int64", "default": 100, "minimum": 1, "maximum": 200 } }, { "name": "lastKnownMessageId", "in": "query", "description": "The last known message (serves as offset)", "schema": { "type": "integer", "format": "int64", "default": 0, "minimum": 0 } }, { "name": "lastCommonReadId", "in": "query", "description": "The last known common read message (so the response is 200 instead of 304 when it changes even when there are no messages)", "schema": { "type": "integer", "format": "int64", "default": 0, "minimum": 0 } }, { "name": "timeout", "in": "query", "description": "Number of seconds to wait for new messages (30 by default, 30 at most)", "schema": { "type": "integer", "format": "int64", "default": 30, "minimum": 0, "maximum": 30 } }, { "name": "setReadMarker", "in": "query", "description": "Automatically set the last read marker when 1, if your client does this itself via chat/{token}/read set to 0", "schema": { "type": "integer", "format": "int64", "default": 1, "enum": [ 0, 1 ] } }, { "name": "includeLastKnown", "in": "query", "description": "Include the $lastKnownMessageId in the messages when 1 (default 0)", "schema": { "type": "integer", "format": "int64", "default": 0, "enum": [ 0, 1 ] } }, { "name": "noStatusUpdate", "in": "query", "description": "When the user status should not be automatically set to online set to 1 (default 0)", "schema": { "type": "integer", "format": "int64", "default": 0, "enum": [ 0, 1 ] } }, { "name": "markNotificationsAsRead", "in": "query", "description": "Set to 0 when notifications should not be marked as read (default 1)", "schema": { "type": "integer", "format": "int64", "default": 1, "enum": [ 0, 1 ] } }, { "name": "threadId", "in": "query", "description": "Limit the chat message list to a given thread", "schema": { "type": "integer", "format": "int64", "default": 0, "minimum": 0 } }, { "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": "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": "Messages returned", "headers": { "X-Chat-Last-Common-Read": { "schema": { "type": "string" } }, "X-Chat-Last-Given": { "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": { "type": "array", "items": { "$ref": "#/components/schemas/ChatMessageWithParent" } } } } } } } } }, "304": { "description": "No messages" }, "404": { "description": "Thread not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "thread" ] } } } } } } } } } } } }, "delete": { "operationId": "chat-clear-history", "summary": "Clear the chat history", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "History cleared successfully", "headers": { "X-Chat-Last-Common-Read": { "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/ChatMessage" } } } } } } } }, "202": { "description": "History cleared successfully, but Federation or Matterbridge is configured, so the information can be replicated elsewhere", "headers": { "X-Chat-Last-Common-Read": { "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/ChatMessage" } } } } } } } }, "403": { "description": "Missing permissions to clear history", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/schedule": { "get": { "operationId": "chat-get-scheduled-messages", "summary": "Get all scheduled messages of a given room and participant", "description": "The author and timestamp are automatically set to the current user and time.\nRequired capability: `scheduled-messages`", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "All scheduled messages for this room and participant", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ScheduledMessage" } } } } } } } } }, "404": { "description": "Actor not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "actor" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "post": { "operationId": "chat-schedule-message", "summary": "Schedules the sending of a new chat message to the given room", "description": "The author and timestamp are automatically set to the current user and time.\nRequired capability: `scheduled-messages`", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "message", "sendAt" ], "properties": { "message": { "type": "string", "description": "The message to send" }, "sendAt": { "type": "integer", "format": "int64", "description": "When to send the scheduled message" }, "replyTo": { "type": "integer", "format": "int64", "default": 0, "description": "Parent id which this scheduled message is a reply to", "minimum": 0 }, "silent": { "type": "boolean", "default": false, "description": "If sent silent the scheduled message will not create any notifications when sent" }, "threadTitle": { "type": "string", "default": "", "description": "Only supported when not replying, when given will create a thread (requires `threads` capability)" }, "threadId": { "type": "integer", "format": "int64", "default": 0, "description": "Thread id without quoting a specific message (requires `threads` capability)" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Message scheduled 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/ScheduledMessage" } } } } } } } }, "400": { "description": "Scheduling the message is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "message", "reply-to", "send-at" ] } } } } } } } } } }, "403": { "description": "When trying to cross reference wrongly on a reply-private", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "reply-to" ] } } } } } } } } } }, "413": { "description": "Message too long", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "message" ] } } } } } } } } } }, "404": { "description": "Actor not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "actor" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/schedule/{messageId}": { "post": { "operationId": "chat-edit-scheduled-message", "summary": "Update a scheduled message", "description": "Required capability: `scheduled-messages`", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "message", "sendAt" ], "properties": { "message": { "type": "string", "description": "The scheduled message to send" }, "sendAt": { "type": "integer", "format": "int64", "description": "When to send the scheduled message" }, "silent": { "type": "boolean", "default": false, "description": "If sent silent the scheduled message will not create any notifications" }, "threadTitle": { "type": "string", "default": "", "description": "The thread title if scheduled message is creating a thread" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "The scheduled message id", "required": true, "schema": { "type": "string", "pattern": "^[0-9]+$" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "202": { "description": "Message updated 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/ScheduledMessage" } } } } } } } }, "400": { "description": "Editing scheduled message is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "message", "send-at", "thread-title" ] } } } } } } } } } }, "413": { "description": "Message too long", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "message" ] } } } } } } } } } }, "404": { "description": "Actor not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "actor", "message" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "chat-delete-schedule-message", "summary": "Delete a scheduled message", "description": "Required capability: `scheduled-messages`", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "The scheduled message id", "required": true, "schema": { "type": "string", "pattern": "^[0-9]+$" } }, { "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": "Message deleted", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object" } } } } } } } }, "404": { "description": "Message not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "actor", "message" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/share": { "post": { "operationId": "chat-share-object-to-chat", "summary": "Sends a rich-object to the given room", "description": "The author and timestamp are automatically set to the current user/guest and time.", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "objectType", "objectId" ], "properties": { "objectType": { "type": "string", "description": "Type of the object" }, "objectId": { "type": "string", "description": "ID of the object" }, "metaData": { "type": "string", "default": "", "description": "Additional metadata, sample value: `{\\\"type\\\":\\\"geo-location\\\",\\\"id\\\":\\\"geo:52.5450511,13.3741463\\\",\\\"name\\\":\\\"Nextcloud Berlin Office\\\",\\\"latitude\\\":\\\"52.5450511\\\",\\\"longitude\\\":\\\"13.3741463\\\"}`" }, "actorDisplayName": { "type": "string", "default": "", "description": "Guest name" }, "referenceId": { "type": "string", "default": "", "description": "Reference ID" }, "threadId": { "type": "integer", "format": "int64", "default": 0, "description": "Thread id which this message is a reply to without quoting a specific message (also requires `threads` capability)" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Object shared successfully", "headers": { "X-Chat-Last-Common-Read": { "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": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/ChatMessageWithParent" } ] } } } } } } } }, "400": { "description": "Sharing object is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "404": { "description": "Actor not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "413": { "description": "Message too long", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } }, "get": { "operationId": "chat-get-objects-shared-in-room", "summary": "Get objects that are shared in the room", "description": "Federated conversations are supported with the `federated-shared-items` capability", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "objectType", "in": "query", "description": "Type of the objects", "required": true, "schema": { "type": "string" } }, { "name": "lastKnownMessageId", "in": "query", "description": "ID of the last known message", "schema": { "type": "integer", "format": "int64", "default": 0, "minimum": 0 } }, { "name": "limit", "in": "query", "description": "Maximum number of objects", "schema": { "type": "integer", "format": "int64", "default": 100, "minimum": 1, "maximum": 200 } }, { "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": "List of shared objects messages returned", "headers": { "X-Chat-Last-Given": { "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": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ChatMessage" } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/summarize": { "post": { "operationId": "chat-summarize-chat", "summary": "Summarize the next bunch of chat messages from a given offset", "description": "Required capability: `chat-summary-api`", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "fromMessageId" ], "properties": { "fromMessageId": { "type": "integer", "format": "int64", "description": "Offset from where on the summary should be generated", "minimum": 1 } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Summary was scheduled, use the returned taskId to get the status information and output from the TaskProcessing API: [OCS TaskProcessing API](https://docs.nextcloud.com/server/latest/developer_manual/client_apis/OCS/ocs-taskprocessing-api.html#fetch-a-task-by-id). If the response data contains nextOffset, not all messages could be handled in a single request. After receiving the response a second summary should be requested with the provided nextOffset.", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "taskId" ], "properties": { "taskId": { "type": "integer", "format": "int64" }, "nextOffset": { "type": "integer", "format": "int64" } } } } } } } } } }, "400": { "description": "The conversation is classified", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "ai-no-provider", "ai-error", "classified" ] } } } } } } } } } }, "204": { "description": "No messages found to summarize" }, "500": { "description": "", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/{messageId}/context": { "get": { "operationId": "chat-get-message-context", "summary": "Get the context of a message", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "The focused message which should be in the \"middle\" of the returned context", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "name": "limit", "in": "query", "description": "Number of chat messages to receive in both directions (50 by default, 100 at most, might return 201 messages)", "schema": { "type": "integer", "format": "int64", "default": 50, "minimum": 0, "maximum": 100 } }, { "name": "threadId", "in": "query", "description": "Limit the chat message list to a given thread", "schema": { "type": "integer", "format": "int64", "default": 0, "minimum": 0 } }, { "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": "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": "Message context returned", "headers": { "X-Chat-Last-Common-Read": { "schema": { "type": "string" } }, "X-Chat-Last-Given": { "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": { "type": "array", "items": { "$ref": "#/components/schemas/ChatMessageWithParent" } } } } } } } } }, "304": { "description": "No messages" }, "404": { "description": "Thread not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "thread" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/{messageId}": { "delete": { "operationId": "chat-delete-message", "summary": "Delete a chat message", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Message deleted successfully", "headers": { "X-Chat-Last-Common-Read": { "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/ChatMessageWithParent" } } } } } } } }, "202": { "description": "Message deleted successfully, but a bot or Matterbridge is configured, so the information can be replicated elsewhere", "headers": { "X-Chat-Last-Common-Read": { "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/ChatMessageWithParent" } } } } } } } }, "400": { "description": "Deleting message is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "403": { "description": "Missing permissions to delete message", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "404": { "description": "Message not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "405": { "description": "Deleting this message type is not allowed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } }, "put": { "operationId": "chat-edit-message", "summary": "Edit a chat message", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string", "description": "the message to send" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Message edited successfully", "headers": { "X-Chat-Last-Common-Read": { "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/ChatMessageWithParent" } } } } } } } }, "202": { "description": "Message edited successfully, but a bot or Matterbridge is configured, so the information can be replicated to other services", "headers": { "X-Chat-Last-Common-Read": { "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/ChatMessageWithParent" } } } } } } } }, "400": { "description": "Editing message is not possible, e.g. when the new message is empty or the message is too old", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "403": { "description": "Missing permissions to edit message", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "404": { "description": "Message not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "405": { "description": "Editing this message type is not allowed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "413": { "description": "Message too long", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/{messageId}/reminder": { "post": { "operationId": "chat-set-reminder", "summary": "Set a reminder for a chat message", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "timestamp" ], "properties": { "timestamp": { "type": "integer", "format": "int64", "description": "Timestamp of the reminder", "minimum": 0 } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Reminder 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/ChatReminder" } } } } } } } }, "404": { "description": "Message not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "get": { "operationId": "chat-get-reminder", "summary": "Get the reminder for a chat message", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Reminder 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/ChatReminder" } } } } } } } }, "404": { "description": "No reminder found or message not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "chat-delete-reminder", "summary": "Delete a chat reminder", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Reminder deleted successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "properties": { "error": { "type": "string" } } } } } } } } } }, "404": { "description": "Message not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/upcoming-reminders": { "get": { "operationId": "chat-get-upcoming-reminders", "summary": "Get all upcoming reminders", "description": "Required capability: `upcoming-reminders`", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "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": "Reminders returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ChatReminderUpcoming" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/read": { "post": { "operationId": "chat-set-read-marker", "summary": "Set the read marker to a specific message", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "lastReadMessage": { "type": "integer", "format": "int64", "nullable": true, "default": null, "description": "ID if the last read message (Optional only with `chat-read-last` capability)", "minimum": -2 } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "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": "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": "Read marker set successfully", "headers": { "X-Chat-Last-Common-Read": { "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" } } } } } } } } } }, "delete": { "operationId": "chat-mark-unread", "summary": "Mark a chat as unread", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "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": "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": "Read marker set successfully", "headers": { "X-Chat-Last-Common-Read": { "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" } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/share/overview": { "get": { "operationId": "chat-get-objects-shared-in-room-overview", "summary": "Get objects that are shared in the room overview", "description": "Federated conversations are supported with the `federated-shared-items` capability", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "limit", "in": "query", "description": "Maximum number of objects", "schema": { "type": "integer", "format": "int64", "default": 7, "minimum": 1, "maximum": 20 } }, { "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": "List of shared objects messages of each type returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/components/schemas/ChatMessage" } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/{messageId}/pin": { "post": { "operationId": "chat-pin-message", "summary": "Pin a message in a chat as a moderator", "description": "Required capability: `pinned-messages`", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "pinUntil": { "type": "integer", "format": "int64", "default": 0, "description": "Unix timestamp when to unpin the message", "minimum": 0 } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Message was pinned successfully", "headers": { "X-Chat-Last-Common-Read": { "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": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/ChatMessageWithParent" } ] } } } } } } } }, "400": { "description": "Message could not be pinned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "message", "until", "status" ] } } } } } } } } } }, "404": { "description": "Message 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": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "message", "until", "status" ] } } } } } } } } } } } }, "delete": { "operationId": "chat-unpin-message", "summary": "Unpin a message in a chat as a moderator", "description": "Required capability: `pinned-messages`", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Message is not pinned now", "headers": { "X-Chat-Last-Common-Read": { "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": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/ChatMessageWithParent" } ] } } } } } } } }, "400": { "description": "Federation request answered with an unknown status code", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "status" ] } } } } } } } } } }, "404": { "description": "Message 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": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "message" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/{messageId}/pin/self": { "delete": { "operationId": "chat-hide-pinned-message", "summary": "Hide a message in a chat as a user", "description": "Required capability: `pinned-messages`", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Pinned message is now hidden", "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": "Message 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": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/mentions": { "get": { "operationId": "chat-mentions", "summary": "Search for mentions", "tags": [ "chat" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "search", "in": "query", "description": "Text to search for", "required": true, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "description": "Maximum number of results", "schema": { "type": "integer", "format": "int64", "default": 20 } }, { "name": "includeStatus", "in": "query", "description": "Include the user statuses", "schema": { "type": "boolean", "default": false } }, { "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": "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": "List of mention suggestions returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ChatMentionSuggestion" } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/attachment/folder": { "post": { "operationId": "chat-probe-attachment-folder", "summary": "Prepare the conversation attachment folder and probe filename conflicts", "description": "Creates the caller's conversation subfolder (and the room share) if not yet present, then creates or returns a Draft folder for staging uploads. Simulates the rename-on-conflict logic for each requested filename without requiring the files to already exist.\nThe returned `folder` is the Draft path — a staging area that is NOT shared with the room, so other participants cannot see in-progress uploads or files from aborted messages. Files are moved into the shared subfolder atomically when the attachment endpoint is called.\nRecommended client flow: 1. Call this endpoint to obtain the Draft folder path and predicted final names. 2. Display the predicted names as accessibility placeholders immediately. 3. Upload each file to a random temporary name (e.g. a UUID) inside the returned Draft folder — do NOT upload to the predicted final name. 4. Call the attachment endpoint with the temp path as `filePath` and the original desired name as `fileName`. The server moves the file from Draft into the shared subfolder, resolves any conflicts, and posts the message.", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "fileNames": { "type": "array", "default": [], "description": "Desired filenames to probe", "items": { "type": "string" } }, "allowUpdate": { "type": "boolean", "default": false, "description": "Allow recipients to modify shared files" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Draft folder path and rename map returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "folder", "renames" ], "properties": { "folder": { "type": "string" }, "renames": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } } } } } } } } } } } }, "500": { "description": "Could not prepare the conversation folder", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "507": { "description": "User storage quota exceeded", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "501": { "description": "Conversation subfolders feature is disabled", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/attachment": { "post": { "operationId": "chat-post-attachment-to-room", "summary": "Post a file from the conversation Draft folder as a chat message", "description": "The file must be inside the Draft folder returned by the probe endpoint. This endpoint moves the file from Draft into the shared conversation subfolder (resolving any name conflicts), creates the chat message, and returns the actual final filename. The subfolder is shared with the room via a folder-level TYPE_ROOM share — no per-file share is created, keeping the Share Overview clean.", "tags": [ "chat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "filePath", "referenceId" ], "properties": { "filePath": { "type": "string", "description": "Path of the file relative to the user's home root (e.g. \"Talk/Group Chat-abc123/Draft/uuid.jpg\")" }, "referenceId": { "type": "string", "description": "Client-generated reference ID for the message" }, "talkMetaData": { "type": "string", "default": "", "description": "JSON-encoded metadata (caption, messageType, silent, …)" }, "fileName": { "type": "string", "default": "", "description": "Desired final file name; the service resolves conflicts by appending \" (1)\", \" (2)\", … if already taken" }, "allowUpdate": { "type": "boolean", "default": false, "description": "Allow recipients to modify shared files" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "File moved from Draft and posted as chat message", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "renames" ], "properties": { "renames": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } } } } } } } } } } } }, "404": { "description": "File not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "422": { "description": "File is not inside the conversation Draft folder for this room", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "500": { "description": "Could not prepare the conversation folder", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "507": { "description": "User storage quota exceeded", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "400": { "description": "Path does not point to a file", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "501": { "description": "Conversation subfolders feature is disabled", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/tags": { "get": { "operationId": "conversation_tag-get-tags", "summary": "Get all conversation tags for the current user", "description": "Required capability: `conversation-tags`", "tags": [ "conversation_tag" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "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": "Tags returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ConversationTag" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "post": { "operationId": "conversation_tag-create-tag", "summary": "Create a new conversation tag", "description": "Required capability: `conversation-tags`", "tags": [ "conversation_tag" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "description": "Name of the tag" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Tag 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/ConversationTag" } } } } } } } }, "400": { "description": "Invalid or duplicate name, or the user has reached the tag limit", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "name", "limit" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/tags/{tagId}": { "put": { "operationId": "conversation_tag-update-tag", "summary": "Update a conversation tag", "description": "Required capability: `conversation-tags`", "tags": [ "conversation_tag" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "description": "New name for the tag" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "name": "tagId", "in": "path", "description": "ID of the tag", "required": true, "schema": { "type": "string", "pattern": "^\\d+$" } }, { "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": "Tag updated", "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/ConversationTag" } } } } } } } }, "400": { "description": "Invalid or duplicate name, or the tag is a built-in and cannot be renamed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "name", "type" ] } } } } } } } } } }, "404": { "description": "Tag 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 } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "conversation_tag-delete-tag", "summary": "Delete a conversation tag", "description": "Required capability: `conversation-tags`", "tags": [ "conversation_tag" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "name": "tagId", "in": "path", "description": "ID of the tag", "required": true, "schema": { "type": "string", "pattern": "^\\d+$" } }, { "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": "Tag deleted", "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": "The tag is a built-in and cannot be deleted", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "type" ] } } } } } } } } } }, "404": { "description": "Tag 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 } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/tags/reorder": { "put": { "operationId": "conversation_tag-reorder-tags", "summary": "Reorder conversation tags", "description": "Required capability: `conversation-tags`", "tags": [ "conversation_tag" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "orderedIds" ], "properties": { "orderedIds": { "type": "array", "description": "Ordered list of tag IDs", "items": { "type": "string" } } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "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": "Tags reordered", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ConversationTag" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/tags/{tagId}/collapsed": { "put": { "operationId": "conversation_tag-update-tag-collapsed", "summary": "Set the collapsed state of a conversation tag", "description": "Required capability: `conversation-tags`", "tags": [ "conversation_tag" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "collapsed" ], "properties": { "collapsed": { "type": "boolean", "description": "Whether the tag should be collapsed" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "name": "tagId", "in": "path", "description": "ID of the tag", "required": true, "schema": { "type": "string", "pattern": "^\\d+$" } }, { "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": "Collapsed state updated", "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/ConversationTag" } } } } } } } }, "404": { "description": "Tag 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 } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/file/{fileId}": { "get": { "operationId": "files_integration-get-room-by-file-id", "summary": "Get the token of the room associated to the given file id", "description": "This is the counterpart of self::getRoomByShareToken() for file ids instead of share tokens, although both return the same room token if the given file id and share token refer to the same file.\nIf there is no room associated to the given file id a new room is created; the new room is a public room associated with a \"file\" object with the given file id. Unlike normal rooms in which the owner is the user that created the room these are special rooms without owner (although self joined users with direct access to the file become persistent participants automatically when they join until they explicitly leave or no longer have access to the file).\nIn any case, to create or even get the token of the room, the file must be shared and the user must be the owner of a public share of the file (like a link share, for example) or have direct access to that file; an error is returned otherwise. A user has direct access to a file if they have access to it (or to an ancestor) through a user, group, circle or room share (but not through a link share, for example), or if they are the owner of such a file.", "tags": [ "files_integration" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "fileId", "in": "path", "description": "ID of the file", "required": true, "schema": { "type": "string", "pattern": "^.+$" } }, { "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 token returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "token" ], "properties": { "token": { "type": "string" } } } } } } } } } }, "400": { "description": "Rooms not allowed for shares", "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": "Share not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/publicshare/{shareToken}": { "get": { "operationId": "files_integration-get-room-by-share-token", "summary": "Returns the token of the room associated to the file of the given share token", "description": "This is the counterpart of self::getRoomByFileId() for share tokens instead of file ids, although both return the same room token if the given file id and share token refer to the same file.\nIf there is no room associated to the file id of the given share token a new room is created; the new room is a public room associated with a \"file\" object with the file id of the given share token. Unlike normal rooms in which the owner is the user that created the room these are special rooms without owner (although self joined users with direct access to the file become persistent participants automatically when they join until they explicitly leave or no longer have access to the file).\nIn any case, to create or even get the token of the room, the file must be publicly shared (like a link share, for example); an error is returned otherwise.\nBesides the token of the room this also returns the current user ID and display name, if any; this is needed by the Talk sidebar to know the actual current user, as the public share page uses the incognito mode and thus logged-in users as seen as guests.", "tags": [ "files_integration" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "shareToken", "in": "path", "description": "Token of the file share", "required": true, "schema": { "type": "string", "pattern": "^.+$" } }, { "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 token and user info returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "token", "userId", "userDisplayName" ], "properties": { "token": { "type": "string" }, "userId": { "type": "string" }, "userDisplayName": { "type": "string" } } } } } } } } } }, "400": { "description": "Rooms not allowed for shares", "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": "Share 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}/guest/{token}/name": { "post": { "operationId": "guest-set-display-name", "summary": "Set the display name as a guest", "tags": [ "guest" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "displayName" ], "properties": { "displayName": { "type": "string", "description": "New display name" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Display name updated successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true } } } } } } } }, "403": { "description": "Not a guest", "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": "Not 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 } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/live-transcription/{token}": { "post": { "operationId": "live_transcription-enable", "summary": "Enable the live transcription", "tags": [ "live_transcription" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Live transcription enabled successfully", "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": "The conversation is classified", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "app", "classified", "in-call" ] } } } } } } } } } } } }, "delete": { "operationId": "live_transcription-disable", "summary": "Disable the live transcription", "tags": [ "live_transcription" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Live transcription stopped successfully", "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": "The participant is not in the call", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "app", "in-call" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/live-transcription/languages": { "get": { "operationId": "live_transcription-get-available-languages", "summary": "Get available languages for live transcriptions", "tags": [ "live_transcription" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "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": "Available languages got successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/LiveTranscriptionLanguage" } } } } } } } } }, "400": { "description": "The external app \"live_transcription\" is not available", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "app" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/live-transcription/translation-languages": { "get": { "operationId": "live_transcription-get-available-translation-languages", "summary": "Get available languages for live translations", "description": "The returned array provides a list of origin languages (\"originLanguages\") and a list of target languages (\"targetLanguages\"). Any origin language can be translated to any target language.\nThe origin language list can contain \"detect_language\" as a special value indicating auto-detection support.\ntranslations are not supported.", "tags": [ "live_transcription" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "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": "Available languages got successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "originLanguages", "targetLanguages", "defaultTargetLanguageId" ], "properties": { "originLanguages": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/LiveTranscriptionLanguage" } }, "targetLanguages": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/LiveTranscriptionLanguage" } }, "defaultTargetLanguageId": { "type": "string" } } } } } } } } } }, "400": { "description": "The external app \"live_transcription\" is not available or", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "app", "translations" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/live-transcription/{token}/language": { "post": { "operationId": "live_transcription-set-language", "summary": "Set language for live transcriptions", "tags": [ "live_transcription" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "languageId" ], "properties": { "languageId": { "type": "string", "description": "the ID of the language to set" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Language set successfully", "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": "The conversation is classified", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "app", "classified" ] } } } } } } } } } }, "403": { "description": "Participant is not a moderator", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "app" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/live-transcription/{token}/target-language": { "post": { "operationId": "live_transcription-set-target-language", "summary": "Set target language for live translations", "description": "Each participant can set the language in which they want to receive the translations.\nSetting the target language is possible only during a call and immediately enables the translations. Translations can be disabled by sending a null value as the language id.\ntranslations are not supported.", "tags": [ "live_transcription" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "targetLanguageId" ], "properties": { "targetLanguageId": { "type": "string", "description": "the ID of the language to set" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Target language set successfully", "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": "The conversation is classified", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "app", "classified", "translations", "in-call" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/bridge/{token}": { "get": { "operationId": "matterbridge-get-bridge-of-room", "summary": "Get bridge information of one room", "tags": [ "matterbridge" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Return list of configured bridges", "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/MatterbridgeWithProcessState" } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "put": { "operationId": "matterbridge-edit-bridge-of-room", "summary": "Edit bridge information of one room", "tags": [ "matterbridge" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean", "description": "If the bridge should be enabled" }, "parts": { "$ref": "#/components/schemas/MatterbridgeConfigFields", "default": [], "description": "New parts" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Bridge edited 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/MatterbridgeProcessState" } } } } } } } }, "406": { "description": "Editing bridge is not possible, e.g. when the conversation is classified", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "matterbridge-delete-bridge-of-room", "summary": "Delete bridge of one room", "tags": [ "matterbridge" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Bridge deleted successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "boolean" } } } } } } } }, "406": { "description": "Deleting bridge is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/bridge/{token}/process": { "get": { "operationId": "matterbridge-get-bridge-process-state", "summary": "Get bridge process information", "tags": [ "matterbridge" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Return list of running processes", "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/MatterbridgeProcessState" } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/poll/{token}": { "post": { "operationId": "poll-create-poll", "summary": "Create a poll", "tags": [ "poll" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "question", "options", "resultMode", "maxVotes" ], "properties": { "question": { "type": "string", "description": "Question of the poll" }, "options": { "type": "array", "description": "Options of the poll", "items": { "type": "string" } }, "resultMode": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "Mode how the results will be shown" }, "maxVotes": { "type": "integer", "format": "int64", "description": "Number of maximum votes per voter" }, "draft": { "type": "boolean", "default": false, "description": "Whether the poll should be saved as a draft (only allowed for moderators and with `talk-polls-drafts` capability)" }, "threadId": { "type": "integer", "format": "int64", "default": 0, "description": "Thread id which this poll should be posted into (also requires `threads` capability)" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "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": "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": "Draft 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/PollDraft" } } } } } } } }, "201": { "description": "Poll 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/Poll" } } } } } } } }, "400": { "description": "Creating poll is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "draft", "options", "poll", "question", "room" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/poll/{token}/draft/{pollId}": { "post": { "operationId": "poll-update-draft-poll", "summary": "Modify a draft poll", "description": "Required capability: `edit-draft-poll`", "tags": [ "poll" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "question", "options", "resultMode", "maxVotes" ], "properties": { "question": { "type": "string", "description": "Question of the poll" }, "options": { "type": "array", "description": "Options of the poll", "items": { "type": "string" } }, "resultMode": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "Mode how the results will be shown" }, "maxVotes": { "type": "integer", "format": "int64", "description": "Number of maximum votes per voter" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "pollId", "in": "path", "description": "The poll id", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "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": "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": "Draft modified 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/PollDraft" } } } } } } } }, "400": { "description": "Modifying poll is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "draft", "options", "poll", "question", "room" ] } } } } } } } } } }, "403": { "description": "No permission to modify this poll", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "draft", "options", "poll", "question", "room" ] } } } } } } } } } }, "404": { "description": "No draft poll exists", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "draft", "options", "poll", "question", "room" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/poll/{token}/drafts": { "get": { "operationId": "poll-get-all-draft-polls", "summary": "Get all drafted polls", "description": "Required capability: `talk-polls-drafts`", "tags": [ "poll" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "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": "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": "Poll returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/PollDraft" } } } } } } } } }, "403": { "description": "User is not a moderator", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } }, "404": { "description": "Poll not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/poll/{token}/{pollId}": { "get": { "operationId": "poll-show-poll", "summary": "Get a poll", "tags": [ "poll" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "pollId", "in": "path", "description": "ID of the poll", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Poll 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/Poll" } } } } } } } }, "404": { "description": "Poll not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } }, "post": { "operationId": "poll-vote-poll", "summary": "Vote on a poll", "tags": [ "poll" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "optionIds": { "type": "array", "default": [], "description": "IDs of the selected options", "items": { "type": "integer", "format": "int64" } } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "pollId", "in": "path", "description": "ID of the poll", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Voted 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/Poll" } } } } } } } }, "400": { "description": "Voting is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "404": { "description": "Poll not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } }, "delete": { "operationId": "poll-close-poll", "summary": "Close a poll", "tags": [ "poll" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "pollId", "in": "path", "description": "ID of the poll", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Poll closed 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/Poll" } } } } } } } }, "202": { "description": "Poll draft was deleted successfully", "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": "Poll already closed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "draft", "options", "poll", "question", "room" ] } } } } } } } } } }, "403": { "description": "Missing permissions to close poll", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "draft", "options", "poll", "question", "room" ] } } } } } } } } } }, "404": { "description": "Poll not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "draft", "options", "poll", "question", "room" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/poll/{token}/{pollId}/export/{format}": { "get": { "operationId": "poll-export-poll", "summary": "Export poll results as a spreadsheet", "tags": [ "poll" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "pollId", "in": "path", "description": "ID of the poll", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "name": "format", "in": "path", "description": "Export format", "required": true, "schema": { "type": "string", "enum": [ "ods", "csv" ], "pattern": "^(ods|csv)$" } }, { "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": "Poll exported successfully", "content": { "application/vnd.oasis.opendocument.spreadsheet": { "schema": { "type": "string", "format": "binary" } }, "text/csv": { "schema": { "type": "string", "format": "binary" } } } }, "403": { "description": "Missing permissions to export poll", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "404": { "description": "Poll not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/presets/room": { "get": { "operationId": "preset-get-presets", "summary": "Get the list of available presets", "description": "Required capability: `conversation-presets`\nPresets come with 2 special presets: `forced` and `default`: - The default contains the before \"presets\" state by default, but administration can set different default values, which will then be preselected, but can still be changed by users. - If a parameter is listed in forced, the value will always be used, independent of the user selection or the value from the preset. So order of applying is: \"default\" preset > selected preset > user selection > \"forced\" preset", "tags": [ "preset" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "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": "Successfully got presets", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ConversationPreset" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/publicshareauth": { "post": { "operationId": "public_share_auth-create-room", "summary": "Creates a new room for video verification (requesting the password of a share)", "description": "The new room is a public room associated with a \"share:password\" object with the ID of the share token. Unlike normal rooms in which the owner is the user that created the room these are special rooms always created by a guest or user on behalf of a registered user, the sharer, who will be the owner of the room.\nThe share must have \"send password by Talk\" enabled; an error is returned otherwise.", "tags": [ "files_integration" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "shareToken" ], "properties": { "shareToken": { "type": "string", "description": "Token of the file share" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "201": { "description": "Room created successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "token", "name", "displayName" ], "properties": { "token": { "type": "string" }, "name": { "type": "string" }, "displayName": { "type": "string" } } } } } } } } } }, "404": { "description": "Share 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}/reaction/{token}/{messageId}": { "post": { "operationId": "reaction-react", "summary": "Add a reaction to a message", "tags": [ "reaction" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "reaction" ], "properties": { "reaction": { "type": "string", "description": "Emoji to add" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Reaction already existed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/components/schemas/Reaction" } } } } } } } } } }, "201": { "description": "Reaction added successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/components/schemas/Reaction" } } } } } } } } } }, "400": { "description": "Adding reaction is not possible", "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": "Message 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 } } } } } } } } } }, "delete": { "operationId": "reaction-delete", "summary": "Delete a reaction from a message", "tags": [ "reaction" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "name": "reaction", "in": "query", "description": "Emoji to remove", "required": true, "schema": { "type": "string" } }, { "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": "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": "Reaction deleted successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/components/schemas/Reaction" } } } } } } } } } }, "400": { "description": "Deleting reaction is not possible", "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": "Message 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 } } } } } } } } } }, "get": { "operationId": "reaction-get-reactions", "summary": "Get a list of reactions for a message", "tags": [ "reaction" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "ID of the message", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "name": "reaction", "in": "query", "description": "Emoji to filter", "schema": { "type": "string", "nullable": true } }, { "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": "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": "Reactions returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/components/schemas/Reaction" } } } } } } } } } }, "404": { "description": "Message or reaction 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}/recording/{token}": { "post": { "operationId": "recording-start", "summary": "Start the recording", "description": "Required capability: `recording-v1`", "tags": [ "recording" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "integer", "format": "int64", "description": "Type of the recording" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Recording started successfully", "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": "Starting recording is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "recording-stop", "summary": "Stop the recording", "description": "Required capability: `recording-v1`", "tags": [ "recording" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Recording stopped successfully", "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": "Stopping recording is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/recording/{token}/notification": { "delete": { "operationId": "recording-notification-dismiss", "summary": "Dismiss the store call recording notification", "tags": [ "recording" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "timestamp", "in": "query", "description": "Timestamp of the notification to be dismissed", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "Notification dismissed successfully", "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": "Dismissing notification is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/recording/{token}/share-chat": { "post": { "operationId": "recording-share-to-chat", "summary": "Share the recorded file to the chat", "tags": [ "recording" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "fileId", "timestamp" ], "properties": { "fileId": { "type": "integer", "format": "int64", "description": "ID of the file", "minimum": 0 }, "timestamp": { "type": "integer", "format": "int64", "description": "Timestamp of the notification to be dismissed", "minimum": 0 } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Recording shared to chat successfully", "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": "Sharing recording to chat is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room": { "get": { "operationId": "room-get-rooms", "summary": "Get all currently existent rooms which the user has joined", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "name": "noStatusUpdate", "in": "query", "description": "When the user status should not be automatically set to online set to 1 (default 0)", "schema": { "type": "integer", "format": "int64", "default": 0, "enum": [ 0, 1 ] } }, { "name": "includeStatus", "in": "query", "description": "Include the user status", "schema": { "type": "boolean", "default": false } }, { "name": "modifiedSince", "in": "query", "description": "Filter rooms modified after a timestamp", "schema": { "type": "integer", "format": "int64", "default": 0, "minimum": 0 } }, { "name": "includeLastMessage", "in": "query", "description": "Include the last message, clients should opt-out when only rendering a compact list", "schema": { "type": "boolean", "default": true } }, { "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": "Return list of rooms", "headers": { "X-Nextcloud-Talk-Hash": { "schema": { "type": "string" } }, "X-Nextcloud-Talk-Modified-Before": { "schema": { "type": "string" } }, "X-Nextcloud-Talk-Federation-Invites": { "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": { "type": "array", "items": { "$ref": "#/components/schemas/Room" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "post": { "operationId": "room-create-room", "summary": "Create a room with a user, a group or a circle", "description": "With the `conversation-creation-all` capability a lot of new options where introduced. Before that only `$roomType`, `$roomName`, `$objectType` and `$objectId` were supported all the time, and `$password` with the `conversation-creation-password` capability In case the `$roomType` is {@see Room::TYPE_ONE_TO_ONE} only the `$invite` or `$participants` parameter is supported.\nThe endpoint can also be used unauthenticated by an external call service by signing the request with the configured shared secret via the `x-nextcloud-talk-external-service-random` and `x-nextcloud-talk-external-service-checksum` headers (SHA256-HMAC of the random seed and the `$owner` user ID).", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "roomType": { "type": "integer", "format": "int64", "description": "Type of the room" }, "invite": { "type": "string", "deprecated": true, "default": "", "description": "User, group, … ID to invite Deprecated: Use the `$participants` array instead" }, "roomName": { "type": "string", "default": "", "description": "Name of the room, unless the legacy mode providing `$invite` and `$source` is used, the name must no longer be empty with the `conversation-creation-all` capability (Ignored if `$roomType` is {@see Room::TYPE_ONE_TO_ONE})" }, "source": { "type": "string", "deprecated": true, "default": "", "description": "Source of the invite ID ('circles' to create a room with a circle, etc.) Deprecated: Use the `$participants` array instead" }, "objectType": { "type": "string", "default": "", "description": "Type of the object (Ignored if `$roomType` is {@see Room::TYPE_ONE_TO_ONE})" }, "objectId": { "type": "string", "default": "", "description": "ID of the object (Ignored if `$roomType` is {@see Room::TYPE_ONE_TO_ONE})" }, "password": { "type": "string", "default": "", "description": "The room password (only available with `conversation-creation-password` capability) (Ignored if `$roomType` is not {@see Room::TYPE_PUBLIC})" }, "readOnly": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "Read only state of the conversation (Default writable) (only available with `conversation-creation-all` capability)" }, "listable": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2 ], "description": "Scope where the conversation is listable (Default not listable for anyone) (only available with `conversation-creation-all` capability)" }, "messageExpiration": { "type": "integer", "format": "int64", "default": 0, "description": "Seconds after which messages will disappear, 0 disables expiration (Default 0) (only available with `conversation-creation-all` capability)", "minimum": 0 }, "lobbyState": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "Lobby state of the conversation (Default lobby is disabled) (only available with `conversation-creation-all` capability)" }, "lobbyTimer": { "type": "integer", "format": "int64", "nullable": true, "default": null, "description": "Timer when the lobby will be removed (Default null, will not be disabled automatically) (only available with `conversation-creation-all` capability)", "minimum": 0 }, "sipEnabled": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2 ], "description": "Whether SIP dial-in shall be enabled (only available with `conversation-creation-all` capability)" }, "permissions": { "type": "integer", "format": "int64", "description": "Default permissions for participants (only available with `conversation-creation-all` capability)", "minimum": 0, "maximum": 511 }, "recordingConsent": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "Whether participants need to agree to a recording before joining a call (only available with `conversation-creation-all` capability)" }, "mentionPermissions": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "Who can mention at-all in the chat (only available with `conversation-creation-all` capability)" }, "description": { "type": "string", "default": "", "description": "Description for the conversation (limited to 2.000 characters) (only available with `conversation-creation-all` capability)" }, "emoji": { "type": "string", "nullable": true, "default": null, "description": "Emoji for the avatar of the conversation (only available with `conversation-creation-all` capability)", "minLength": 1 }, "avatarColor": { "type": "string", "nullable": true, "default": null, "description": "Background color of the avatar (Only considered when an emoji was provided) (only available with `conversation-creation-all` capability)", "minLength": 1 }, "participants": { "$ref": "#/components/schemas/InvitationList", "default": [], "description": "List of participants to add grouped by type (only available with `conversation-creation-all` capability)" }, "owner": { "type": "string", "default": "", "description": "User ID that will be used as actor and made owner of the conversation. Required when the request is authenticated via the `x-nextcloud-talk-external-service-random` and `x-nextcloud-talk-external-service-checksum` headers, otherwise ignored." }, "preset": { "type": "string", "nullable": true, "default": null, "description": "Identifier of the preset that was used (only available with `conversation-preset` capability)" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "name": "x-nextcloud-talk-external-service-random", "in": "header", "description": "Random seed (at least 32 bytes) used together with the owner user ID to generate the SHA256-HMAC request checksum", "schema": { "type": "string" } }, { "name": "x-nextcloud-talk-external-service-checksum", "in": "header", "description": "SHA256-HMAC checksum over the concatenation of the random seed and the owner user ID, signed with the shared external call service secret, to verify authenticity from the external call service", "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 already existed", "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" } } } } } } } }, "201": { "description": "Room 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" } } } } } } } }, "202": { "description": "Room created successfully but not all participants could be added", "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/RoomWithInvalidInvitations" } } } } } } } }, "400": { "description": "Room type invalid or missing or invalid password", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "avatar", "classified", "description", "invite", "listable", "lobby", "lobby-timer", "mention-permissions", "message-expiration", "name", "object", "object-id", "object-type", "owner", "password", "permissions", "preset", "read-only", "recording-consent", "sip-enabled", "type" ] }, "message": { "type": "string" } } } } } } } } } }, "403": { "description": "Missing permissions to create room", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "avatar", "classified", "description", "invite", "listable", "lobby", "lobby-timer", "mention-permissions", "message-expiration", "name", "object", "object-id", "object-type", "owner", "password", "permissions", "preset", "read-only", "recording-consent", "sip-enabled", "type" ] }, "message": { "type": "string" } } } } } } } } } }, "404": { "description": "User, group or other target to invite 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": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "avatar", "classified", "description", "invite", "listable", "lobby", "lobby-timer", "mention-permissions", "message-expiration", "name", "object", "object-id", "object-type", "owner", "password", "permissions", "preset", "read-only", "recording-consent", "sip-enabled", "type" ] }, "message": { "type": "string" } } } } } } } } } }, "401": { "description": "Request not authenticated (missing user session or invalid external call service secret)", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "auth" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/listed-room": { "get": { "operationId": "room-get-listed-rooms", "summary": "Get listed rooms with optional search term", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "name": "searchTerm", "in": "query", "description": "search term", "schema": { "type": "string", "default": "" } }, { "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": "Return list of matching rooms", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Room" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/breakout-rooms": { "get": { "operationId": "room-get-breakout-rooms", "summary": "Get breakout rooms", "description": "All for moderators and in case of \"free selection\", or the assigned breakout room for other participants", "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": "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": "Breakout rooms returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Room" } } } } } } } } }, "400": { "description": "Getting breakout rooms is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/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 (at least 32 bytes) used together with the room token to generate the SHA256-HMAC request checksum", "schema": { "type": "string" } }, { "name": "talk-sipbridge-checksum", "in": "header", "description": "SHA256-HMAC checksum over the concatenation of the random seed and the room token, signed with the shared SIP bridge secret, to verify authenticity from the SIP bridge", "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 } } } } } } } } } }, "put": { "operationId": "room-rename-room", "summary": "Rename a room", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "roomName" ], "properties": { "roomName": { "type": "string", "description": "New name" } } } } } }, "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": "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 renamed 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": "Renaming room is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "event", "type", "value" ] } } } } } } } } } } } }, "delete": { "operationId": "room-delete-room", "summary": "Delete 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", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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 successfully deleted", "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": "Deleting room is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true } } } } } } } }, "403": { "description": "Conversation is preserved", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "preserved" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/note-to-self": { "get": { "operationId": "room-get-note-to-self-conversation", "summary": "Get the \"Note to self\" conversation for the user", "description": "It will be automatically created when it is currently missing", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v4" ], "default": "v4" } }, { "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 successfully", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/favorite": { "post": { "operationId": "room-add-to-favorites", "summary": "Add a room to the favorites", "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": "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": "Successfully added room to favorites", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "room-remove-from-favorites", "summary": "Remove a room from the favorites", "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": "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": "Successfully removed room from favorites", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/notify": { "post": { "operationId": "room-set-notification-level", "summary": "Update the notification level for a room", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "level" ], "properties": { "level": { "type": "integer", "format": "int64", "description": "New level" } } } } } }, "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": "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": "Notification level updated 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": "Updating notification level is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "level" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/notify-calls": { "post": { "operationId": "room-set-notification-calls", "summary": "Update call notifications", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "level" ], "properties": { "level": { "type": "integer", "format": "int64", "description": "New level" } } } } } }, "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": "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 notification level updated 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": "Updating call notification level is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "level" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/description": { "put": { "operationId": "room-set-description", "summary": "Update the description of a room", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "description" ], "properties": { "description": { "type": "string", "description": "New description for the conversation (limited to 2.000 characters, was 500 before Talk 21)" } } } } } }, "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": "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": "Description updated 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": "Updating description is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "event", "type", "value" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/object": { "delete": { "operationId": "room-unbind-room-from-object", "summary": "Unbind a room from its object to prevent automatic retention", "description": "Required capability: `unbind-conversation`", "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": "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 successfully unbound", "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": "Unbinding room is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "object-type" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/participants": { "get": { "operationId": "room-get-participants", "summary": "Get a list of participants for 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", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "includeStatus", "in": "query", "description": "Include the user statuses", "schema": { "type": "boolean", "default": false } }, { "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": "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": "Participants returned", "headers": { "X-Nextcloud-Has-User-Statuses": { "schema": { "type": "boolean" } } }, "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Participant" } } } } } } } } }, "403": { "description": "Missing permissions for getting participants", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true } } } } } } } } } }, "post": { "operationId": "room-add-participant-to-room", "summary": "Add a participant to a room", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "newParticipant" ], "properties": { "newParticipant": { "type": "string", "description": "New participant" }, "source": { "type": "string", "default": "users", "enum": [ "users", "groups", "circles", "emails", "federated_users", "phones", "teams" ], "description": "Source of the participant" } } } } } }, "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": "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 successfully added", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "properties": { "type": { "type": "integer", "format": "int64" } } } } } } } } } }, "400": { "description": "Adding participant is not possible, e.g. when the user is banned or an email, phone number or federated user is added to a classified conversation (check error attribute of response for detail key)", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "ban", "classified", "cloud-id", "federation", "moderator", "new-participant", "outgoing", "reach-remote", "room-type", "sip", "source", "trusted-servers" ] } } } } } } } } } }, "404": { "description": "User, group or other target to invite 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": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "ban", "classified", "cloud-id", "federation", "moderator", "new-participant", "outgoing", "reach-remote", "room-type", "sip", "source", "trusted-servers" ] } } } } } } } } } }, "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": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "ban", "classified", "cloud-id", "federation", "moderator", "new-participant", "outgoing", "reach-remote", "room-type", "sip", "source", "trusted-servers" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/breakout-rooms/participants": { "get": { "operationId": "room-get-breakout-room-participants", "summary": "Get the breakout room participants for 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", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "includeStatus", "in": "query", "description": "Include the user statuses", "schema": { "type": "boolean", "default": false } }, { "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": "Breakout room participants returned", "headers": { "X-Nextcloud-Has-User-Statuses": { "schema": { "type": "boolean" } } }, "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Participant" } } } } } } } } }, "400": { "description": "Getting breakout room participants is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } } } } } } } } }, "403": { "description": "Missing permissions to get breakout room participants", "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}/participants/self": { "delete": { "operationId": "room-remove-self-from-room", "summary": "Remove the current user from 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", "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": "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 removed successfully", "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": "Removing participant is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "announcement", "last-moderator", "participant" ] } } } } } } } } } }, "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": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "announcement", "last-moderator", "participant" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/attendees": { "delete": { "operationId": "room-remove-attendee-from-room", "summary": "Remove an attendee from 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", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "attendeeId", "in": "query", "description": "ID of the attendee", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "Attendee removed successfully", "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": "Removing attendee is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "announcement", "last-moderator", "owner", "participant", "room-type" ] } } } } } } } } } }, "403": { "description": "Removing attendee is not allowed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "announcement", "last-moderator", "owner", "participant", "room-type" ] } } } } } } } } } }, "404": { "description": "Attendee not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "announcement", "last-moderator", "owner", "participant", "room-type" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/public": { "post": { "operationId": "room-make-public", "summary": "Allowed guests to join conversation", "description": "Required capability: `conversation-creation-password` for `string $password` parameter", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "password": { "type": "string", "default": "", "description": "New password (only available with `conversation-creation-password` capability)" } } } } } }, "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": "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": "Allowed guests 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": "Allowing guests is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "classified", "type", "value", "password" ] }, "message": { "type": "string" } } } } } } } } } }, "403": { "description": "Conversation is preserved", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "preserved" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "room-make-private", "summary": "Disallowed guests to join conversation", "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": "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 unpublished Disallowing guests 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": "Disallowing guests is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "classified", "type", "value" ] } } } } } } } } } }, "403": { "description": "Conversation is preserved", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "preserved" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/read-only": { "put": { "operationId": "room-set-read-only", "summary": "Set read-only state of a room", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "state" ], "properties": { "state": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "New read-only state" } } } } } }, "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": "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": "Read-only state updated 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": "Updating read-only state is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "type", "value" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/listable": { "put": { "operationId": "room-set-listable", "summary": "Make a room listable", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "scope" ], "properties": { "scope": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2 ], "description": "Scope where the room is listable" } } } } } }, "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": "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": "Made room listable 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": "Making room listable is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "classified", "type", "value" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "forced" ] }, "forced": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2 ] } } } ] } } } } } } } }, "403": { "description": "Conversation is preserved", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "preserved" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/mention-permissions": { "put": { "operationId": "room-set-mention-permissions", "summary": "Update the mention permissions for a room", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "mentionPermissions" ], "properties": { "mentionPermissions": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "New mention permissions" } } } } } }, "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": "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": "Permissions updated 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": "Updating permissions is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "type", "value" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "forced" ] }, "forced": { "type": "integer", "format": "int64", "enum": [ 0, 1 ] } } } ] } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/password": { "put": { "operationId": "room-set-password", "summary": "Set a password for a room", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "password" ], "properties": { "password": { "type": "string", "description": "New password" } } } } } }, "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": "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": "Password set 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": "Setting password is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "type", "value" ] }, "message": { "type": "string" } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/archive": { "post": { "operationId": "room-archive-conversation", "summary": "Archive a conversation", "description": "Required capability: `archived-conversations-v2`", "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": "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": "Conversation was archived", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "room-unarchive-conversation", "summary": "Unarchive a conversation", "description": "Required capability: `archived-conversations-v2`", "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": "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": "Conversation was unarchived", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/preserve": { "post": { "operationId": "room-preserve-conversation", "summary": "Preserve a conversation", "description": "While preserved the conversation can not be deleted, its chat history can not be cleared and the guests (public link) and joinable (listable) settings can not be changed.\nRequired capability: `preserve-conversation`", "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": "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": "Conversation was preserved", "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" } } } } } } } }, "403": { "description": "Only the owner can preserve a conversation", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "permissions" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "room-unpreserve-conversation", "summary": "Stop preserving a conversation", "description": "Required capability: `preserve-conversation`", "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": "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": "Conversation is not preserved anymore", "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" } } } } } } } }, "403": { "description": "Only the owner can stop preserving a conversation", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "permissions" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/tags": { "post": { "operationId": "room-assign-tags", "summary": "Assign conversation tags", "description": "Required capability: `conversation-tags`", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "tagIds": { "type": "array", "default": [], "description": "IDs of tags to assign (empty array to unassign all)", "items": { "type": "string" } } } } } } }, "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": "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": "Conversation tags updated", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/important": { "post": { "operationId": "room-mark-conversation-as-important", "summary": "Mark a conversation as important (still sending notifications while on DND)", "description": "Required capability: `important-conversations`", "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": "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": "Conversation was marked as important", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "room-mark-conversation-as-unimportant", "summary": "Mark a conversation as unimportant (no longer sending notifications while on DND)", "description": "Required capability: `important-conversations`", "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": "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": "Conversation was marked as unimportant", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/sensitive": { "post": { "operationId": "room-mark-conversation-as-sensitive", "summary": "Mark a conversation as sensitive (no last message is visible / no push preview is shown)", "description": "Required capability: `sensitive-conversations`", "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": "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": "Conversation was marked as sensitive", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "room-mark-conversation-as-insensitive", "summary": "Mark a conversation as insensitive (last message is visible / push preview is shown)", "description": "Required capability: `sensitive-conversations`", "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": "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": "Conversation was marked as insensitive", "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": "Marking the conversation as insensitive is not possible (e.g. classified conversation)", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "classified" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/participants/active": { "post": { "operationId": "room-join-room", "summary": "Join a room", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "password": { "type": "string", "default": "", "description": "Password of the room" }, "force": { "type": "boolean", "default": true, "description": "Create a new session if necessary" } } } } } }, "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": "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 joined successfully", "headers": { "X-Nextcloud-Talk-Proxy-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" } } } } } } } }, "400": { "description": "Bad request when the external call access check failed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "field", "response" ] } } } } } } } } } }, "403": { "description": "Joining room is not allowed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "ban", "password" ] } } } } } } } } } }, "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 } } } } } } } }, "409": { "description": "Session already exists", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "sessionId", "inCall", "lastPing" ], "properties": { "sessionId": { "type": "string" }, "inCall": { "type": "integer", "format": "int64" }, "lastPing": { "type": "integer", "format": "int64" } } } } } } } } } } } }, "delete": { "operationId": "room-leave-room", "summary": "Leave 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": "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": "Successfully left the room", "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}/participants/state": { "put": { "operationId": "room-set-session-state", "summary": "Set active state for a session", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "state" ], "properties": { "state": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "of the room" } } } } } }, "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": "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": "Session state set 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": "The provided new state was 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": "The participant did not have a session", "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}/moderators": { "post": { "operationId": "room-promote-moderator", "summary": "Promote an attendee to moderator", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "attendeeId" ], "properties": { "attendeeId": { "type": "integer", "format": "int64", "description": "ID of the attendee", "minimum": 0 } } } } } }, "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": "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": "Attendee promoted to moderator successfully", "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": "Promoting attendee to moderator is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true } } } } } } } }, "403": { "description": "Promoting attendee to moderator is not allowed", "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": "Attendee 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 } } } } } } } } } }, "delete": { "operationId": "room-demote-moderator", "summary": "Demote an attendee from moderator", "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": "attendeeId", "in": "query", "description": "ID of the attendee", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "Attendee demoted from moderator successfully", "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": "Demoting attendee from moderator is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "nullable": true } } } } } } } }, "403": { "description": "Demoting attendee from moderator is not allowed", "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": "Attendee 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}/permissions/{mode}": { "put": { "operationId": "room-set-permissions", "summary": "Update the permissions of a room", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "permissions" ], "properties": { "permissions": { "type": "integer", "format": "int64", "description": "New permissions", "minimum": 0, "maximum": 511 } } } } } }, "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": "mode", "in": "path", "description": "Level of the permissions ('call' (removed in Talk 20), 'default')", "required": true, "schema": { "type": "string", "enum": [ "call", "default" ], "pattern": "^(call|default)$" } }, { "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": "Permissions updated 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": "Updating permissions is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "mode", "type", "value" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "forced" ] }, "forced": { "type": "integer", "format": "int64", "minimum": 0, "maximum": 511 } } } ] } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/attendees/permissions": { "put": { "operationId": "room-set-attendee-permissions", "summary": "Update the permissions of an attendee", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "attendeeId", "method", "permissions" ], "properties": { "attendeeId": { "type": "integer", "format": "int64", "description": "ID of the attendee", "minimum": 0 }, "method": { "type": "string", "enum": [ "set", "remove", "add" ], "description": "Method of updating permissions ('set', 'remove', 'add')" }, "permissions": { "type": "integer", "format": "int64", "description": "New permissions", "minimum": 0, "maximum": 511 } } } } } }, "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": "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": "Permissions updated successfully", "headers": { "X-Nextcloud-Has-User-Statuses": { "schema": { "type": "boolean", "enum": [ true ] } } }, "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Participant" } } } } } } } } }, "400": { "description": "Updating permissions is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "participant", "method", "moderator", "room-type", "type", "value" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "forced" ] }, "forced": { "type": "integer", "format": "int64", "minimum": 0, "maximum": 511 } } } ] } } } } } } } }, "403": { "description": "Missing permissions to update permissions", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "participant", "method", "moderator", "room-type", "type", "value" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "forced" ] }, "forced": { "type": "integer", "format": "int64", "minimum": 0, "maximum": 511 } } } ] } } } } } } } }, "404": { "description": "Attendee not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "participant", "method", "moderator", "room-type", "type", "value" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "forced" ] }, "forced": { "type": "integer", "format": "int64", "minimum": 0, "maximum": 511 } } } ] } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/attendees/permissions/all": { "put": { "operationId": "room-set-all-attendees-permissions", "summary": "Update the permissions of all attendees", "deprecated": true, "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "method", "permissions" ], "properties": { "method": { "type": "string", "enum": [ "set", "remove", "add" ], "description": "Method of updating permissions ('set', 'remove', 'add')" }, "permissions": { "type": "integer", "format": "int64", "description": "New permissions", "minimum": 0, "maximum": 511 } } } } } }, "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": "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": "Permissions updated 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": "Updating permissions is not possible", "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}/webinar/lobby": { "put": { "operationId": "room-set-lobby", "summary": "Update the lobby state for a room", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "state" ], "properties": { "state": { "type": "integer", "format": "int64", "enum": [ 0, 1 ], "description": "New state" }, "timer": { "type": "integer", "format": "int64", "nullable": true, "default": null, "description": "Timer when the lobby will be removed", "minimum": 0 } } } } } }, "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": "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": "Lobby state updated 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": "Updating lobby state is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "object", "type", "value" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/webinar/sip": { "put": { "operationId": "room-setsip-enabled", "summary": "Update SIP enabled state", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "state" ], "properties": { "state": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2 ], "description": "New state" } } } } } }, "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": "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": "SIP enabled state updated 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" } } } } } } } }, "401": { "description": "User not found", "content": { "application/json": { "schema": { "anyOf": [ { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "config" ] } } } } } } }, { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } ] } } } }, "403": { "description": "Missing permissions to update SIP enabled state", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "config" ] } } } } } } } } } }, "412": { "description": "SIP not configured", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "config" ] } } } } } } } } } }, "400": { "description": "Updating SIP enabled state is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "classified", "token", "type", "value" ] } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "forced" ] }, "forced": { "type": "integer", "format": "int64", "enum": [ 0, 1, 2 ] } } } ] } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/recording-consent": { "put": { "operationId": "room-set-recording-consent", "summary": "Set recording consent requirement for this conversation", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "recordingConsent" ], "properties": { "recordingConsent": { "type": "integer", "format": "int64", "description": "New consent setting for the conversation (Only {@see RecordingService::CONSENT_REQUIRED_NO} and {@see RecordingService::CONSENT_REQUIRED_YES} are allowed here.)" } } } } } }, "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": "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": "Recording consent requirement set 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": "Setting recording consent requirement is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "call", "value" ] } } } } } } } } } }, "412": { "description": "No recording server is configured", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "config" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/participants/resend-invitations": { "post": { "operationId": "room-resend-invitations", "summary": "Resend invitations", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "attendeeId": { "type": "integer", "format": "int64", "nullable": true, "description": "ID of the attendee", "minimum": 0 } } } } } }, "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": "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": "Invitation resent successfully", "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": "Attendee 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 } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/message-expiration": { "post": { "operationId": "room-set-message-expiration", "summary": "Update message expiration time", "tags": [ "room" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "seconds" ], "properties": { "seconds": { "type": "integer", "format": "int64", "description": "New time", "minimum": 0 } } } } } }, "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": "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": "Message expiration time updated 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": "Updating message expiration time is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "breakout-room", "type", "value" ] }, "forced": { "type": "integer", "format": "int64", "minimum": 0 } } }, { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "forced" ] }, "forced": { "type": "integer", "format": "int64", "minimum": 0 } } } ] } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/import-emails": { "post": { "operationId": "room-import-emails-as-participants", "summary": "Import a list of email attendees", "description": "Content format is comma separated values: - Header line is required and must match `\"email\",\"name\"` or `\"email\"` - One entry per line (e.g. `\"John Doe\",\"john@example.tld\"`)\nRequired capability: `email-csv-import`", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "testRun": { "type": "boolean", "default": false, "description": "When set to true, the file is validated and no email is actually sent nor any participant added to the conversation" } } } } } }, "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": "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": "All entries imported successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "invites", "duplicates" ], "properties": { "invites": { "type": "integer", "format": "int64", "minimum": 0 }, "duplicates": { "type": "integer", "format": "int64", "minimum": 0 }, "invalid": { "type": "integer", "format": "int64", "minimum": 0 }, "invalidLines": { "type": "array", "items": { "type": "integer", "format": "int64", "minimum": 0 } }, "type": { "type": "integer", "format": "int64", "minimum": -1, "maximum": 6 } } } } } } } } } }, "400": { "description": "Import was not successful, e.g. when the conversation is classified. When message is provided the string is in user language and should be displayed as an error.", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "classified", "room", "file", "header-email", "header-name", "rows" ] }, "message": { "type": "string" }, "invites": { "type": "integer", "format": "int64", "minimum": 0 }, "duplicates": { "type": "integer", "format": "int64", "minimum": 0 }, "invalid": { "type": "integer", "format": "int64", "minimum": 0 }, "invalidLines": { "type": "array", "items": { "type": "integer", "format": "int64", "minimum": 0 } }, "type": { "type": "integer", "format": "int64", "minimum": -1, "maximum": 6 } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/capabilities": { "get": { "operationId": "room-get-capabilities", "summary": "Get capabilities for a room", "description": "See \"Capability handling in federated conversations\" in https://github.com/nextcloud/spreed/issues/10680 to learn which capabilities should be considered from the local server or from the remote server.", "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": "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": "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": "Get capabilities successfully", "headers": { "X-Nextcloud-Talk-Hash": { "schema": { "type": "string" } }, "X-Nextcloud-Talk-Proxy-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": { "anyOf": [ { "$ref": "#/components/schemas/Capabilities" }, { "type": "object", "additionalProperties": true } ] } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/room/{token}/meeting": { "post": { "operationId": "room-schedule-meeting", "summary": "Schedule a meeting for a conversation", "description": "Required capability: `schedule-meeting`", "tags": [ "room" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "calendarUri", "start" ], "properties": { "calendarUri": { "type": "string", "description": "Last part of the calendar URI as seen by the participant e.g. 'personal' or 'company_shared_by_other_user'" }, "start": { "type": "integer", "format": "int64", "description": "Unix timestamp when the meeting starts" }, "attendeeIds": { "type": "array", "nullable": true, "default": null, "description": "List of attendee ids to invite, if null everyone will be invited, if empty array only the actor will receive the event", "items": { "type": "integer", "format": "int64" } }, "end": { "type": "integer", "format": "int64", "nullable": true, "default": null, "description": "Unix timestamp when the meeting ends, falls back to 60 minutes after start" }, "title": { "type": "string", "nullable": true, "default": null, "description": "Title or summary of the event, falling back to the conversation name if none is given" }, "description": { "type": "string", "nullable": true, "default": null, "description": "Description of the event, falling back to the conversation description if none is given" } } } } } }, "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": "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": "Meeting scheduled", "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": "Meeting could not be created successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "calendar", "conversation", "email", "end", "start" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/settings/user": { "post": { "operationId": "settings-set-user-setting", "summary": "Update user setting", "tags": [ "settings" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "key" ], "properties": { "key": { "type": "string", "enum": [ "attachment_folder", "read_status_privacy", "typing_privacy", "play_sounds" ], "description": "Key to update" }, "value": { "nullable": true, "description": "New value for the key", "oneOf": [ { "type": "string" }, { "type": "integer", "format": "int64" } ] } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "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": "User setting updated successfully", "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": "Updating user setting is not possible", "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": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/signaling/settings": { "get": { "operationId": "signaling-get-settings", "summary": "Get the signaling settings", "tags": [ "internal_signaling", "external_signaling" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v3" ], "default": "v3" } }, { "name": "token", "in": "query", "description": "Token of the room", "schema": { "type": "string", "default": "" } }, { "name": "talk-recording-random", "in": "header", "description": "Random seed (at least 32 bytes) used to generate the SHA256-HMAC request checksum", "schema": { "type": "string" } }, { "name": "talk-recording-checksum", "in": "header", "description": "SHA256-HMAC checksum over the random seed, signed with the shared recording secret, to verify authenticity from the recording backend", "schema": { "type": "string" } }, { "name": "talk-sipbridge-random", "in": "header", "description": "Random seed (at least 32 bytes) used together with the room token to generate the SHA256-HMAC request checksum", "schema": { "type": "string" } }, { "name": "talk-sipbridge-checksum", "in": "header", "description": "SHA256-HMAC checksum over the concatenation of the random seed and the room token, signed with the shared SIP bridge secret, to verify authenticity from the SIP bridge", "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": "Signaling settings 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/SignalingSettings" } } } } } } } }, "401": { "description": "Recording 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}/signaling/{token}": { "post": { "operationId": "signaling-send-messages", "summary": "Send signaling messages", "tags": [ "internal_signaling" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "messages" ], "properties": { "messages": { "type": "string", "description": "JSON encoded messages" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v3" ], "default": "v3" } }, { "name": "token", "in": "path", "description": "Token of the room", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Signaling message sent successfully", "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": "Sending signaling message is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "string" } } } } } } } } } }, "get": { "operationId": "signaling-pull-messages", "summary": "Get signaling messages", "tags": [ "internal_signaling" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v3" ], "default": "v3" } }, { "name": "token", "in": "path", "description": "Token of the room", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "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": "Signaling messages returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "type": "object", "required": [ "type", "data" ], "properties": { "type": { "type": "string" }, "data": { "oneOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/SignalingSession" } }, { "type": "string" } ] } } } } } } } } } } }, "404": { "description": "Session, room or 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": { "type": "array", "items": { "type": "object", "required": [ "type", "data" ], "properties": { "type": { "type": "string" }, "data": { "oneOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/SignalingSession" } }, { "type": "string" } ] } } } } } } } } } } }, "409": { "description": "Session killed", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "type": "object", "required": [ "type", "data" ], "properties": { "type": { "type": "string" }, "data": { "oneOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/SignalingSession" } }, { "type": "string" } ] } } } } } } } } } } }, "400": { "description": "Getting signaling messages is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "string" } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/temp-user-avatar": { "post": { "operationId": "temp_avatar-post-avatar", "summary": "Upload your avatar as a user", "tags": [ "user_avatar" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "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": "Avatar uploaded successfully", "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": "Uploading avatar is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string" } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } }, "delete": { "operationId": "temp_avatar-delete-avatar", "summary": "Delete your avatar as a user", "tags": [ "user_avatar" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "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": "Avatar deleted successfully", "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": "Deleting avatar is not possible", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "avatar" ] } } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/threads/recent": { "get": { "operationId": "thread-get-recent-active-threads", "summary": "Get recent active threads in a conversation", "description": "Required capability: `threads`", "tags": [ "thread" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "limit", "in": "query", "description": "Number of threads to return", "schema": { "type": "integer", "format": "int64", "default": 50, "minimum": 1, "maximum": 50 } }, { "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": "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": "List of threads returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ThreadInfo" } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/subscribed-threads": { "get": { "operationId": "thread-get-subscribed-threads", "summary": "Get subscribed threads for a user", "description": "Required capability: `threads`", "tags": [ "thread" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "limit", "in": "query", "description": "Number of threads to return", "schema": { "type": "integer", "format": "int64", "default": 100, "minimum": 1, "maximum": 100 } }, { "name": "offset", "in": "query", "description": "Offset in the threads list", "schema": { "type": "integer", "format": "int64", "default": 0, "minimum": 0 } }, { "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": "List of threads returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ThreadInfo" } } } } } } } } }, "401": { "description": "Current user is not logged in", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/threads/{threadId}": { "get": { "operationId": "thread-get-thread", "summary": "Get thread info of a single thread", "description": "Required capability: `threads`", "tags": [ "thread" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "threadId", "in": "path", "description": "The thread ID to get the info for", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Thread info 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/ThreadInfo" } } } } } } } }, "404": { "description": "Thread not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "thread", "status" ] } } } } } } } } } } } }, "put": { "operationId": "thread-rename-thread", "summary": "Rename a thread", "description": "Required capability: `threads`", "tags": [ "thread" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "threadTitle" ], "properties": { "threadTitle": { "type": "string", "description": "New thread title, must not be empty" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "threadId", "in": "path", "description": "The thread ID to get the info for", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Thread renamed 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/ThreadInfo" } } } } } } } }, "400": { "description": "When the provided title is empty", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "title" ] } } } } } } } } } }, "403": { "description": "Not allowed, either not the original author or not a moderator", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "permission" ] } } } } } } } } } }, "404": { "description": "Thread not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "thread" ] } } } } } } } } } } } } }, "/ocs/v2.php/apps/spreed/api/{apiVersion}/chat/{token}/threads/{messageId}/notify": { "post": { "operationId": "thread-set-notification-level", "summary": "Set notification level for a specific thread", "description": "Required capability: `threads`", "tags": [ "thread" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "level" ], "properties": { "level": { "type": "integer", "format": "int64", "description": "New level" } } } } } }, "parameters": [ { "name": "apiVersion", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "v1" ], "default": "v1" } }, { "name": "token", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9]{4,30}$" } }, { "name": "messageId", "in": "path", "description": "The message to create a thread for (Doesn't have to be the root)", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 0 } }, { "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": "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": "Successfully set notification level for thread", "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/ThreadInfo" } } } } } } } }, "400": { "description": "Notification level was invalid", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "level", "message", "status", "top-most" ] } } } } } } } } } }, "404": { "description": "Message or top most message not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string", "enum": [ "level", "message", "status", "top-most" ] } } } } } } } } } } } } } }, "tags": [] }