openapi: 3.0.1 info: title: Application API description: Application services are passive and can only observe events from homeserver. They can inject events into rooms they are participating in. They cannot prevent events from being sent, nor can they modify the content of the event being sent. In order to observe events from a homeserver, the homeserver needs to be configured to pass certain types of traffic to the application service. This is achieved by manually configuring the homeserver with information about the application service. contact: name: Anatoly Sablin email: tolya@sablin.xyz license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html version: 0.1.1 paths: /_matrix/app/v1/transactions/{txnId}: put: summary: This API is called by the homeserver when it wants to push an event (or batch of events) to the application service. description: Note that the application service should distinguish state events from message events via the presence of a state_key, rather than via the event type. operationId: transaction parameters: - name: txnId in: path description: The transaction ID for this set of events. Homeservers generate these IDs and they are used to ensure idempotency of requests. required: true schema: type: string requestBody: description: JSON body request. content: application/json: schema: $ref: '#/components/schemas/TransactionRequest' responses: 200: description: The transaction was processed successfully. content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' /_matrix/app/v1/rooms/{roomAlias}: get: summary: This endpoint is invoked by the homeserver on an application service to query the existence of a given room alias. description: The homeserver will only query room aliases inside the application service's aliases namespace. The homeserver will send this request when it receives a request to join a room alias within the application service's namespace. operationId: rooms parameters: - name: roomAlias in: path description: The room alias being queried. required: true schema: type: string responses: 200: description: The application service indicates that this room alias exists. The application service MUST have created a room and associated it with the queried room alias using the client-server API. Additional information about the room such as its name and topic can be set before responding. content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' 401: description: The homeserver has not supplied credentials to the application service. Optional error information can be included in the body of this response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 403: description: The credentials supplied by the homeserver were rejected. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 404: description: The application service indicates that this room alias does not exist. Optional error information can be included in the body of this response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /_matrix/app/v1/users/{userId}: get: summary: This endpoint is invoked by the homeserver on an application service to query the existence of a given user ID. description: The homeserver will only query user IDs inside the application service's users namespace. The homeserver will send this request when it receives an event for an unknown user ID in the application service's namespace. operationId: users parameters: - name: userId in: path description: The user ID being queried. required: true schema: type: string responses: 200: description: The application service indicates that this user exists. The application service MUST create the user using the client-server API. content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' 401: description: The homeserver has not supplied credentials to the application service. Optional error information can be included in the body of this response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 403: description: The credentials supplied by the homeserver were rejected. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 404: description: The application service indicates that this user does not exist. Optional error information can be included in the body of this response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /_matrix/app/v1/thirdparty/user: get: summary: Retrieve an array of third party users from a Matrix User ID. operationId: user parameters: - name: userid in: query description: The Matrix User Id to look up required: true schema: type: string responses: 200: description: An array of third party users. content: application/json: schema: type: array items: $ref: '#/components/schemas/ProtocolUser' 401: description: The homeserver has not supplied credentials to the application service. Optional error information can be included in the body of this response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 403: description: The credentials supplied by the homeserver were rejected. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 404: description: No mappings were found with the given parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /_matrix/app/v1/thirdparty/location: get: summary: Retrieve an array of third party network locations from a Matrix room alias. operationId: location parameters: - name: alias in: query description: The Matrix room alias to look up. required: true schema: type: string responses: 200: description: At least one portal room was found. content: application/json: schema: type: array items: $ref: '#/components/schemas/ProtocolLocation' 404: description: No portal rooms were found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /_matrix/app/v1/thirdparty/protocol/{protocol}: get: summary: This API is called by the homeserver when it wants to present clients with specific information about the various third party networks that an application service supports. operationId: protocol parameters: - name: protocol in: path description: the name of the protocol required: true schema: type: string responses: 200: description: The protocol was found and metadata returned. content: application/json: schema: $ref: '#/components/schemas/Protocol' 401: description: The homeserver has not supplied credentials to the application service. Optional error information can be included in the body of this response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 403: description: The credentials supplied by the homeserver were rejected. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 404: description: No protocol was found with the given path.The protocol is unknown. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /_matrix/app/v1/thirdparty/location/{protocol}: get: summary: Retrieve a list of Matrix portal rooms that lead to the matched third party location. operationId: locationProtocol parameters: - name: protocol in: path description: The protocol ID. required: true schema: type: string responses: 200: description: At least one portal room was found. content: application/json: schema: type: array items: $ref: '#/components/schemas/ProtocolLocation' 401: description: The homeserver has not supplied credentials to the application service. Optional error information can be included in the body of this response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 403: description: The credentials supplied by the homeserver were rejected. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 404: description: No mappings were found with the given parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /_matrix/app/v1/thirdparty/user/{protocol}: get: summary: Retrieve a Matrix User ID linked to a user on the third party service, given a set of user parameters. operationId: userProtocol parameters: - name: protocol in: path description: The name of the protocol required: true schema: type: string responses: 200: description: The Matrix User IDs found with the given parameters. content: application/json: schema: type: array items: $ref: '#/components/schemas/ProtocolUser' 401: description: The homeserver has not supplied credentials to the application service. Optional error information can be included in the body of this response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 403: description: The credentials supplied by the homeserver were rejected. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 404: description: No users were found with the given parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /_matrix/client/r0/directory/list/appservice/{networkId}/{roomId}: put: summary: Updates the visibility of a given room on the application service's room directory. description: |- This API is similar to the room directory visibility API used by clients to update the homeserver's more general room directory. This API requires the use of an application service access token (as_token) instead of a typical client's access_token. This API cannot be invoked by users who are not identified as application services. operationId: updateVisibility parameters: - name: networkId in: path description: The protocol (network) ID to update the room list for. This would have been provided by the application service as being listed as a supported protocol. required: true schema: type: string - name: roomId in: path description: The room ID to add to the directory. required: true schema: type: string requestBody: description: JSON body request. content: application/json: schema: $ref: '#/components/schemas/RoomVisibility' required: true responses: 200: description: The room's directory visibility has been updated. content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' components: schemas: EmptyResponse: type: object description: Empty response AcceptedTerms: required: - event_id - origin_server_ts - room_id - sender - type type: object description: A list of terms URLs the user has previously accepted. Clients SHOULD use this to avoid presenting the user with terms they have already agreed to. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedAcceptedTermsContent' AcceptedTermsContent: type: object properties: accepted: type: array description: ' The list of URLs the user has previously accepted. Should be appended to when the user agrees to new terms.' items: type: string description: ' The list of URLs the user has previously accepted. Should be appended to when the user agrees to new terms.' description: A list of terms URLs the user has previously accepted. Clients SHOULD use this to avoid presenting the user with terms they have already agreed to. Answer: required: - sdp - type type: object properties: type: type: string description: The type of session description. Must be 'answer'. sdp: type: string description: The SDP text of the session description. description: Answer Audio: required: - url type: object description: This message represents a single audio clip. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: info: $ref: '#/components/schemas/AudioInfo' url: type: string description: The URL to the audio clip. file: $ref: '#/components/schemas/EncryptedFile' AudioInfo: type: object properties: duration: type: integer description: The duration of the audio in milliseconds. format: int64 mimetype: type: string description: The mimetype of the audio e.g. audio/aac. size: type: integer description: The size of the audio clip in bytes. format: int64 description: Audio type. CallAnswer: required: - event_id - origin_server_ts - room_id - sender - type type: object description: This event is sent by the callee when they wish to answer the call. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedCallAnswerContent' CallAnswerContent: required: - answer - call_id - version type: object description: This event is sent by the callee when they wish to answer the call. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: answer: $ref: '#/components/schemas/Answer' version: type: integer description: The version of the VoIP specification this message adheres to. This specification is version 0. format: int64 call_id: type: string description: The ID of the call this event relates to. CallCandidates: required: - event_id - origin_server_ts - room_id - sender - type type: object description: This event is sent by callers after sending an invite and by the callee after answering. Its purpose is to give the other party additional ICE candidates to try using to communicate. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedCallCandidatesContent' CallCandidatesContent: required: - call_id - candidates - version type: object description: This event is sent by callers after sending an invite and by the callee after answering. Its purpose is to give the other party additional ICE candidates to try using to communicate. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: candidates: type: array description: Array of objects describing the candidates. items: $ref: '#/components/schemas/Candidate' version: type: integer description: The version of the VoIP specification this messages adheres to. This specification is version 0. format: int64 call_id: type: string description: The ID of the call this event relates to. CallHangup: required: - event_id - origin_server_ts - room_id - sender - type type: object description: Sent by either party to signal their termination of the call. This can be sent either once the call has has been established or before to abort the call. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedCallHangupContent' CallHangupContent: required: - call_id - version type: object description: Sent by either party to signal their termination of the call. This can be sent either once the call has has been established or before to abort the call. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: version: type: integer description: The version of the VoIP specification this message adheres to. This specification is version 0. format: int64 reason: type: string description: Optional error reason for the hangup. This should not be provided when the user naturally ends or rejects the call. When there was an error in the call negotiation, this should be ice_failed for when ICE negotiation fails or invite_timeout for when the other party did not answer in time. enum: - ice_failed - invite_timeout call_id: type: string description: The ID of the call this event relates to. CallInvite: required: - event_id - origin_server_ts - room_id - sender - type type: object description: This event is sent by the caller when they wish to establish a call. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedCallInviteContent' CallInviteContent: required: - call_id - lifetime - offer - version type: object description: This event is sent by the caller when they wish to establish a call. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: offer: $ref: '#/components/schemas/Offer' version: type: integer description: The version of the VoIP specification this message adheres to. This specification is version 0. format: int64 lifetime: type: integer description: The time in milliseconds that the invite is valid for. Once the invite age exceeds this value, clients should discard it. They should also no longer show the call as awaiting an answer in the UI. format: int64 call_id: type: string description: The ID of the call this event relates to. Candidate: required: - candidate - sdpMLineIndex - sdpMid type: object properties: sdpMid: type: string description: The SDP media type this candidate is intended for. sdpMLineIndex: type: integer description: The index of the SDP 'm' line this candidate is intended for. format: int64 candidate: type: string description: The SDP 'a' line of the candidate. description: Candidate. CiphertextInfo: type: object properties: body: type: string description: The encrypted payload. type: type: integer description: The Olm message type. format: int64 description: Cipher text info. Direct: required: - type type: object description: A map of which rooms are considered 'direct' rooms for specific users is kept in account_data in an event of type m.direct. The content of this event is an object where the keys are the user IDs and values are lists of room ID strings of the 'direct' rooms for that user ID. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: type: object description: Parent class of all event contents part in the Event. DirectContent: type: object description: A map of which rooms are considered 'direct' rooms for specific users is kept in account_data in an event of type m.direct. The content of this event is an object where the keys are the user IDs and values are lists of room ID strings of the 'direct' rooms for that user ID. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: empty: type: boolean Dummy: required: - type type: object description: This event type is used to indicate new Olm sessions for end-to-end encryption. Typically it is encrypted as an m.room.encrypted event, then sent as a to-device event. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' Emote: type: object description: This message is similar to m.text except that the sender is 'performing' the action contained in the body key, similar to /me in IRC. This message should be prefixed by the name of the sender. This message could also be represented in a different colour to distinguish it from regular m.text messages. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: format: type: string description: The format used in the ``formatted_body``. Currently only ``org.matrix.custom.html`` is supported. formatted_body: type: string description: The formatted version of the ``body``. This is required if ``format`` is specified. EncryptedFile: required: - iv - key - url - v type: object properties: url: type: string description: the URL to the file. key: $ref: '#/components/schemas/JWK' iv: type: string description: ' The Initialisation Vector used by AES-CTR, encoded as unpadded base64.' hashes: type: object additionalProperties: type: string description: A map from an algorithm name to a hash of the ciphertext, encoded as unpadded base64. Clients should support the SHA-256 hash, which uses the key sha256. description: A map from an algorithm name to a hash of the ciphertext, encoded as unpadded base64. Clients should support the SHA-256 hash, which uses the key sha256. v: type: string description: Version of the encrypted attachments protocol. Must be v2. description: Encrypted file. Event: required: - type type: object properties: content: $ref: '#/components/schemas/EventContent' type: type: string description: The type of event. This SHOULD be namespaced similar to Java package naming conventions. readOnly: true description: Event. EventContent: type: object description: Parent class of all event contents part in the Event. File: required: - filename - url type: object description: This message represents a generic file. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: filename: type: string description: The original filename of the uploaded file. info: $ref: '#/components/schemas/FileInfo' url: type: string description: The URL to the file. file: $ref: '#/components/schemas/EncryptedFile' FileInfo: type: object properties: mimetype: type: string description: The mimetype of the image, e.g. image/jpeg. size: type: integer description: Size of the image in bytes. format: int64 thumbnail_url: type: string description: The URL to a thumbnail of the image. thumbnail_file: $ref: '#/components/schemas/EncryptedFile' thumbnail_info: $ref: '#/components/schemas/ThumbnailInfo' description: File info. ForwardedRoomKey: required: - type type: object description: This event type is used to forward keys for end-to-end encryption. Typically it is encrypted as an m.room.encrypted event, then sent as a to-device event. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' ForwardedRoomKeyContent: required: - algorithm - forwarding_curve25519_key_chain - room_id - sender_claimed_ed25519_key - sender_key - session_id - session_key type: object description: This event type is used to forward keys for end-to-end encryption. Typically it is encrypted as an m.room.encrypted event, then sent as a to-device event. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: algorithm: type: string description: Required. The encryption algorithm the key in this event is to be used with. room_id: type: string description: The room where the key is used. sender_key: type: string description: Required. The Curve25519 key of the device which initiated the session originally. session_id: type: string description: The ID of the session that the key is for. session_key: type: string description: The key to be exchanged. sender_claimed_ed25519_key: type: string description: The Ed25519 key of the device which initiated the session originally. It is 'claimed' because the receiving device has no way to tell that the original room_key actually came from a device which owns the private partof this key unless they have done device verification. forwarding_curve25519_key_chain: type: array description: Chain of Curve25519 keys. It starts out empty, but each time the key is forwarded to another device, the previous sender in the chain is added to the end of the list. For example, if the key is forwarded from A to B to C, this field is empty between A and B, and contains A's Curve25519 key between B and C. items: type: string description: Chain of Curve25519 keys. It starts out empty, but each time the key is forwarded to another device, the previous sender in the chain is added to the end of the list. For example, if the key is forwarded from A to B to C, this field is empty between A and B, and contains A's Curve25519 key between B and C. FullyRead: required: - room_id - type type: object description: The current location of the user's read marker in a room. This event appears in the user's room account data for the room the marker is applicable for. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' room_id: type: string description: The ID of the room associated with this event. FullyReadContent: required: - event_id type: object description: The current location of the user's read marker in a room. This event appears in the user's room account data for the room the marker is applicable for. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: event_id: type: string description: The event the user's read marker is located at in the room. IgnoredUserList: required: - type type: object description: A map of users which are considered ignored is kept in account_data in an event type of m.ignored_user_list. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' IgnoredUserListContent: required: - ignored_users type: object description: A map of users which are considered ignored is kept in account_data in an event type of m.ignored_user_list. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: ignored_users: type: object additionalProperties: type: object description: The map of users to ignore. description: The map of users to ignore. Image: required: - url type: object description: This message represents a single image and an optional thumbnail. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: info: $ref: '#/components/schemas/ImageInfo' url: type: string description: The URL to the file. file: $ref: '#/components/schemas/EncryptedFile' ImageInfo: type: object properties: mimetype: type: string description: The mimetype of the image, e.g. image/jpeg. size: type: integer description: Size of the image in bytes. format: int64 thumbnail_url: type: string description: The URL to a thumbnail of the image. thumbnail_file: $ref: '#/components/schemas/EncryptedFile' thumbnail_info: $ref: '#/components/schemas/ThumbnailInfo' h: type: integer description: The intended display height of the image in pixels. This may differ from the intrinsic dimensions of the image file. format: int64 w: type: integer description: The intended display width of the image in pixels. This may differ from the intrinsic dimensions of the image file. format: int64 description: Image info. Invite: required: - display_name - signed type: object properties: signed: $ref: '#/components/schemas/Signed' display_name: type: string description: A name which can be displayed to represent the user instead of their third party identifier. description: Third-party invites. JWK: required: - alg - ext - k - key - key_opts type: object properties: key: type: string description: Key type. Must be oct. alg: type: string description: Algorithm, Must be A256CTR. ext: type: boolean description: Extractable. Must be true. This is a W3C extension. key_opts: type: array description: Key operations, Must at least contain encrypt and decrypt. items: type: string description: Key operations, Must at least contain encrypt and decrypt. k: type: string description: The key, encoded as urlsafe unpadded base64. description: JSON Web Key. KeyVerificationAccept: required: - type type: object allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' KeyVerificationCancel: required: - type type: object allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' KeyVerificationKey: required: - type type: object description: Sends the ephemeral public key for a device to the partner device. Typically sent as a to-device event. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' KeyVerificationMac: required: - type type: object description: Sends the MAC of a device's key to the partner device. Typically sent as a to-device event. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' KeyVerificationStart: required: - type type: object description: Begins a key verification process. Typically sent as a to-device event. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' Location: required: - geo_uri type: object description: This message represents a real-world location. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: info: $ref: '#/components/schemas/LocationInfo' geo_uri: type: string description: A geo URI representing this location. LocationInfo: type: object properties: thumbnail_url: type: string description: The URL to a thumbnail of the location being represented. thumbnail_file: $ref: '#/components/schemas/EncryptedFile' thumbnail_info: $ref: '#/components/schemas/ThumbnailInfo' description: Location info. MegolmEncryptedContent: required: - algorithm - ciphertext - sender_key type: object description: Megolm encrypted message. allOf: - $ref: '#/components/schemas/RoomEncryptedContent' - type: object properties: ciphertext: type: string description: The encrypted content of the event. The encrypted payload itself. algorithm: type: string description: The encryption algorithm used to encrypt this event. The value of this field determines which other properties will be present. readOnly: true enum: - m.olm.v1.curve25519-aes-sha2, m.megolm.v1.aes-sha2 Notice: type: object description: The ``m.notice`` type is primarily intended for responses from automated clients. An ``m.notice`` message must be treated the same way as a regular ``m.text`` message with two exceptions. Firstly, clients should present ``m.notice`` messages to users in a distinct manner, and secondly, ``m.notice`` messages must never be automatically responded to. This helps to prevent infinite-loop situations where two automated clients continuously exchange messages. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: format: type: string description: The format used in the ``formatted_body``. Currently only ``org.matrix.custom.html`` is supported. formatted_body: type: string description: The formatted version of the ``body``. This is required if ``format`` is specified. NotificationPowerLevel: type: object properties: room: type: string description: The level required to trigger an @room notification. Defaults to 50 if unspecified. format: byte description: Notifications. Offer: required: - sdp - type type: object properties: type: type: string description: The type of session description. Must be 'offer'. sdp: type: string description: The SDP text of the session description. description: Offer OlmEncryptedContent: required: - algorithm - ciphertext - sender_key type: object description: Olm encrypted message. allOf: - $ref: '#/components/schemas/RoomEncryptedContent' - type: object properties: ciphertext: type: object additionalProperties: $ref: '#/components/schemas/CiphertextInfo' description: The encrypted content of the event. A map from the recipient Curve25519 identity key to ciphertext information. For more details, see Messaging Algorithms. PolicyRuleRoom: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: A moderation policy rule which affects room IDs and room aliases. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedPolicyRuleRoomContent' prev_content: $ref: '#/components/schemas/PolicyRuleRoomContent' PolicyRuleRoomContent: required: - entity - reason - recommendation type: object properties: entity: type: string description: The entity affected by this rule. Glob characters * and ? can be used to match zero or more and one or more characters respectively. recommendation: type: string description: The suggested action to take. Currently only m.ban is specified. reason: type: string description: The human-readable description for the recommendation. description: A moderation policy rule which affects room IDs and room aliases. PolicyRuleServer: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: A moderation policy rule which affects servers. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedPolicyRuleServerContent' prev_content: $ref: '#/components/schemas/PolicyRuleServerContent' PolicyRuleServerContent: required: - entity - reason - recommendation type: object properties: entity: type: string description: The entity affected by this rule. Glob characters * and ? can be used to match zero or more and one or more characters respectively. recommendation: type: string description: The suggested action to take. Currently only m.ban is specified. reason: type: string description: The human-readable description for the recommendation. description: A moderation policy rule which affects servers. PolicyRuleUser: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: A moderation policy rule which affects users. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedPolicyRuleUserContent' prev_content: $ref: '#/components/schemas/PolicyRuleUserContent' PolicyRuleUserContent: required: - entity - reason - recommendation type: object properties: entity: type: string description: The entity affected by this rule. Glob characters * and ? can be used to match zero or more and one or more characters respectively. recommendation: type: string description: The suggested action to take. Currently only m.ban is specified. reason: type: string description: The human-readable description for the recommendation. description: A moderation policy rule which affects users. Presence: required: - sender - type type: object description: Informs the client of a user's presence state change. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' sender: type: string description: Contains the fully-qualified ID of the user who sent this event. PresenceContent: required: - presence type: object description: Informs the client of a user's presence state change. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: presence: type: string description: The presence state for this user. enum: - online, offline, unavailable avatar_url: type: string description: The current avatar URL for this user, if any. displayname: type: string description: The current display name for this user, if any. last_active_ago: type: integer description: The last time since this used performed some action, in milliseconds. format: int64 currently_active: type: boolean description: Whether the user is currently active. status_msg: type: string description: An optional description to accompany the presence. PreviousRoom: required: - event_id - room_id type: object properties: room_id: type: string description: The ID of the old room. event_id: type: string description: The event ID of the last known event in the old room. description: A reference to the room this room replaces, if the previous room was upgraded. PublicKeys: required: - public_key type: object properties: key_validity_url: type: string description: An optional URL which can be fetched, with querystring public_key=public_key, to validate whether the key has been revoked. The URL must return a JSON object containing a boolean property named 'valid'. If this URL is absent, the key must be considered valid indefinitely. public_key: type: string description: A base-64 encoded ed25519 key with which token may be signed. description: Public keys. PushRules: required: - type type: object description: All user push rules. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' RawEvent: required: - type type: object allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' properties: type: object Receipt: required: - room_id - type type: object description: A map of which rooms are considered 'direct' rooms for specific users is kept in account_data in an event of type m.direct. The content of this event is an object where the keys are the user IDs and values are lists of room ID strings of the 'direct' rooms for that user ID. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: type: object description: Parent class of all event contents part in the Event. room_id: type: string description: The ID of the room associated with this event. ReceiptContent: type: object additionalProperties: $ref: '#/components/schemas/ReceiptInfo' description: A map of which rooms are considered 'direct' rooms for specific users is kept in account_data in an event of type m.direct. The content of this event is an object where the keys are the user IDs and values are lists of room ID strings of the 'direct' rooms for that user ID. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: empty: type: boolean ReceiptInfo: type: object properties: m.read: type: object additionalProperties: $ref: '#/components/schemas/ReceiptTs' description: A collection of users who have sent m.read receipts for this event. description: Receipts. ReceiptTs: type: object properties: ts: type: integer description: The timestamp the receipt was sent at. format: int64 description: ReceiptContent timestamps. Relates: type: object properties: m.in_reply_to: $ref: '#/components/schemas/Reply' description: Related data. Reply: required: - event_id type: object properties: event_id: type: string description: The origin event id. description: Reply model. RequestedKeyInfo: required: - algorithm - room_id - sender_key - session_id type: object properties: algorithm: type: string description: Required. The encryption algorithm the requested key in this event is to be used with. room_id: type: string description: The room where the key is used. sender_key: type: string description: The Curve25519 key of the device which initiated the session originally. session_id: type: string description: The ID of the session that the key is for. description: Requested key info. RoomAliases: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: This event is sent by a homeserver directly to inform of changes to the list of aliases it knows about for that room. The state_key for this event is set to the homeserver which owns the room alias. The entire set of known aliases for the room is the union of all the m.room.aliases events, one for each homeserver. Clients should check the validity of any room alias given in this list before presenting it to the user as trusted fact. The lists given by this event should be considered simply as advice on which aliases might exist, for which the client can perform the lookup to confirm whether it receives the correct room ID. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomAliasesContent' prev_content: $ref: '#/components/schemas/RoomAliasesContent' RoomAliasesContent: required: - aliases type: object properties: aliases: type: array description: A list of room aliases. items: type: string description: A list of room aliases. description: This event is sent by a homeserver directly to inform of changes to the list of aliases it knows about for that room. The state_key for this event is set to the homeserver which owns the room alias. The entire set of known aliases for the room is the union of all the m.room.aliases events, one for each homeserver. Clients should check the validity of any room alias given in this list before presenting it to the user as trusted fact. The lists given by this event should be considered simply as advice on which aliases might exist, for which the client can perform the lookup to confirm whether it receives the correct room ID. RoomAvatar: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: A picture that is associated with the room. This can be displayed alongside the room information. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomAvatarContent' prev_content: $ref: '#/components/schemas/RoomAvatarContent' RoomAvatarContent: required: - url type: object properties: info: $ref: '#/components/schemas/ImageInfo' url: type: string description: The URL to the image. description: A picture that is associated with the room. This can be displayed alongside the room information. RoomCanonicalAlias: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: This event is used to inform the room about which alias should be considered the canonical one. This could be for display purposes or as suggestion to users which alias to use to advertise the room. A room with an m.room.canonical_alias event with an absent, null, or empty alias field should be treated the same as a room with no m.room.canonical_alias event. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomCanonicalAliasContent' prev_content: $ref: '#/components/schemas/RoomCanonicalAliasContent' RoomCanonicalAliasContent: required: - alias type: object properties: alias: type: string description: The canonical alias description: This event is used to inform the room about which alias should be considered the canonical one. This could be for display purposes or as suggestion to users which alias to use to advertise the room. A room with an m.room.canonical_alias event with an absent, null, or empty alias field should be treated the same as a room with no m.room.canonical_alias event. RoomCreate: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: This is the first event in a room and cannot be changed. It acts as the root of all other events. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomCreateContent' prev_content: $ref: '#/components/schemas/RoomCreateContent' RoomCreateContent: required: - creator type: object properties: creator: type: string description: The user_id of the room creator. This is set by the homeserver. predecessor: $ref: '#/components/schemas/PreviousRoom' m.federate: type: boolean description: Whether users on other servers can join this room. Defaults to ``true`` if key does not exist. room_version: type: string description: The version of the room. Defaults to "1" if the key does not exist. description: This is the first event in a room and cannot be changed. It acts as the root of all other events. RoomEncrypted: required: - event_id - origin_server_ts - room_id - sender - type type: object description: This event type is used when sending encrypted events. It can be used either within a room (in which case it will have all of the Room Event fields), or as a to-device event. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomEncryptedContent' RoomEncryptedContent: required: - algorithm - sender_key type: object description: This event type is used when sending encrypted events. It can be used either within a room (in which case it will have all of the Room Event fields), or as a to-device event. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: algorithm: type: string description: The encryption algorithm used to encrypt this event. The value of this field determines which other properties will be present. enum: - m.olm.v1.curve25519-aes-sha2, m.megolm.v1.aes-sha2 sender_key: type: string description: The Curve25519 key of the sender. device_id: type: string description: The ID of the sending device. Required with Megolm. session_id: type: string description: The ID of the session used to encrypt the message. Required with Megolm. RoomEncryption: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: State Event. Defines how messages sent in this room should be encrypted. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomEncryptionContent' prev_content: $ref: '#/components/schemas/RoomEncryptionContent' RoomEncryptionContent: required: - algorithm type: object description: State Event. Defines how messages sent in this room should be encrypted. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: algorithm: type: string description: The encryption algorithm to be used to encrypt messages sent in this room. Must be 'm.megolm.v1.aes-sha2'. rotation_period_ms: type: integer description: How long the session should be used before changing it. 604800000 (a week) is the recommended default. format: int64 rotation_period_msgs: type: integer description: How many messages should be sent before changing the session. 100 is the recommended default. format: int64 RoomEvent: required: - event_id - origin_server_ts - room_id - sender - type type: object description: Room Event. allOf: - $ref: '#/components/schemas/Event' - type: object properties: sender: type: string description: Contains the fully-qualified ID of the user who sent this event. unsigned: $ref: '#/components/schemas/UnsignedEventContent' event_id: type: string description: The globally unique event identifier. room_id: type: string description: The ID of the room associated with this event. origin_server_ts: type: integer description: Timestamp in milliseconds on originating homeserver when this event was sent. format: int64 RoomGuestAccess: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: This event controls whether guest users are allowed to join rooms. If this event is absent, servers should act as if it is present and has the guest_access value "forbidden". allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomGuestAccessContent' prev_content: $ref: '#/components/schemas/RoomGuestAccessContent' RoomGuestAccessContent: type: object properties: guest_access: type: string description: Whether guests can join the room. enum: - can_join, forbidden description: This event controls whether guest users are allowed to join rooms. If this event is absent, servers should act as if it is present and has the guest_access value "forbidden". RoomHistoryVisibility: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: This event controls whether a user can see the events that happened in a room from before they joined. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomHistoryVisibilityContent' prev_content: $ref: '#/components/schemas/RoomHistoryVisibilityContent' RoomHistoryVisibilityContent: required: - history_visibility type: object properties: history_visibility: type: string description: Who can see the room history. enum: - invited, joined, shared, world_readable description: This event controls whether a user can see the events that happened in a room from before they joined. RoomJoinRules: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: A room may be ``public`` meaning anyone can join the room without any prior action. Alternatively, it can be ``invite`` meaning that a user who wishes to join the room must first receive an invite to the room from someone already inside of the room. Currently, ``knock`` and ``private`` are reserved keywords which are not implemented. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomJoinRulesContent' prev_content: $ref: '#/components/schemas/RoomJoinRulesContent' RoomJoinRulesContent: type: object properties: join_rule: type: string description: The type of rules used for users wishing to join this room. enum: - public - knock - invite - private description: A room may be ``public`` meaning anyone can join the room without any prior action. Alternatively, it can be ``invite`` meaning that a user who wishes to join the room must first receive an invite to the room from someone already inside of the room. Currently, ``knock`` and ``private`` are reserved keywords which are not implemented. RoomKey: required: - type type: object description: This event type is used to exchange keys for end-to-end encryption. Typically it is encrypted as an m.room.encrypted event, then sent as a to-device event. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' RoomKeyContent: required: - algorithm - room_id - session_id - session_key type: object description: This event type is used to exchange keys for end-to-end encryption. Typically it is encrypted as an m.room.encrypted event, then sent as a to-device event. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: algorithm: type: string description: The encryption algorithm the key in this event is to be used with. Must be 'm.megolm.v1.aes-sha2'. room_id: type: string description: The room where the key is used. session_id: type: string description: The ID of the session that the key is for. session_key: type: string description: The key to be exchanged. RoomKeyRequest: required: - type type: object description: This event type is used to request keys for end-to-end encryption. It is sent as an unencrypted to-device event. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' RoomKeyRequestContent: required: - action - request_id - requesting_device_id type: object description: This event type is used to request keys for end-to-end encryption. It is sent as an unencrypted to-device event. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: body: $ref: '#/components/schemas/RequestedKeyInfo' action: type: string description: Request action. enum: - request, cancel_request requesting_device_id: type: string description: ID of the device requesting the key. request_id: type: string description: A random string uniquely identifying the request for a key. If the key is requested multiple times, it should be reused. It should also reused in order to cancel a request. RoomMember: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: Adjusts the membership state for a user in a room. It is preferable to use the membership APIs (/rooms//invite etc) when performing membership actions rather than adjusting the state directly as there are a restricted set of valid transformations. For example, user A cannot force user B to join a room, and trying to force this state change directly will fail. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomMemberContent' prev_content: $ref: '#/components/schemas/RoomMemberContent' RoomMemberContent: required: - membership type: object description: Adjusts the membership state for a user in a room. It is preferable to use the membership APIs (/rooms//invite etc) when performing membership actions rather than adjusting the state directly as there are a restricted set of valid transformations. For example, user A cannot force user B to join a room, and trying to force this state change directly will fail. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: membership: type: string description: The membership state of the user. enum: - invite, join, knock, leave, ban unsigned: $ref: '#/components/schemas/Unsigned' avatar_url: type: string description: The avatar URL for this user, if any. This is added by the homeserver. displayname: type: string description: The display name for this user, if any. This is added by the homeserver. third_party_invite: $ref: '#/components/schemas/Invite' is_direct: type: boolean RoomMessage: required: - event_id - origin_server_ts - room_id - sender - type type: object description: This event is used when sending messages in a room. Messages are not limited to be text. The ``msgtype`` key outlines the type of message, e.g. text, audio, image, video, etc. The ``body`` key is text and MUST be used with every kind of ``msgtype`` as a fallback mechanism for when a client cannot render a message. This allows clients to display *something* even if it is just plain text. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomMessageContent' RoomMessageContent: type: object description: This event is used when sending messages in a room. Messages are not limited to be text. The ``msgtype`` key outlines the type of message, e.g. text, audio, image, video, etc. The ``body`` key is text and MUST be used with every kind of ``msgtype`` as a fallback mechanism for when a client cannot render a message. This allows clients to display *something* even if it is just plain text. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: body: type: string description: The textual representation of this message. m.relates_to: $ref: '#/components/schemas/Relates' msgtype: type: string description: Message type. readOnly: true RoomMessageFeedback: required: - event_id - origin_server_ts - room_id - sender - type type: object description: 'DEPRECATED. **NB: Usage of this event is discouraged in favour of the** `receipts module`_.' allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomMessageFeedbackContent' RoomMessageFeedbackContent: type: object properties: type: type: string description: The type of feedback. enum: - delivered, read target_event_id: type: string description: The event that this feedback is related to. description: 'DEPRECATED. **NB: Usage of this event is discouraged in favour of the** `receipts module`_.' RoomName: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: A room has an opaque room ID which is not human-friendly to read. A room alias is human-friendly, but not all rooms have room aliases. The room name is a human-friendly string designed to be displayed to the end-user. The room name is not unique, as multiple rooms can have the same room name set. A room with an m.room.name event with an absent, null, or empty name field should be treated the same as a room with no m.room.name event. An event of this type is automatically created when creating a room using /createRoom with the name key. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomNameContent' prev_content: $ref: '#/components/schemas/RoomNameContent' RoomNameContent: required: - name type: object description: A room has an opaque room ID which is not human-friendly to read. A room alias is human-friendly, but not all rooms have room aliases. The room name is a human-friendly string designed to be displayed to the end-user. The room name is not unique, as multiple rooms can have the same room name set. A room with an m.room.name event with an absent, null, or empty name field should be treated the same as a room with no m.room.name event. An event of this type is automatically created when creating a room using /createRoom with the name key. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: name: type: string description: The name of the room. This MUST NOT exceed 255 bytes. RoomPinned: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: This event is used to "pin" particular events in a room for other participants to review later. The order of the pinned events is guaranteed and based upon the order supplied in the event. Clients should be aware that the current user may not be able to see some of the events pinned due to visibility settings in the room. Clients are responsible for determining if a particular event in the pinned list is displayable, and have the option to not display it if it cannot be pinned in the client. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomPinnedContent' prev_content: $ref: '#/components/schemas/RoomPinnedContent' RoomPinnedContent: required: - pinned type: object description: This event is used to "pin" particular events in a room for other participants to review later. The order of the pinned events is guaranteed and based upon the order supplied in the event. Clients should be aware that the current user may not be able to see some of the events pinned due to visibility settings in the room. Clients are responsible for determining if a particular event in the pinned list is displayable, and have the option to not display it if it cannot be pinned in the client. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: pinned: type: array description: An ordered list of event IDs to pin. items: type: string description: An ordered list of event IDs to pin. RoomPowerLevels: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: This event specifies the minimum level a user must have in order to perform a certain action. It also specifies the levels of each user in the room. If a user_id is in the users list, then that user_id has the associated power level. Otherwise they have the default level users_default. If users_default is not supplied, it is assumed to be 0. If the room contains no m.room.power_levels event, the room's creator has a power level of 100, and all other users have a power level of 0. The level required to send a certain event is governed by events, state_default and events_default. If an event type is specified in events, then the user must have at least the level specified in order to send that event. If the event type is not supplied, it defaults to events_default for Message Events and state_default for State Events. If there is no state_default in the m.room.power_levels event, the state_default is 50. If there is no events_default in the m.room.power_levels event, the events_default is 0. If the room contains no m.room.power_levels event, both the state_default and events_default are 0. The power level required to invite a user to the room, kick a user from the room, ban a user from the room, or redact an event, is defined by invite, kick, ban, and redact, respectively. Each of these levels defaults to 50 if they are not specified in the m.room.power_levels event, or if the room contains no m.room.power_levels event. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomPowerLevelsContent' prev_content: $ref: '#/components/schemas/RoomPowerLevelsContent' RoomPowerLevelsContent: type: object description: This event specifies the minimum level a user must have in order to perform a certain action. It also specifies the levels of each user in the room. If a user_id is in the users list, then that user_id has the associated power level. Otherwise they have the default level users_default. If users_default is not supplied, it is assumed to be 0. If the room contains no m.room.power_levels event, the room's creator has a power level of 100, and all other users have a power level of 0. The level required to send a certain event is governed by events, state_default and events_default. If an event type is specified in events, then the user must have at least the level specified in order to send that event. If the event type is not supplied, it defaults to events_default for Message Events and state_default for State Events. If there is no state_default in the m.room.power_levels event, the state_default is 50. If there is no events_default in the m.room.power_levels event, the events_default is 0. If the room contains no m.room.power_levels event, both the state_default and events_default are 0. The power level required to invite a user to the room, kick a user from the room, ban a user from the room, or redact an event, is defined by invite, kick, ban, and redact, respectively. Each of these levels defaults to 50 if they are not specified in the m.room.power_levels event, or if the room contains no m.room.power_levels event. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: ban: type: string description: The level required to ban a user. format: byte events: type: object additionalProperties: type: string description: The level required to send specific event types. This is a mapping from event type to power level required. format: byte description: The level required to send specific event types. This is a mapping from event type to power level required. invite: type: string description: The level required to invite a user. format: byte kick: type: string description: The level required to kick a user. format: byte redact: type: string description: The level required to redact an event. format: byte users: type: object additionalProperties: type: string description: The power levels for specific users. This is a mapping from user_id to power level for that user. format: byte description: The power levels for specific users. This is a mapping from user_id to power level for that user. notifications: $ref: '#/components/schemas/NotificationPowerLevel' events_default: type: string description: The default level required to send message events. Can be overridden by the events key. format: byte state_default: type: string description: The default level required to send state events. Can be overridden by the events key. Defaults to 50 if unspecified, but 0 if there is no m.room.power_levels event at all. format: byte users_default: type: string description: The default power level for every user in the room, unless their user_id is mentioned in the users key. format: byte RoomRedaction: required: - event_id - origin_server_ts - room_id - sender - type type: object description: Events can be redacted by either room or server admins. Redacting an event means that all keys not required by the protocol are stripped off, allowing admins to remove offensive or illegal content that may have been attached to any event. This cannot be undone, allowing server owners to physically delete the offending data. There is also a concept of a moderator hiding a message event, which can be undone, but cannot be applied to state events. The event that has been redacted is specified in the redacts event level key. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomRedactionContent' RoomRedactionContent: type: object description: Events can be redacted by either room or server admins. Redacting an event means that all keys not required by the protocol are stripped off, allowing admins to remove offensive or illegal content that may have been attached to any event. This cannot be undone, allowing server owners to physically delete the offending data. There is also a concept of a moderator hiding a message event, which can be undone, but cannot be applied to state events. The event that has been redacted is specified in the redacts event level key. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: reason: type: string description: The reason for the redaction, if any. RoomServerAcl: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: An event to indicate which servers are permitted to participate in the room. Server ACLs may allow or deny groups of hosts. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomServerAclContent' prev_content: $ref: '#/components/schemas/RoomServerAclContent' RoomServerAclContent: type: object description: An event to indicate which servers are permitted to participate in the room. Server ACLs may allow or deny groups of hosts. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: allow: type: array description: The server names to allow in the room, excluding any port information. Wildcards may be used to cover a wider range of hosts, where * matches zero or more characters and ? matches exactly one character. This defaults to an empty list when not provided, effectively disallowing every server. items: type: string description: The server names to allow in the room, excluding any port information. Wildcards may be used to cover a wider range of hosts, where * matches zero or more characters and ? matches exactly one character. This defaults to an empty list when not provided, effectively disallowing every server. deny: type: array description: The server names to disallow in the room, excluding any port information. Wildcards may be used to cover a wider range of hosts, where * matches zero or more characters and ? matches exactly one character. This defaults to an empty list when not provided. items: type: string description: The server names to disallow in the room, excluding any port information. Wildcards may be used to cover a wider range of hosts, where * matches zero or more characters and ? matches exactly one character. This defaults to an empty list when not provided. allow_ip_literals: type: boolean description: True to allow server names that are IP address literals. False to deny. Defaults to true if missing or otherwise not a boolean. This is strongly recommended to be set to false as servers running with IP literal names are strongly discouraged in order to require legitimate homeservers to be backed by a valid registered domain name. RoomThirdPartyInvite: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: Acts as an m.room.member invite event, where there isn't a target user_id to invite. This event contains a token and a public key whose private key must be used to sign the token. Any user who can present that signature may use this invitation to join the target room. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomThirdPartyInviteContent' prev_content: $ref: '#/components/schemas/RoomThirdPartyInviteContent' RoomThirdPartyInviteContent: required: - display_name - key_validity_url - public_key type: object description: Acts as an m.room.member invite event, where there isn't a target user_id to invite. This event contains a token and a public key whose private key must be used to sign the token. Any user who can present that signature may use this invitation to join the target room. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: display_name: type: string description: A user-readable string which represents the user who has been invited. This should not contain the user's third party ID, as otherwise when the invite is accepted it would leak the association between the matrix ID and the third party ID. key_validity_url: type: string description: A URL which can be fetched, with querystring public_key=public_key, to validate whether the key has been revoked. The URL must return a JSON object containing a boolean property named 'valid'. public_key: type: string description: A base64-encoded ed25519 key with which token must be signed (though a signature from any entry in public_keys is also sufficient). This exists for backwards compatibility. public_keys: type: array description: Keys with which the token may be signed. items: $ref: '#/components/schemas/PublicKeys' RoomTombstone: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedTombstoneContent' prev_content: $ref: '#/components/schemas/TombstoneContent' RoomTopic: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: A topic is a short message detailing what is currently being discussed in the room. It can also be used as a way to display extra information about the room, which may not be suitable for the room name. The room topic can also be set when creating a room using /createRoom with the topic key. allOf: - $ref: '#/components/schemas/StateEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedRoomTopicContent' prev_content: $ref: '#/components/schemas/RoomTopicContent' RoomTopicContent: required: - topic type: object description: A topic is a short message detailing what is currently being discussed in the room. It can also be used as a way to display extra information about the room, which may not be suitable for the room name. The room topic can also be set when creating a room using /createRoom with the topic key. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: topic: type: string description: The topic text ServerNotice: required: - server_notice_type type: object description: Represents a server notice for a user. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: server_notice_type: type: string description: The type of notice being represented. admin_contact: type: string description: A URI giving a contact method for the server administrator. Required if the notice type is m.server_notice.usage_limit_reached. limit_type: type: string description: The kind of usage limit the server has exceeded. Required if the notice type is m.server_notice.usage_limit_reached. Signed: required: - mxid - signatures - token type: object properties: mxid: type: string description: The invited matrix user ID. Must be equal to the user_id property of the event. token: type: string description: The token property of the containing third_party_invite object. signatures: type: object additionalProperties: type: object additionalProperties: type: string description: A single signature from the verifying server, in the format specified by the Signing Events section of the server-server API. description: A single signature from the verifying server, in the format specified by the Signing Events section of the server-server API. description: A single signature from the verifying server, in the format specified by the Signing Events section of the server-server API. description: Signed part of the invitation request. StateEvent: required: - event_id - origin_server_ts - room_id - sender - state_key - type type: object description: Event. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: prev_content: $ref: '#/components/schemas/EventContent' state_key: type: string description: ' A unique key which defines the overwriting semantics for this piece of room state. This value is often a zero-length string. The presence of this key makes this event a State Event. The key MUST NOT start with ''_''.' Sticker: required: - event_id - origin_server_ts - room_id - sender - type type: object description: This message represents a single sticker image. allOf: - $ref: '#/components/schemas/RoomEvent' - type: object properties: content: $ref: '#/components/schemas/EventContent' unsigned: $ref: '#/components/schemas/UnsignedStickerContent' StickerContent: required: - body - info - url type: object description: This message represents a single sticker image. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: body: type: string description: A textual representation or associated description of the sticker image. This could be the alt text of the original image, or a message to accompany and further describe the sticker. info: $ref: '#/components/schemas/ImageInfo' url: type: string description: The URL to the sticker image. This must be a valid mxc:// URI. Tag: required: - type type: object description: Informs the client of tags on a room. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' TagContent: type: object description: Informs the client of tags on a room. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: tags: type: object additionalProperties: $ref: '#/components/schemas/TagInfo' description: The tags on the room and their contents. TagInfo: type: object properties: order: type: integer description: A number in a range [0,1] describing a relative position of the room under the given tag. format: int64 description: TagContent info. Text: type: object description: This message is the most basic message and is used to represent text. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: format: type: string description: The format used in the ``formatted_body``. Currently only ``org.matrix.custom.html`` is supported. formatted_body: type: string description: The formatted version of the ``body``. This is required if ``format`` is specified. ThumbnailInfo: type: object properties: mimetype: type: string description: The mimetype of the image, e.g. image/jpeg. size: type: integer description: Size of the image in bytes. format: int64 h: type: integer description: The intended display height of the image in pixels. This may differ from the intrinsic dimensions of the image file. format: int64 w: type: integer description: The intended display width of the image in pixels. This may differ from the intrinsic dimensions of the image file. format: int64 description: Thumbnail info. TombstoneContent: required: - body - replacement_room type: object properties: body: type: string description: A server-defined message. replacement_room: type: string description: The new room the client should be visiting. description: A state event signifying that a room has been upgraded to a different room version, and that clients should go there. TransactionRequest: required: - events type: object properties: events: type: array description: A list of events, formatted as per the Client-Server API. items: $ref: '#/components/schemas/Event' description: JSON body request of the transaction api. Typing: required: - room_id - type type: object description: Informs the client of the list of users currently typing. allOf: - $ref: '#/components/schemas/Event' - type: object properties: content: $ref: '#/components/schemas/EventContent' room_id: type: string description: The ID of the room associated with this event. TypingContent: required: - user_ids type: object description: Informs the client of the list of users currently typing. allOf: - $ref: '#/components/schemas/EventContent' - type: object properties: user_ids: type: array description: The list of user IDs typing in this room, if any. items: type: string description: The list of user IDs typing in this room, if any. Unsigned: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/EventContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedAcceptedTermsContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/AcceptedTermsContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedCallAnswerContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/CallAnswerContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedCallCandidatesContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/CallCandidatesContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedCallHangupContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/CallHangupContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedCallInviteContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/CallInviteContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedEventContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/EventContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedPolicyRuleRoomContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/PolicyRuleRoomContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedPolicyRuleServerContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/PolicyRuleServerContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedPolicyRuleUserContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/PolicyRuleUserContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomAliasesContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomAliasesContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomAvatarContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomAvatarContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomCanonicalAliasContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomCanonicalAliasContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomCreateContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomCreateContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomEncryptedContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomEncryptedContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomEncryptionContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomEncryptionContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomGuestAccessContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomGuestAccessContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomHistoryVisibilityContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomHistoryVisibilityContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomJoinRulesContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomJoinRulesContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomMemberContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomMemberContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomMessageContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomMessageContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomMessageFeedbackContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomMessageFeedbackContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomNameContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomNameContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomPinnedContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomPinnedContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomPowerLevelsContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomPowerLevelsContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomRedactionContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomRedactionContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomServerAclContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomServerAclContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomThirdPartyInviteContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomThirdPartyInviteContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedRoomTopicContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/RoomTopicContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedStickerContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/StickerContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. UnsignedTombstoneContent: type: object properties: age: type: integer description: The time in milliseconds that has elapsed since the event was sent. This field is generated by the local homeserver, and may be incorrect if the local time on at least one of the two servers is out of sync, which can cause the age to either be negative or greater than it actually is. format: int64 redacted_because: $ref: '#/components/schemas/Event' transaction_id: type: string description: The client-supplied transaction ID, if the client being given the event is the same one which sent it. prev_content: $ref: '#/components/schemas/TombstoneContent' invite_room_state: type: array description: This contains an array of StrippedState Events. These events provide information on a subset of state events such as the room name. items: $ref: '#/components/schemas/Event' description: Unsigned addition data. Video: required: - url type: object description: This message represents a single video clip. allOf: - $ref: '#/components/schemas/RoomMessageContent' - type: object properties: info: $ref: '#/components/schemas/VideoInfo' url: type: string description: The URL to the video clip. file: $ref: '#/components/schemas/EncryptedFile' VideoInfo: type: object properties: mimetype: type: string description: The mimetype of the image, e.g. image/jpeg. size: type: integer description: Size of the image in bytes. format: int64 duration: type: integer description: The duration of the video in milliseconds. format: int64 thumbnail_url: type: string description: The URL to a thumbnail of the image. thumbnail_file: $ref: '#/components/schemas/EncryptedFile' thumbnail_info: $ref: '#/components/schemas/ThumbnailInfo' h: type: integer description: The intended display height of the image in pixels. This may differ from the intrinsic dimensions of the image file. format: int64 w: type: integer description: The intended display width of the image in pixels. This may differ from the intrinsic dimensions of the image file. format: int64 description: Video info. ErrorResponse: type: object properties: errcode: type: string error: type: string ProtocolUser: required: - fields - protocol - userid type: object properties: userid: type: string description: A Matrix User ID represting a third party user. protocol: type: string description: The protocol ID that the third party location is a part of. fields: type: object additionalProperties: type: string description: Information used to identify this third party location. description: Information used to identify this third party location. description: Protocol User. ProtocolLocation: required: - alias - fields - protocol type: object properties: alias: type: string description: An alias for a matrix room. protocol: type: string description: The protocol ID that the third party location is a part of. fields: type: object additionalProperties: type: string description: Information used to identify this third party location. description: Information used to identify this third party location. description: Protocol Location. FieldMetadata: required: - placeholder - regexp type: object properties: regexp: type: string description: A regular expression for validation of a field's value. placeholder: type: string description: An placeholder serving as a valid example of the field value. description: Definition of valid values for a field. Instance: required: - desc - fields - network_id type: object properties: desc: type: string description: Description. icon: type: string description: An optional content URI representing the protocol. Overrides the one provided at the higher level Protocol object. fields: type: object additionalProperties: type: string description: Preset values for fields the client may use to search by. description: Preset values for fields the client may use to search by. network_id: type: string description: A unique identifier across all instances. description: Instance. Protocol: required: - field_types - icon - instances - location_fields - user_fields type: object properties: icon: type: string description: An icon representing the third party protocol. instances: type: array description: A list of objects representing independent instances of configuration. For instance multiple networkson IRC if multiple are bridged by the same bridge. items: $ref: '#/components/schemas/Instance' user_fields: type: array description: Fields used to identify a third party user. items: type: string description: Fields used to identify a third party user. location_fields: type: array description: Fields used to identify a third party location. items: type: string description: Fields used to identify a third party location. field_types: type: object additionalProperties: $ref: '#/components/schemas/FieldMetadata' description: All location or user fields should have an entry here. description: Protocol metadata. RoomVisibility: required: - visibility type: object properties: visibility: type: string description: Whether the room should be visible (public) in the directory or not (private). enum: - public - private description: JSON body request of the room service api.