Change RST code formatting markup to Markdown

pull/977/head
Will 4 years ago committed by Richard van der Hoff
parent c7cf90abfa
commit 27f8867aa0

@ -43,9 +43,9 @@ properties:
field_types: field_types:
title: Field Types title: Field Types
description: |- description: |-
The type definitions for the fields defined in the ``user_fields`` and The type definitions for the fields defined in the `user_fields` and
``location_fields``. Each entry in those arrays MUST have an entry here. The `location_fields`. Each entry in those arrays MUST have an entry here. The
``string`` key for this object is field name itself. `string` key for this object is field name itself.
May be an empty object if no fields are defined. May be an empty object if no fields are defined.
type: object type: object
@ -101,7 +101,7 @@ properties:
example: "mxc://example.org/JkLmNoPq" example: "mxc://example.org/JkLmNoPq"
fields: fields:
type: object type: object
description: Preset values for ``fields`` the client may use to search by. description: Preset values for `fields` the client may use to search by.
example: { example: {
"network": "freenode" "network": "freenode"
} }

@ -13,6 +13,6 @@
# limitations under the License. # limitations under the License.
homeserverAccessToken: homeserverAccessToken:
type: apiKey type: apiKey
description: The ``hs_token`` provided by the application service's registration. description: The `hs_token` provided by the application service's registration.
name: access_token name: access_token
in: query in: query

@ -34,7 +34,7 @@ paths:
description: |- description: |-
This endpoint is invoked by the homeserver on an application service to query This endpoint is invoked by the homeserver on an application service to query
the existence of a given room alias. The homeserver will only query room the existence of a given room alias. The homeserver will only query room
aliases inside the application service's ``aliases`` namespace. The aliases inside the application service's `aliases` namespace. The
homeserver will send this request when it receives a request to join a homeserver will send this request when it receives a request to join a
room alias within the application service's namespace. room alias within the application service's namespace.
operationId: queryRoomByAlias operationId: queryRoomByAlias

@ -34,7 +34,7 @@ paths:
description: |- description: |-
This endpoint is invoked by the homeserver on an application service to query This endpoint is invoked by the homeserver on an application service to query
the existence of a given user ID. The homeserver will only query user IDs the existence of a given user ID. The homeserver will only query user IDs
inside the application service's ``users`` namespace. The homeserver will inside the application service's `users` namespace. The homeserver will
send this request when it receives an event for an unknown user ID in send this request when it receives an event for an unknown user ID in
the application service's namespace, such as a room invite. the application service's namespace, such as a room invite.
operationId: queryUserById operationId: queryUserById

@ -34,7 +34,7 @@ paths:
(or batch of events) to the application service. (or batch of events) to the application service.
Note that the application service should distinguish state events Note that the application service should distinguish state events
from message events via the presence of a ``state_key``, rather than from message events via the presence of a `state_key`, rather than
via the event type. via the event type.
operationId: sendTransaction operationId: sendTransaction
security: security:

@ -33,7 +33,7 @@ paths:
description: |- description: |-
Set some account_data for the client. This config is only visible to the user Set some account_data for the client. This config is only visible to the user
that set the account_data. The config will be synced to clients in the that set the account_data. The config will be synced to clients in the
top-level ``account_data``. top-level `account_data`.
operationId: setAccountData operationId: setAccountData
security: security:
- accessToken: [] - accessToken: []
@ -110,7 +110,7 @@ paths:
description: |- description: |-
Set some account_data for the client on a given room. This config is only Set some account_data for the client on a given room. This config is only
visible to the user that set the account_data. The config will be synced to visible to the user that set the account_data. The config will be synced to
clients in the per-room ``account_data``. clients in the per-room `account_data`.
operationId: setAccountDataPerRoom operationId: setAccountDataPerRoom
security: security:
- accessToken: [] - accessToken: []

@ -93,13 +93,13 @@ paths:
description: |- description: |-
Adds contact information to the user's account. Adds contact information to the user's account.
This endpoint is deprecated in favour of the more specific ``/3pid/add`` This endpoint is deprecated in favour of the more specific `/3pid/add`
and ``/3pid/bind`` endpoints. and `/3pid/bind` endpoints.
**Note:** **Note:**
Previously this endpoint supported a ``bind`` parameter. This parameter Previously this endpoint supported a `bind` parameter. This parameter
has been removed, making this endpoint behave as though it was ``false``. has been removed, making this endpoint behave as though it was `false`.
This results in this endpoint being an equivalent to ``/3pid/bind`` rather This results in this endpoint being an equivalent to `/3pid/bind` rather
than dual-purpose. than dual-purpose.
operationId: post3PIDs operationId: post3PIDs
deprecated: true deprecated: true
@ -157,8 +157,8 @@ paths:
description: |- description: |-
An optional field containing a URL where the client must An optional field containing a URL where the client must
submit the validation token to, with identical parameters submit the validation token to, with identical parameters
to the Identity Service API's ``POST to the Identity Service API's `POST
/validate/email/submitToken`` endpoint (without the requirement /validate/email/submitToken` endpoint (without the requirement
for an access token). The homeserver must send this token to the for an access token). The homeserver must send this token to the
user (if applicable), who should then be prompted to provide it user (if applicable), who should then be prompted to provide it
to the client. to the client.
@ -166,7 +166,7 @@ paths:
If this field is not present, the client can assume that If this field is not present, the client can assume that
verification will happen without the client's involvement verification will happen without the client's involvement
provided the homeserver advertises this specification version provided the homeserver advertises this specification version
in the ``/versions`` response (ie: r0.5.0). in the `/versions` response (ie: r0.5.0).
example: "https://example.org/path/to/submitToken" example: "https://example.org/path/to/submitToken"
403: 403:
description: The credentials could not be verified with the identity server. description: The credentials could not be verified with the identity server.
@ -294,7 +294,7 @@ paths:
Removes a third party identifier from the user's account. This might not Removes a third party identifier from the user's account. This might not
cause an unbind of the identifier from the identity server. cause an unbind of the identifier from the identity server.
Unlike other endpoints, this endpoint does not take an ``id_access_token`` Unlike other endpoints, this endpoint does not take an `id_access_token`
parameter because the homeserver is expected to sign the request to the parameter because the homeserver is expected to sign the request to the
identity server instead. identity server instead.
operationId: delete3pidFromAccount operationId: delete3pidFromAccount
@ -311,9 +311,9 @@ paths:
type: string type: string
description: |- description: |-
The identity server to unbind from. If not provided, the homeserver The identity server to unbind from. If not provided, the homeserver
MUST use the ``id_server`` the identifier was added through. If the MUST use the `id_server` the identifier was added through. If the
homeserver does not know the original ``id_server``, it MUST return homeserver does not know the original `id_server`, it MUST return
a ``id_server_unbind_result`` of ``no-support``. a `id_server_unbind_result` of `no-support`.
example: "example.org" example: "example.org"
medium: medium:
type: string type: string
@ -342,8 +342,8 @@ paths:
- "success" - "success"
description: |- description: |-
An indicator as to whether or not the homeserver was able to unbind An indicator as to whether or not the homeserver was able to unbind
the 3PID from the identity server. ``success`` indicates that the the 3PID from the identity server. `success` indicates that the
indentity server has unbound the identifier whereas ``no-support`` indentity server has unbound the identifier whereas `no-support`
indicates that the identity server refuses to support the request indicates that the identity server refuses to support the request
or the homeserver was not able to determine an identity server to or the homeserver was not able to determine an identity server to
unbind from. unbind from.
@ -359,7 +359,7 @@ paths:
Removes a user's third party identifier from the provided identity server Removes a user's third party identifier from the provided identity server
without removing it from the homeserver. without removing it from the homeserver.
Unlike other endpoints, this endpoint does not take an ``id_access_token`` Unlike other endpoints, this endpoint does not take an `id_access_token`
parameter because the homeserver is expected to sign the request to the parameter because the homeserver is expected to sign the request to the
identity server instead. identity server instead.
operationId: unbind3pidFromAccount operationId: unbind3pidFromAccount
@ -376,9 +376,9 @@ paths:
type: string type: string
description: |- description: |-
The identity server to unbind from. If not provided, the homeserver The identity server to unbind from. If not provided, the homeserver
MUST use the ``id_server`` the identifier was added through. If the MUST use the `id_server` the identifier was added through. If the
homeserver does not know the original ``id_server``, it MUST return homeserver does not know the original `id_server`, it MUST return
a ``id_server_unbind_result`` of ``no-support``. a `id_server_unbind_result` of `no-support`.
example: "example.org" example: "example.org"
medium: medium:
type: string type: string
@ -407,8 +407,8 @@ paths:
- "success" - "success"
description: |- description: |-
An indicator as to whether or not the identity server was able to unbind An indicator as to whether or not the identity server was able to unbind
the 3PID. ``success`` indicates that the identity server has unbound the the 3PID. `success` indicates that the identity server has unbound the
identifier whereas ``no-support`` indicates that the identity server identifier whereas `no-support` indicates that the identity server
refuses to support the request or the homeserver was not able to determine refuses to support the request or the homeserver was not able to determine
an identity server to unbind from. an identity server to unbind from.
example: "success" example: "success"
@ -456,7 +456,7 @@ paths:
400: 400:
description: |- description: |-
The third party identifier is already in use on the homeserver, or The third party identifier is already in use on the homeserver, or
the request was invalid. The error code ``M_SERVER_NOT_TRUSTED`` the request was invalid. The error code `M_SERVER_NOT_TRUSTED`
can be returned if the server does not trust/support the identity server can be returned if the server does not trust/support the identity server
provided in the request. provided in the request.
schema: schema:
@ -503,7 +503,7 @@ paths:
400: 400:
description: |- description: |-
The third party identifier is already in use on the homeserver, or The third party identifier is already in use on the homeserver, or
the request was invalid. The error code ``M_SERVER_NOT_TRUSTED`` the request was invalid. The error code `M_SERVER_NOT_TRUSTED`
can be returned if the server does not trust/support the identity server can be returned if the server does not trust/support the identity server
provided in the request. provided in the request.
schema: schema:

@ -40,7 +40,7 @@ paths:
This API is similar to the room directory visibility API used by clients This API is similar to the room directory visibility API used by clients
to update the homeserver's more general room directory. to update the homeserver's more general room directory.
This API requires the use of an application service access token (``as_token``) 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 instead of a typical client's access_token. This API cannot be invoked by
users who are not identified as application services. users who are not identified as application services.
operationId: updateAppserviceRoomDirectoryVsibility operationId: updateAppserviceRoomDirectoryVsibility

@ -62,7 +62,7 @@ paths:
reason: reason:
type: string type: string
description: The reason the user has been banned. This will be supplied as the description: The reason the user has been banned. This will be supplied as the
``reason`` on the target's updated `m.room.member`_ event. `reason` on the target's updated `m.room.member`_ event.
required: ["user_id"] required: ["user_id"]
responses: responses:
200: 200:
@ -74,7 +74,7 @@ paths:
type: object type: object
403: 403:
description: |- description: |-
You do not have permission to ban the user from the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are: You do not have permission to ban the user from the room. A meaningful `errcode` and description error text will be returned. Example reasons for rejections are:
- The banner is not currently in the room. - The banner is not currently in the room.
- The banner's power level is insufficient to ban users from the room. - The banner's power level is insufficient to ban users from the room.
@ -121,7 +121,7 @@ paths:
reason: reason:
type: string type: string
description: |- description: |-
Optional reason to be included as the ``reason`` on the subsequent Optional reason to be included as the `reason` on the subsequent
membership event. membership event.
required: ["user_id"] required: ["user_id"]
responses: responses:
@ -134,7 +134,7 @@ paths:
type: object type: object
403: 403:
description: |- description: |-
You do not have permission to unban the user from the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are: You do not have permission to unban the user from the room. A meaningful `errcode` and description error text will be returned. Example reasons for rejections are:
- The unbanner's power level is insufficient to unban users from the room. - The unbanner's power level is insufficient to unban users from the room.
examples: examples:

@ -112,14 +112,14 @@ paths:
x-example: matrix.org x-example: matrix.org
required: true required: true
description: | description: |
The server name from the ``mxc://`` URI (the authoritory component) The server name from the `mxc://` URI (the authoritory component)
- in: path - in: path
type: string type: string
name: mediaId name: mediaId
x-example: ascERGshawAWawugaAcauga x-example: ascERGshawAWawugaAcauga
required: true required: true
description: | description: |
The media ID from the ``mxc://`` URI (the path component) The media ID from the `mxc://` URI (the path component)
- in: query - in: query
type: boolean type: boolean
name: allow_remote name: allow_remote
@ -177,20 +177,20 @@ paths:
x-example: matrix.org x-example: matrix.org
required: true required: true
description: | description: |
The server name from the ``mxc://`` URI (the authoritory component) The server name from the `mxc://` URI (the authoritory component)
- in: path - in: path
type: string type: string
name: mediaId name: mediaId
x-example: ascERGshawAWawugaAcauga x-example: ascERGshawAWawugaAcauga
required: true required: true
description: | description: |
The media ID from the ``mxc://`` URI (the path component) The media ID from the `mxc://` URI (the path component)
- in: path - in: path
type: string type: string
name: fileName name: fileName
x-example: filename.jpg x-example: filename.jpg
required: true required: true
description: A filename to give in the ``Content-Disposition`` header. description: A filename to give in the `Content-Disposition` header.
- in: query - in: query
type: boolean type: boolean
name: allow_remote name: allow_remote
@ -210,7 +210,7 @@ paths:
type: "string" type: "string"
Content-Disposition: Content-Disposition:
description: |- description: |-
The ``fileName`` requested or the name of the file that was previously The `fileName` requested or the name of the file that was previously
uploaded, if set. uploaded, if set.
type: "string" type: "string"
schema: schema:
@ -248,14 +248,14 @@ paths:
required: true required: true
x-example: example.org x-example: example.org
description: | description: |
The server name from the ``mxc://`` URI (the authoritory component) The server name from the `mxc://` URI (the authoritory component)
- in: path - in: path
type: string type: string
name: mediaId name: mediaId
x-example: ascERGshawAWawugaAcauga x-example: ascERGshawAWawugaAcauga
required: true required: true
description: | description: |
The media ID from the ``mxc://`` URI (the path component) The media ID from the `mxc://` URI (the path component)
- in: query - in: query
type: integer type: integer
x-example: 64 x-example: 64

@ -38,41 +38,41 @@ paths:
the new room, including checking power levels for each event. It MUST the new room, including checking power levels for each event. It MUST
apply the events implied by the request in the following order: apply the events implied by the request in the following order:
1. The ``m.room.create`` event itself. Must be the first event in the 1. The `m.room.create` event itself. Must be the first event in the
room. room.
2. An ``m.room.member`` event for the creator to join the room. This is 2. An `m.room.member` event for the creator to join the room. This is
needed so the remaining events can be sent. needed so the remaining events can be sent.
3. A default ``m.room.power_levels`` event, giving the room creator 3. A default `m.room.power_levels` event, giving the room creator
(and not other members) permission to send state events. Overridden (and not other members) permission to send state events. Overridden
by the ``power_level_content_override`` parameter. by the `power_level_content_override` parameter.
4. Events set by the ``preset``. Currently these are the ``m.room.join_rules``, 4. Events set by the `preset`. Currently these are the `m.room.join_rules`,
``m.room.history_visibility``, and ``m.room.guest_access`` state events. `m.room.history_visibility`, and `m.room.guest_access` state events.
5. Events listed in ``initial_state``, in the order that they are 5. Events listed in `initial_state`, in the order that they are
listed. listed.
6. Events implied by ``name`` and ``topic`` (``m.room.name`` and ``m.room.topic`` 6. Events implied by `name` and `topic` (`m.room.name` and `m.room.topic`
state events). state events).
7. Invite events implied by ``invite`` and ``invite_3pid`` (``m.room.member`` with 7. Invite events implied by `invite` and `invite_3pid` (`m.room.member` with
``membership: invite`` and ``m.room.third_party_invite``). `membership: invite` and `m.room.third_party_invite`).
The available presets do the following with respect to room state: The available presets do the following with respect to room state:
======================== ============== ====================== ================ ========= ======================== ============== ====================== ================ =========
Preset ``join_rules`` ``history_visibility`` ``guest_access`` Other Preset `join_rules` `history_visibility` `guest_access` Other
======================== ============== ====================== ================ ========= ======================== ============== ====================== ================ =========
``private_chat`` ``invite`` ``shared`` ``can_join`` `private_chat` `invite` `shared` `can_join`
``trusted_private_chat`` ``invite`` ``shared`` ``can_join`` All invitees are given the same power level as the room creator. `trusted_private_chat` `invite` `shared` `can_join` All invitees are given the same power level as the room creator.
``public_chat`` ``public`` ``shared`` ``forbidden`` `public_chat` `public` `shared` `forbidden`
======================== ============== ====================== ================ ========= ======================== ============== ====================== ================ =========
The server will create a ``m.room.create`` event in the room with the The server will create a `m.room.create` event in the room with the
requesting user as the creator, alongside other keys provided in the requesting user as the creator, alongside other keys provided in the
``creation_content``. `creation_content`.
operationId: createRoom operationId: createRoom
security: security:
- accessToken: [] - accessToken: []
@ -97,12 +97,12 @@ paths:
type: string type: string
enum: ["public", "private"] enum: ["public", "private"]
description: |- description: |-
A ``public`` visibility indicates that the room will be shown A `public` visibility indicates that the room will be shown
in the published room list. A ``private`` visibility will hide in the published room list. A `private` visibility will hide
the room from the published room list. Rooms default to the room from the published room list. Rooms default to
``private`` visibility if this key is not included. NB: This `private` visibility if this key is not included. NB: This
should not be confused with ``join_rules`` which also uses the should not be confused with `join_rules` which also uses the
word ``public``. word `public`.
room_alias_name: room_alias_name:
type: string type: string
description: |- description: |-
@ -111,22 +111,22 @@ paths:
room. The alias will belong on the *same* homeserver which room. The alias will belong on the *same* homeserver which
created the room. For example, if this was set to "foo" and created the room. For example, if this was set to "foo" and
sent to the homeserver "example.com" the complete room alias sent to the homeserver "example.com" the complete room alias
would be ``#foo:example.com``. would be `#foo:example.com`.
The complete room alias will become the canonical alias for The complete room alias will become the canonical alias for
the room. the room.
name: name:
type: string type: string
description: |- description: |-
If this is included, an ``m.room.name`` event will be sent If this is included, an `m.room.name` event will be sent
into the room to indicate the name of the room. See Room into the room to indicate the name of the room. See Room
Events for more information on ``m.room.name``. Events for more information on `m.room.name`.
topic: topic:
type: string type: string
description: |- description: |-
If this is included, an ``m.room.topic`` event will be sent If this is included, an `m.room.topic` event will be sent
into the room to indicate the topic for the room. See Room into the room to indicate the topic for the room. See Room
Events for more information on ``m.room.topic``. Events for more information on `m.room.topic`.
invite: invite:
type: array type: array
description: |- description: |-
@ -155,7 +155,7 @@ paths:
medium: medium:
type: string type: string
# TODO: Link to Identity Service spec when it eixsts # TODO: Link to Identity Service spec when it eixsts
description: The kind of address being passed in the address field, for example ``email``. description: The kind of address being passed in the address field, for example `email`.
address: address:
type: string type: string
description: The invitee's third party identifier. description: The invitee's third party identifier.
@ -165,16 +165,16 @@ paths:
description: |- description: |-
The room version to set for the room. If not provided, the homeserver is The room version to set for the room. If not provided, the homeserver is
to use its configured default. If provided, the homeserver will return a to use its configured default. If provided, the homeserver will return a
400 error with the errcode ``M_UNSUPPORTED_ROOM_VERSION`` if it does not 400 error with the errcode `M_UNSUPPORTED_ROOM_VERSION` if it does not
support the room version. support the room version.
example: "1" example: "1"
creation_content: creation_content:
title: CreationContent title: CreationContent
type: object type: object
description: |- description: |-
Extra keys, such as ``m.federate``, to be added to the content Extra keys, such as `m.federate`, to be added to the content
of the `m.room.create`_ event. The server will clobber the following of the `m.room.create`_ event. The server will clobber the following
keys: ``creator``, ``room_version``. Future versions of the specification keys: `creator`, `room_version`. Future versions of the specification
may allow the server to clobber other keys. may allow the server to clobber other keys.
initial_state: initial_state:
type: array type: array
@ -184,8 +184,8 @@ paths:
room. The expected format of the state events are an object room. The expected format of the state events are an object
with type, state_key and content keys set. with type, state_key and content keys set.
Takes precedence over events set by ``preset``, but gets Takes precedence over events set by `preset`, but gets
overriden by ``name`` and ``topic`` keys. overriden by `name` and `topic` keys.
items: items:
type: object type: object
title: StateEvent title: StateEvent
@ -207,16 +207,16 @@ paths:
Convenience parameter for setting various default state events Convenience parameter for setting various default state events
based on a preset. based on a preset.
If unspecified, the server should use the ``visibility`` to determine If unspecified, the server should use the `visibility` to determine
which preset to use. A visbility of ``public`` equates to a preset of which preset to use. A visbility of `public` equates to a preset of
``public_chat`` and ``private`` visibility equates to a preset of `public_chat` and `private` visibility equates to a preset of
``private_chat``. `private_chat`.
is_direct: is_direct:
type: boolean type: boolean
description: |- description: |-
This flag makes the server set the ``is_direct`` flag on the This flag makes the server set the `is_direct` flag on the
``m.room.member`` events sent to the users in ``invite`` and `m.room.member` events sent to the users in `invite` and
``invite_3pid``. See `Direct Messaging`_ for more information. `invite_3pid`. See `Direct Messaging`_ for more information.
power_level_content_override: power_level_content_override:
title: Power Level Event Content title: Power Level Event Content
type: object type: object
@ -244,24 +244,24 @@ paths:
400: 400:
description: |- description: |-
The request is invalid. A meaningful ``errcode`` and description The request is invalid. A meaningful `errcode` and description
error text will be returned. Example reasons for rejection include: error text will be returned. Example reasons for rejection include:
- The request body is malformed (``errcode`` set to ``M_BAD_JSON`` - The request body is malformed (`errcode` set to `M_BAD_JSON`
or ``M_NOT_JSON``). or `M_NOT_JSON`).
- The room alias specified is already taken (``errcode`` set to - The room alias specified is already taken (`errcode` set to
``M_ROOM_IN_USE``). `M_ROOM_IN_USE`).
- The initial state implied by the parameters to the request is - The initial state implied by the parameters to the request is
invalid: for example, the user's ``power_level`` is set below invalid: for example, the user's `power_level` is set below
that necessary to set the room name (``errcode`` set to that necessary to set the room name (`errcode` set to
``M_INVALID_ROOM_STATE``). `M_INVALID_ROOM_STATE`).
- The homeserver doesn't support the requested room version, or - The homeserver doesn't support the requested room version, or
one or more users being invited to the new room are residents one or more users being invited to the new room are residents
of a homeserver which does not support the requested room version. of a homeserver which does not support the requested room version.
The ``errcode`` will be ``M_UNSUPPORTED_ROOM_VERSION`` in these The `errcode` will be `M_UNSUPPORTED_ROOM_VERSION` in these
cases. cases.
schema: schema:
"$ref": "definitions/errors/error.yaml" "$ref": "definitions/errors/error.yaml"

@ -110,9 +110,9 @@ paths:
The input was invalid in some way. This can include one of the The input was invalid in some way. This can include one of the
following error codes: following error codes:
* ``M_INVALID_SIGNATURE``: For example, the self-signing or * `M_INVALID_SIGNATURE`: For example, the self-signing or
user-signing key had an incorrect signature. user-signing key had an incorrect signature.
* ``M_MISSING_PARAM``: No master key is available. * `M_MISSING_PARAM`: No master key is available.
schema: schema:
type: object type: object
example: { example: {
@ -207,8 +207,8 @@ paths:
type: object type: object
description: |- description: |-
A map from user ID to key ID to an error for any signatures A map from user ID to key ID to an error for any signatures
that failed. If a signature was invalid, the ``errcode`` will that failed. If a signature was invalid, the `errcode` will
be set to ``M_INVALID_SIGNATURE``. be set to `M_INVALID_SIGNATURE`.
additionalProperties: additionalProperties:
type: object type: object
additionalProperties: additionalProperties:

@ -33,7 +33,7 @@ properties:
type: string type: string
description: |- description: |-
The public key. The object must have exactly one property, whose name is The public key. The object must have exactly one property, whose name is
in the form ``<algorithm>:<unpadded_base64_public_key>``, and whose value in the form `<algorithm>:<unpadded_base64_public_key>`, and whose value
is the unpadded base64 public key. is the unpadded base64 public key.
example: example:
"ed25519:alice+base64+public+key": "alice+base64+public+key" "ed25519:alice+base64+public+key": "alice+base64+public+key"

@ -38,7 +38,7 @@ properties:
type: object type: object
description: |- description: |-
Public identity keys. The names of the properties should be in the Public identity keys. The names of the properties should be in the
format ``<algorithm>:<device_id>``. The keys themselves should be format `<algorithm>:<device_id>`. The keys themselves should be
encoded as specified by the key algorithm. encoded as specified by the key algorithm.
additionalProperties: additionalProperties:
type: string type: string
@ -50,7 +50,7 @@ properties:
title: Signatures title: Signatures
description: |- description: |-
Signatures for the device key object. A map from user ID, to a map from Signatures for the device key object. A map from user ID, to a map from
``<algorithm>:<device_id>`` to the signature. `<algorithm>:<device_id>` to the signature.
The signature is calculated using the process described at `Signing The signature is calculated using the process described at `Signing
JSON`_. JSON`_.

@ -44,8 +44,8 @@ properties:
format: int64 format: int64
type: integer type: integer
prev_content: prev_content:
description: Optional. The previous ``content`` for this state. This will description: Optional. The previous `content` for this state. This will
be present only for state events appearing in the ``timeline``. If this be present only for state events appearing in the `timeline`. If this
is not a state event, or there is no previous content, this key will be is not a state event, or there is no previous content, this key will be
missing. missing.
title: EventContent title: EventContent

@ -19,14 +19,14 @@ properties:
not_senders: not_senders:
description: A list of sender IDs to exclude. If this list is absent then no senders description: A list of sender IDs to exclude. If this list is absent then no senders
are excluded. A matching sender will be excluded even if it is listed in the are excluded. A matching sender will be excluded even if it is listed in the
``'senders'`` filter. `'senders'` filter.
items: items:
type: string type: string
type: array type: array
not_types: not_types:
description: A list of event types to exclude. If this list is absent then no description: A list of event types to exclude. If this list is absent then no
event types are excluded. A matching type will be excluded even if it is listed event types are excluded. A matching type will be excluded even if it is listed
in the ``'types'`` filter. A '*' can be used as a wildcard to match any sequence in the `'types'` filter. A '*' can be used as a wildcard to match any sequence
of characters. of characters.
items: items:
type: string type: string
@ -39,7 +39,7 @@ properties:
type: array type: array
types: types:
description: A list of event types to include. If this list is absent then all description: A list of event types to include. If this list is absent then all
event types are included. A ``'*'`` can be used as a wildcard to match any sequence event types are included. A `'*'` can be used as a wildcard to match any sequence
of characters. of characters.
items: items:
type: string type: string

@ -19,10 +19,10 @@ properties:
description: |- description: |-
An access token the consumer may use to verify the identity of An access token the consumer may use to verify the identity of
the person who generated the token. This is given to the federation the person who generated the token. This is given to the federation
API ``GET /openid/userinfo`` to verify the user's identity. API `GET /openid/userinfo` to verify the user's identity.
token_type: token_type:
type: string type: string
description: The string ``Bearer``. description: The string `Bearer`.
matrix_server_name: matrix_server_name:
type: string type: string
description: |- description: |-

@ -23,25 +23,25 @@ properties:
key: key:
type: string type: string
description: |- description: |-
Required for ``event_match`` conditions. The dot-separated field of the Required for `event_match` conditions. The dot-separated field of the
event to match. event to match.
Required for ``sender_notification_permission`` conditions. The field in Required for `sender_notification_permission` conditions. The field in
the power level event the user needs a minimum power level for. Fields the power level event the user needs a minimum power level for. Fields
must be specified under the ``notifications`` property in the power level must be specified under the `notifications` property in the power level
event's ``content``. event's `content`.
x-example: content.body x-example: content.body
pattern: pattern:
type: string type: string
description: |- description: |-
Required for ``event_match`` conditions. The glob-style pattern to Required for `event_match` conditions. The glob-style pattern to
match against. Patterns with no special glob characters should be match against. Patterns with no special glob characters should be
treated as having asterisks prepended and appended when testing the treated as having asterisks prepended and appended when testing the
condition. condition.
is: is:
type: string type: string
description: |- description: |-
Required for ``room_member_count`` conditions. A decimal integer Required for `room_member_count` conditions. A decimal integer
optionally prefixed by one of, ==, <, >, >= or <=. A prefix of < matches optionally prefixed by one of, ==, <, >, >= or <=. A prefix of < matches
rooms where the member count is strictly less than the given number and rooms where the member count is strictly less than the given number and
so forth. If no prefix is present, this parameter defaults to ==. so forth. If no prefix is present, this parameter defaults to ==.

@ -43,11 +43,11 @@ properties:
description: |- description: |-
The conditions that must hold true for an event in order for a rule to be The conditions that must hold true for an event in order for a rule to be
applied to an event. A rule with no conditions always matches. Only applied to an event. A rule with no conditions always matches. Only
applicable to ``underride`` and ``override`` rules. applicable to `underride` and `override` rules.
pattern: pattern:
type: string type: string
description: |- description: |-
The glob-style pattern to match against. Only applicable to ``content`` The glob-style pattern to match against. Only applicable to `content`
rules. rules.
required: required:
- actions - actions

@ -24,7 +24,7 @@ allOf:
3PID verification. 3PID verification.
This parameter is deprecated with a plan to be removed in a future specification This parameter is deprecated with a plan to be removed in a future specification
version for ``/account/password`` and ``/register`` requests. version for `/account/password` and `/register` requests.
example: "id.example.com" example: "id.example.com"
id_access_token: id_access_token:
type: string type: string
@ -33,4 +33,4 @@ allOf:
can treat this as optional to distinguish between r0.5-compatible clients can treat this as optional to distinguish between r0.5-compatible clients
and this specification version. and this specification version.
Required if an ``id_server`` is supplied. Required if an `id_server` is supplied.

@ -24,7 +24,7 @@ allOf:
3PID verification. 3PID verification.
This parameter is deprecated with a plan to be removed in a future specification This parameter is deprecated with a plan to be removed in a future specification
version for ``/account/password`` and ``/register`` requests. version for `/account/password` and `/register` requests.
example: "id.example.com" example: "id.example.com"
id_access_token: id_access_token:
type: string type: string
@ -33,4 +33,4 @@ allOf:
can treat this as optional to distinguish between r0.5-compatible clients can treat this as optional to distinguish between r0.5-compatible clients
and this specification version. and this specification version.
Required if an ``id_server`` is supplied. Required if an `id_server` is supplied.

@ -17,7 +17,7 @@ properties:
type: string type: string
description: |- description: |-
The session ID. Session IDs are opaque strings that must consist entirely The session ID. Session IDs are opaque strings that must consist entirely
of the characters ``[0-9a-zA-Z.=_-]``. Their length must not exceed 255 of the characters `[0-9a-zA-Z.=_-]`. Their length must not exceed 255
characters and they must not be empty. characters and they must not be empty.
example: "123abc" example: "123abc"
submit_url: submit_url:
@ -25,13 +25,13 @@ properties:
description: |- description: |-
An optional field containing a URL where the client must submit the An optional field containing a URL where the client must submit the
validation token to, with identical parameters to the Identity Service validation token to, with identical parameters to the Identity Service
API's ``POST /validate/email/submitToken`` endpoint (without the requirement API's `POST /validate/email/submitToken` endpoint (without the requirement
for an access token). The homeserver must send this token to the user (if for an access token). The homeserver must send this token to the user (if
applicable), who should then be prompted to provide it to the client. applicable), who should then be prompted to provide it to the client.
If this field is not present, the client can assume that verification If this field is not present, the client can assume that verification
will happen without the client's involvement provided the homeserver will happen without the client's involvement provided the homeserver
advertises this specification version in the ``/versions`` response advertises this specification version in the `/versions` response
(ie: r0.5.0). (ie: r0.5.0).
example: "https://example.org/path/to/submitToken" example: "https://example.org/path/to/submitToken"
required: ['sid'] required: ['sid']

@ -19,20 +19,20 @@ allOf:
lazy_load_members: lazy_load_members:
type: boolean type: boolean
description: |- description: |-
If ``true``, enables lazy-loading of membership events. See If `true`, enables lazy-loading of membership events. See
`Lazy-loading room members <#lazy-loading-room-members>`_ `Lazy-loading room members <#lazy-loading-room-members>`_
for more information. Defaults to ``false``. for more information. Defaults to `false`.
include_redundant_members: include_redundant_members:
type: boolean type: boolean
description: |- description: |-
If ``true``, sends all membership events for all events, even if they have already If `true`, sends all membership events for all events, even if they have already
been sent to the client. Does not been sent to the client. Does not
apply unless ``lazy_load_members`` is ``true``. See apply unless `lazy_load_members` is `true`. See
`Lazy-loading room members <#lazy-loading-room-members>`_ `Lazy-loading room members <#lazy-loading-room-members>`_
for more information. Defaults to ``false``. for more information. Defaults to `false`.
not_rooms: not_rooms:
description: A list of room IDs to exclude. If this list is absent then no rooms description: A list of room IDs to exclude. If this list is absent then no rooms
are excluded. A matching room will be excluded even if it is listed in the ``'rooms'`` are excluded. A matching room will be excluded even if it is listed in the `'rooms'`
filter. filter.
items: items:
type: string type: string
@ -45,5 +45,5 @@ allOf:
type: array type: array
contains_url: contains_url:
type: boolean type: boolean
description: If ``true``, includes only events with a ``url`` key in their content. If description: If `true`, includes only events with a `url` key in their content. If
``false``, excludes those events. If omitted, ``url`` key is not considered for filtering. `false`, excludes those events. If omitted, `url` key is not considered for filtering.

@ -13,6 +13,6 @@
# limitations under the License. # limitations under the License.
accessToken: accessToken:
type: apiKey type: apiKey
description: The access_token returned by a call to ``/login`` or ``/register`` description: The access_token returned by a call to `/login` or `/register`
name: access_token name: access_token
in: query in: query

@ -46,16 +46,16 @@ properties:
properties: properties:
not_rooms: not_rooms:
description: A list of room IDs to exclude. If this list is absent then no rooms description: A list of room IDs to exclude. If this list is absent then no rooms
are excluded. A matching room will be excluded even if it is listed in the ``'rooms'`` are excluded. A matching room will be excluded even if it is listed in the `'rooms'`
filter. This filter is applied before the filters in ``ephemeral``, filter. This filter is applied before the filters in `ephemeral`,
``state``, ``timeline`` or ``account_data`` `state`, `timeline` or `account_data`
items: items:
type: string type: string
type: array type: array
rooms: rooms:
description: A list of room IDs to include. If this list is absent then all rooms description: A list of room IDs to include. If this list is absent then all rooms
are included. This filter is applied before the filters in ``ephemeral``, are included. This filter is applied before the filters in `ephemeral`,
``state``, ``timeline`` or ``account_data`` `state`, `timeline` or `account_data`
items: items:
type: string type: string
type: array type: array

@ -14,7 +14,7 @@
type: object type: object
title: Third Party Signed title: Third Party Signed
description: |- description: |-
A signature of an ``m.third_party_invite`` token to prove that this user A signature of an `m.third_party_invite` token to prove that this user
owns a third party identity which has been invited to the room. owns a third party identity which has been invited to the room.
properties: properties:
sender: sender:

@ -16,11 +16,11 @@ allOf:
- $ref: room_event_batch.yaml - $ref: room_event_batch.yaml
properties: properties:
limited: limited:
description: True if the number of events returned was limited by the ``limit`` description: True if the number of events returned was limited by the `limit`
on the filter. on the filter.
type: boolean type: boolean
prev_batch: prev_batch:
description: A token that can be supplied to the ``from`` parameter of the description: A token that can be supplied to the `from` parameter of the
rooms/{roomId}/messages endpoint. rooms/{roomId}/messages endpoint.
type: string type: string
type: object type: object

@ -133,11 +133,11 @@ paths:
room aliases can only be deleted by their creator or a server administrator. room aliases can only be deleted by their creator or a server administrator.
**Note:** **Note:**
Servers may choose to update the ``alt_aliases`` for the ``m.room.canonical_alias`` Servers may choose to update the `alt_aliases` for the `m.room.canonical_alias`
state event in the room when an alias is removed. Servers which choose to update the state event in the room when an alias is removed. Servers which choose to update the
canonical alias event are recommended to, in addition to their other relevant permission canonical alias event are recommended to, in addition to their other relevant permission
checks, delete the alias and return a successful response even if the user does not checks, delete the alias and return a successful response even if the user does not
have permission to update the ``m.room.canonical_alias`` event. have permission to update the `m.room.canonical_alias` event.
operationId: deleteRoomAlias operationId: deleteRoomAlias
security: security:
@ -176,8 +176,8 @@ paths:
given room. given room.
This endpoint can be called by users who are in the room (external This endpoint can be called by users who are in the room (external
users receive an ``M_FORBIDDEN`` error response). If the room's users receive an `M_FORBIDDEN` error response). If the room's
``m.room.history_visibility`` maps to ``world_readable``, any `m.room.history_visibility` maps to `world_readable`, any
user can call this endpoint. user can call this endpoint.
Servers may choose to implement additional access control checks here, Servers may choose to implement additional access control checks here,
@ -186,7 +186,7 @@ paths:
**Note:** **Note:**
Clients are recommended not to display this list of aliases prominently Clients are recommended not to display this list of aliases prominently
as they are not curated, unlike those listed in the ``m.room.canonical_alias`` as they are not curated, unlike those listed in the `m.room.canonical_alias`
state event. state event.
operationId: getLocalAliases operationId: getLocalAliases

@ -63,10 +63,10 @@ paths:
name: filter name: filter
type: string type: string
description: |- description: |-
A JSON ``RoomEventFilter`` to filter the returned events with. The A JSON `RoomEventFilter` to filter the returned events with. The
filter is only applied to ``events_before``, ``events_after``, and filter is only applied to `events_before`, `events_after`, and
``state``. It is not applied to the ``event`` itself. The filter may `state`. It is not applied to the `event` itself. The filter may
be applied before or/and after the ``limit`` parameter - whichever the be applied before or/and after the `limit` parameter - whichever the
homeserver prefers. homeserver prefers.
See `Filtering <#filtering>`_ for more information. See `Filtering <#filtering>`_ for more information.

@ -88,7 +88,7 @@ paths:
type: string type: string
description: |- description: |-
The ID of the filter that was created. Cannot start The ID of the filter that was created. Cannot start
with a ``{`` as this character is used to determine with a `{` as this character is used to determine
if the filter provided is inline JSON or a previously if the filter provided is inline JSON or a previously
declared filter by homeservers on some APIs. declared filter by homeservers on some APIs.
example: "66696p746572" example: "66696p746572"

@ -48,7 +48,7 @@ paths:
join that room. join that room.
If the user was invited to the room, the homeserver will append a If the user was invited to the room, the homeserver will append a
``m.room.member`` event to the room. `m.room.member` event to the room.
.. _third party invites section: `invite-by-third-party-id-endpoint`_ .. _third party invites section: `invite-by-third-party-id-endpoint`_
operationId: inviteUser operationId: inviteUser
@ -77,7 +77,7 @@ paths:
reason: reason:
type: string type: string
description: |- description: |-
Optional reason to be included as the ``reason`` on the subsequent Optional reason to be included as the `reason` on the subsequent
membership event. membership event.
required: ["user_id"] required: ["user_id"]
responses: responses:
@ -91,20 +91,20 @@ paths:
400: 400:
description: |- description: |-
The request is invalid. A meaningful ``errcode`` and description The request is invalid. A meaningful `errcode` and description
error text will be returned. Example reasons for rejection include: error text will be returned. Example reasons for rejection include:
- The request body is malformed (``errcode`` set to ``M_BAD_JSON`` - The request body is malformed (`errcode` set to `M_BAD_JSON`
or ``M_NOT_JSON``). or `M_NOT_JSON`).
- One or more users being invited to the room are residents of a - One or more users being invited to the room are residents of a
homeserver which does not support the requested room version. The homeserver which does not support the requested room version. The
``errcode`` will be ``M_UNSUPPORTED_ROOM_VERSION`` in these cases. `errcode` will be `M_UNSUPPORTED_ROOM_VERSION` in these cases.
schema: schema:
"$ref": "definitions/errors/error.yaml" "$ref": "definitions/errors/error.yaml"
403: 403:
description: |- description: |-
You do not have permission to invite the user to the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are: You do not have permission to invite the user to the room. A meaningful `errcode` and description error text will be returned. Example reasons for rejections are:
- The invitee has been banned from the room. - The invitee has been banned from the room.
- The invitee is already a member of the room. - The invitee is already a member of the room.

@ -32,7 +32,7 @@ paths:
summary: Start the requesting user participating in a particular room. summary: Start the requesting user participating in a particular room.
description: |- description: |-
*Note that this API requires a room ID, not alias.* *Note that this API requires a room ID, not alias.*
``/join/{roomIdOrAlias}`` *exists if you have a room alias.* `/join/{roomIdOrAlias}` *exists if you have a room alias.*
This API starts a user participating in a particular room, if that user This API starts a user participating in a particular room, if that user
is allowed to participate in that room. After this call, the client is is allowed to participate in that room. After this call, the client is
@ -62,12 +62,12 @@ paths:
- $ref: "definitions/third_party_signed.yaml" - $ref: "definitions/third_party_signed.yaml"
description: |- description: |-
If supplied, the homeserver must verify that it matches a pending If supplied, the homeserver must verify that it matches a pending
``m.room.third_party_invite`` event in the room, and perform `m.room.third_party_invite` event in the room, and perform
key validity checking if required by the event. key validity checking if required by the event.
reason: reason:
type: string type: string
description: |- description: |-
Optional reason to be included as the ``reason`` on the subsequent Optional reason to be included as the `reason` on the subsequent
membership event. membership event.
example: "Looking for support" example: "Looking for support"
responses: responses:
@ -75,7 +75,7 @@ paths:
description: |- description: |-
The room has been joined. The room has been joined.
The joined room ID must be returned in the ``room_id`` field. The joined room ID must be returned in the `room_id` field.
examples: examples:
application/json: { application/json: {
"room_id": "!d41d8cd:matrix.org"} "room_id": "!d41d8cd:matrix.org"}
@ -88,7 +88,7 @@ paths:
required: ["room_id"] required: ["room_id"]
403: 403:
description: |- description: |-
You do not have permission to join the room. A meaningful ``errcode`` You do not have permission to join the room. A meaningful `errcode`
and description error text will be returned. Example reasons for rejection are: and description error text will be returned. Example reasons for rejection are:
- The room is invite-only and the user was not invited. - The room is invite-only and the user was not invited.
@ -108,7 +108,7 @@ paths:
post: post:
summary: Start the requesting user participating in a particular room. summary: Start the requesting user participating in a particular room.
description: |- description: |-
*Note that this API takes either a room ID or alias, unlike* ``/room/{roomId}/join``. *Note that this API takes either a room ID or alias, unlike* `/room/{roomId}/join`.
This API starts a user participating in a particular room, if that user This API starts a user participating in a particular room, if that user
is allowed to participate in that room. After this call, the client is is allowed to participate in that room. After this call, the client is
@ -146,13 +146,13 @@ paths:
allOf: allOf:
- $ref: "definitions/third_party_signed.yaml" - $ref: "definitions/third_party_signed.yaml"
description: |- description: |-
If a ``third_party_signed`` was supplied, the homeserver must verify If a `third_party_signed` was supplied, the homeserver must verify
that it matches a pending ``m.room.third_party_invite`` event in the that it matches a pending `m.room.third_party_invite` event in the
room, and perform key validity checking if required by the event. room, and perform key validity checking if required by the event.
reason: reason:
type: string type: string
description: |- description: |-
Optional reason to be included as the ``reason`` on the subsequent Optional reason to be included as the `reason` on the subsequent
membership event. membership event.
example: "Looking for support" example: "Looking for support"
responses: responses:
@ -160,7 +160,7 @@ paths:
description: |- description: |-
The room has been joined. The room has been joined.
The joined room ID must be returned in the ``room_id`` field. The joined room ID must be returned in the `room_id` field.
examples: examples:
application/json: { application/json: {
"room_id": "!d41d8cd:matrix.org"} "room_id": "!d41d8cd:matrix.org"}
@ -173,7 +173,7 @@ paths:
required: ["room_id"] required: ["room_id"]
403: 403:
description: |- description: |-
You do not have permission to join the room. A meaningful ``errcode`` You do not have permission to join the room. A meaningful `errcode`
and description error text will be returned. Example reasons for rejection are: and description error text will be returned. Example reasons for rejection are:
- The room is invite-only and the user was not invited. - The room is invite-only and the user was not invited.

@ -124,7 +124,7 @@ paths:
etag: etag:
description: |- description: |-
An opaque string representing stored keys in the backup. An opaque string representing stored keys in the backup.
Clients can compare it with the ``etag`` value they received Clients can compare it with the `etag` value they received
in the request of their last key storage request. If not in the request of their last key storage request. If not
equal, another client has modified the backup. equal, another client has modified the backup.
type: string type: string
@ -168,7 +168,7 @@ paths:
type: string type: string
name: version name: version
description: |- description: |-
The backup version to get, as returned in the ``version`` parameter The backup version to get, as returned in the `version` parameter
of the response in `POST /_matrix/client/r0/room_keys/version`_ or of the response in `POST /_matrix/client/r0/room_keys/version`_ or
this endpoint. this endpoint.
required: true required: true
@ -206,7 +206,7 @@ paths:
etag: etag:
description: |- description: |-
An opaque string representing stored keys in the backup. An opaque string representing stored keys in the backup.
Clients can compare it with the ``etag`` value they received Clients can compare it with the `etag` value they received
in the request of their last key storage request. If not in the request of their last key storage request. If not
equal, another client has modified the backup. equal, another client has modified the backup.
type: string type: string
@ -240,7 +240,7 @@ paths:
put: put:
summary: Update information about an existing backup. summary: Update information about an existing backup.
description: |- description: |-
Update information about an existing backup. Only ``auth_data`` can be modified. Update information about an existing backup. Only `auth_data` can be modified.
operationId: putRoomKeysVersion operationId: putRoomKeysVersion
security: security:
- accessToken: [] - accessToken: []
@ -249,7 +249,7 @@ paths:
type: string type: string
name: version name: version
description: |- description: |-
The backup version to update, as returned in the ``version`` The backup version to update, as returned in the `version`
parameter in the response of `POST parameter in the response of `POST
/_matrix/client/r0/room_keys/version`_ or `GET /_matrix/client/r0/room_keys/version`_ or `GET
/_matrix/client/r0/room_keys/version/{version}`_. /_matrix/client/r0/room_keys/version/{version}`_.
@ -300,9 +300,9 @@ paths:
properties: {} properties: {}
400: 400:
description: |- description: |-
A parameter was incorrect. For example, the ``algorithm`` does not A parameter was incorrect. For example, the `algorithm` does not
match the current backup algorithm, or the ``version`` in the body match the current backup algorithm, or the `version` in the body
does not match the ``version`` in the path. does not match the `version` in the path.
examples: examples:
application/json: { application/json: {
"errcode": "M_INVALID_PARAM", "errcode": "M_INVALID_PARAM",
@ -338,7 +338,7 @@ paths:
type: string type: string
name: version name: version
description: |- description: |-
The backup version to delete, as returned in the ``version`` The backup version to delete, as returned in the `version`
parameter in the response of `POST parameter in the response of `POST
/_matrix/client/r0/room_keys/version`_ or `GET /_matrix/client/r0/room_keys/version`_ or `GET
/_matrix/client/r0/room_keys/version/{version}`_. /_matrix/client/r0/room_keys/version/{version}`_.
@ -412,7 +412,7 @@ paths:
etag: etag:
description: |- description: |-
The new etag value representing stored keys in the backup. The new etag value representing stored keys in the backup.
See ``GET /room_keys/version/{version}`` for more details. See `GET /room_keys/version/{version}` for more details.
type: string type: string
example: "abcdefg" example: "abcdefg"
count: count:
@ -425,7 +425,7 @@ paths:
403: 403:
description: |- description: |-
The version specified does not match the current backup version. The version specified does not match the current backup version.
The current version will be included in the ``current_version`` The current version will be included in the `current_version`
field. field.
examples: examples:
application/json: { application/json: {
@ -522,7 +522,7 @@ paths:
etag: etag:
description: |- description: |-
The new etag value representing stored keys in the backup. The new etag value representing stored keys in the backup.
See ``GET /room_keys/version/{version}`` for more details. See `GET /room_keys/version/{version}` for more details.
type: string type: string
example: "abcdefg" example: "abcdefg"
count: count:
@ -583,7 +583,7 @@ paths:
etag: etag:
description: |- description: |-
The new etag value representing stored keys in the backup. The new etag value representing stored keys in the backup.
See ``GET /room_keys/version/{version}`` for more details. See `GET /room_keys/version/{version}` for more details.
type: string type: string
example: "abcdefg" example: "abcdefg"
count: count:
@ -596,7 +596,7 @@ paths:
403: 403:
description: |- description: |-
The version specified does not match the current backup version. The version specified does not match the current backup version.
The current version will be included in the ``current_version`` The current version will be included in the `current_version`
field. field.
examples: examples:
application/json: { application/json: {
@ -647,7 +647,7 @@ paths:
200: 200:
description: |- description: |-
The key data. If no keys are found, then an object with an empty The key data. If no keys are found, then an object with an empty
``sessions`` property will be returned (``{"sessions": {}}``). `sessions` property will be returned (`{"sessions": {}}`).
schema: schema:
type: object type: object
$ref: "definitions/room_key_backup.yaml" $ref: "definitions/room_key_backup.yaml"
@ -695,7 +695,7 @@ paths:
etag: etag:
description: |- description: |-
The new etag value representing stored keys in the backup. The new etag value representing stored keys in the backup.
See ``GET /room_keys/version/{version}`` for more details. See `GET /room_keys/version/{version}` for more details.
type: string type: string
example: "abcdefg" example: "abcdefg"
count: count:
@ -776,7 +776,7 @@ paths:
etag: etag:
description: |- description: |-
The new etag value representing stored keys in the backup. The new etag value representing stored keys in the backup.
See ``GET /room_keys/version/{version}`` for more details. See `GET /room_keys/version/{version}` for more details.
type: string type: string
example: "abcdefg" example: "abcdefg"
count: count:
@ -789,7 +789,7 @@ paths:
403: 403:
description: |- description: |-
The version specified does not match the current backup version. The version specified does not match the current backup version.
The current version will be included in the ``current_version`` The current version will be included in the `current_version`
field. field.
examples: examples:
application/json: { application/json: {
@ -834,7 +834,7 @@ paths:
200: 200:
description: |- description: |-
The key data. If no keys are found, then an object with an empty The key data. If no keys are found, then an object with an empty
``rooms`` property will be returned (``{"rooms": {}}``). `rooms` property will be returned (`{"rooms": {}}`).
schema: schema:
type: object type: object
properties: properties:
@ -898,7 +898,7 @@ paths:
etag: etag:
description: |- description: |-
The new etag value representing stored keys in the backup. The new etag value representing stored keys in the backup.
See ``GET /room_keys/version/{version}`` for more details. See `GET /room_keys/version/{version}` for more details.
type: string type: string
example: "abcdefg" example: "abcdefg"
count: count:

@ -57,7 +57,7 @@ paths:
description: |- description: |-
One-time public keys for "pre-key" messages. The names of One-time public keys for "pre-key" messages. The names of
the properties should be in the format the properties should be in the format
``<algorithm>:<key_id>``. The format of the key is determined `<algorithm>:<key_id>`. The format of the key is determined
by the `key algorithm <#key-algorithms>`_. by the `key algorithm <#key-algorithms>`_.
May be absent if no new one-time keys are required. May be absent if no new one-time keys are required.
@ -184,7 +184,7 @@ paths:
If the homeserver could be reached, but the user or device If the homeserver could be reached, but the user or device
was unknown, no failure is recorded. Instead, the corresponding was unknown, no failure is recorded. Instead, the corresponding
user or device is missing from the ``device_keys`` result. user or device is missing from the `device_keys` result.
additionalProperties: additionalProperties:
type: object type: object
example: {} example: {}
@ -194,7 +194,7 @@ paths:
Information on the queried devices. A map from user ID, to a Information on the queried devices. A map from user ID, to a
map from device ID to device information. For each device, map from device ID to device information. For each device,
the information returned will be the same as uploaded via the information returned will be the same as uploaded via
``/keys/upload``, with the addition of an ``unsigned`` `/keys/upload`, with the addition of an `unsigned`
property. property.
additionalProperties: additionalProperties:
type: object type: object
@ -243,8 +243,8 @@ paths:
Information on the master cross-signing keys of the queried users. Information on the master cross-signing keys of the queried users.
A map from user ID, to master key information. For each key, the A map from user ID, to master key information. For each key, the
information returned will be the same as uploaded via information returned will be the same as uploaded via
``/keys/device_signing/upload``, along with the signatures `/keys/device_signing/upload`, along with the signatures
uploaded via ``/keys/signatures/upload`` that the requesting user uploaded via `/keys/signatures/upload` that the requesting user
is allowed to see. is allowed to see.
additionalProperties: additionalProperties:
allOf: allOf:
@ -264,7 +264,7 @@ paths:
Information on the self-signing keys of the queried users. A map Information on the self-signing keys of the queried users. A map
from user ID, to self-signing key information. For each key, the from user ID, to self-signing key information. For each key, the
information returned will be the same as uploaded via information returned will be the same as uploaded via
``/keys/device_signing/upload``. `/keys/device_signing/upload`.
additionalProperties: additionalProperties:
allOf: allOf:
- $ref: definitions/cross_signing_key.yaml - $ref: definitions/cross_signing_key.yaml
@ -289,7 +289,7 @@ paths:
request, if they queried their own device information. A map request, if they queried their own device information. A map
from user ID, to user-signing key information. The from user ID, to user-signing key information. The
information returned will be the same as uploaded via information returned will be the same as uploaded via
``/keys/device_signing/upload``. `/keys/device_signing/upload`.
additionalProperties: additionalProperties:
allOf: allOf:
- $ref: definitions/cross_signing_key.yaml - $ref: definitions/cross_signing_key.yaml
@ -364,7 +364,7 @@ paths:
If the homeserver could be reached, but the user or device If the homeserver could be reached, but the user or device
was unknown, no failure is recorded. Instead, the corresponding was unknown, no failure is recorded. Instead, the corresponding
user or device is missing from the ``one_time_keys`` result. user or device is missing from the `one_time_keys` result.
additionalProperties: additionalProperties:
type: object type: object
example: {} example: {}
@ -372,7 +372,7 @@ paths:
type: object type: object
description: |- description: |-
One-time keys for the queried devices. A map from user ID, to a One-time keys for the queried devices. A map from user ID, to a
map from devices to a map from ``<algorithm>:<key_id>`` to the key object. map from devices to a map from `<algorithm>:<key_id>` to the key object.
See the `key algorithms <#key-algorithms>`_ section for information See the `key algorithms <#key-algorithms>`_ section for information
on the Key Object format. on the Key Object format.
@ -425,9 +425,9 @@ paths:
The server should include in the results any users who: The server should include in the results any users who:
* currently share a room with the calling user (ie, both users have * currently share a room with the calling user (ie, both users have
membership state ``join``); *and* membership state `join`); *and*
* added new device identity keys or removed an existing device with * added new device identity keys or removed an existing device with
identity keys, between ``from`` and ``to``. identity keys, between `from` and `to`.
operationId: getKeysChanges operationId: getKeysChanges
security: security:
- accessToken: [] - accessToken: []
@ -436,7 +436,7 @@ paths:
name: from name: from
type: string type: string
description: |- description: |-
The desired start point of the list. Should be the ``next_batch`` field The desired start point of the list. Should be the `next_batch` field
from a response to an earlier call to |/sync|. Users who have not from a response to an earlier call to |/sync|. Users who have not
uploaded new device identity keys since this point, nor deleted uploaded new device identity keys since this point, nor deleted
existing devices with identity keys since then, will be excluded existing devices with identity keys since then, will be excluded
@ -447,7 +447,7 @@ paths:
name: to name: to
type: string type: string
description: |- description: |-
The desired end point of the list. Should be the ``next_batch`` The desired end point of the list. Should be the `next_batch`
field from a recent call to |/sync| - typically the most recent field from a recent call to |/sync| - typically the most recent
such call. This may be used by the server as a hint to check its such call. This may be used by the server as a hint to check its
caches are up to date. caches are up to date.

@ -35,9 +35,9 @@ paths:
The caller must have the required power level in order to perform this operation. The caller must have the required power level in order to perform this operation.
Kicking a user adjusts the target member's membership state to be ``leave`` with an Kicking a user adjusts the target member's membership state to be `leave` with an
optional ``reason``. Like with other membership changes, a user can directly adjust optional `reason`. Like with other membership changes, a user can directly adjust
the target member's state by making a request to ``/rooms/<room id>/state/m.room.member/<user id>``. the target member's state by making a request to `/rooms/<room id>/state/m.room.member/<user id>`.
operationId: kick operationId: kick
security: security:
- accessToken: [] - accessToken: []
@ -65,7 +65,7 @@ paths:
type: string type: string
description: |- description: |-
The reason the user has been kicked. This will be supplied as the The reason the user has been kicked. This will be supplied as the
``reason`` on the target's updated `m.room.member`_ event. `reason` on the target's updated `m.room.member`_ event.
required: ["user_id"] required: ["user_id"]
responses: responses:
200: 200:
@ -77,7 +77,7 @@ paths:
type: object type: object
403: 403:
description: |- description: |-
You do not have permission to kick the user from the room. A meaningful ``errcode`` and You do not have permission to kick the user from the room. A meaningful `errcode` and
description error text will be returned. Example reasons for rejections are: description error text will be returned. Example reasons for rejections are:
- The kicker is not currently in the room. - The kicker is not currently in the room.

@ -64,7 +64,7 @@ paths:
reason: reason:
type: string type: string
description: |- description: |-
Optional reason to be included as the ``reason`` on the subsequent Optional reason to be included as the `reason` on the subsequent
membership event. membership event.
responses: responses:
200: 200:

@ -45,7 +45,7 @@ paths:
joined_rooms: joined_rooms:
type: array type: array
description: |- description: |-
The ID of each room in which the user has ``joined`` membership. The ID of each room in which the user has `joined` membership.
items: items:
type: string type: string
examples: examples:

@ -204,7 +204,7 @@ paths:
type: string type: string
description: |- description: |-
The specific third party network/protocol to request from the The specific third party network/protocol to request from the
homeserver. Can only be used if ``include_all_networks`` is false. homeserver. Can only be used if `include_all_networks` is false.
example: "irc" example: "irc"
example: { example: {
"limit": 10, "limit": 10,

@ -33,7 +33,7 @@ paths:
summary: Get the supported login types to authenticate users summary: Get the supported login types to authenticate users
description: |- description: |-
Gets the homeserver's supported login types to authenticate users. Clients Gets the homeserver's supported login types to authenticate users. Clients
should pick one of these and supply it as the ``type`` when logging in. should pick one of these and supply it as the `type` when logging in.
operationId: getLoginFlows operationId: getLoginFlows
responses: responses:
200: 200:
@ -56,7 +56,7 @@ paths:
properties: properties:
type: type:
description: |- description: |-
The login type. This is supplied as the ``type`` when The login type. This is supplied as the `type` when
logging in. logging in.
type: string type: string
429: 429:
@ -71,10 +71,10 @@ paths:
Authenticates the user, and issues an access token they can Authenticates the user, and issues an access token they can
use to authorize themself in subsequent requests. use to authorize themself in subsequent requests.
If the client does not supply a ``device_id``, the server must If the client does not supply a `device_id`, the server must
auto-generate one. auto-generate one.
The returned access token must be associated with the ``device_id`` The returned access token must be associated with the `device_id`
supplied by the client or generated by the server. The server may supplied by the client or generated by the server. The server may
invalidate any access token previously associated with that device. See invalidate any access token previously associated with that device. See
`Relationship between access tokens and devices`_. `Relationship between access tokens and devices`_.
@ -103,22 +103,22 @@ paths:
"$ref": "definitions/user_identifier.yaml" "$ref": "definitions/user_identifier.yaml"
user: user:
type: string type: string
description: The fully qualified user ID or just local part of the user ID, to log in. Deprecated in favour of ``identifier``. description: The fully qualified user ID or just local part of the user ID, to log in. Deprecated in favour of `identifier`.
medium: medium:
type: string type: string
description: When logging in using a third party identifier, the medium of the identifier. Must be 'email'. Deprecated in favour of ``identifier``. description: When logging in using a third party identifier, the medium of the identifier. Must be 'email'. Deprecated in favour of `identifier`.
address: address:
type: string type: string
description: Third party identifier for the user. Deprecated in favour of ``identifier``. description: Third party identifier for the user. Deprecated in favour of `identifier`.
password: password:
type: string type: string
description: |- description: |-
Required when ``type`` is ``m.login.password``. The user's Required when `type` is `m.login.password`. The user's
password. password.
token: token:
type: string type: string
description: |- description: |-
Required when ``type`` is ``m.login.token``. Part of `Token-based`_ login. Required when `type` is `m.login.token`. Part of `Token-based`_ login.
device_id: device_id:
type: string type: string
description: |- description: |-
@ -131,7 +131,7 @@ paths:
type: string type: string
description: |- description: |-
A display name to assign to the newly-created device. Ignored A display name to assign to the newly-created device. Ignored
if ``device_id`` corresponds to a known device. if `device_id` corresponds to a known device.
required: ["type"] required: ["type"]
responses: responses:
@ -169,8 +169,8 @@ paths:
been registered. been registered.
**Deprecated**. Clients should extract the server_name from **Deprecated**. Clients should extract the server_name from
``user_id`` (by splitting at the first colon) if they require `user_id` (by splitting at the first colon) if they require
it. Note also that ``homeserver`` is not spelt this way. it. Note also that `homeserver` is not spelt this way.
device_id: device_id:
type: string type: string
description: |- description: |-
@ -197,10 +197,10 @@ paths:
403: 403:
description: |- description: |-
The login attempt failed. This can include one of the following error codes: The login attempt failed. This can include one of the following error codes:
* ``M_FORBIDDEN``: The provided authentication data was incorrect * `M_FORBIDDEN`: The provided authentication data was incorrect
or the requested device ID is the same as a cross-signing key or the requested device ID is the same as a cross-signing key
ID. ID.
* ``M_USER_DEACTIVATED``: The user has been deactivated. * `M_USER_DEACTIVATED`: The user has been deactivated.
examples: examples:
application/json: { application/json: {
"errcode": "M_FORBIDDEN" "errcode": "M_FORBIDDEN"

@ -51,8 +51,8 @@ paths:
name: from name: from
description: |- description: |-
The token to start returning events from. This token can be obtained The token to start returning events from. This token can be obtained
from a ``prev_batch`` token returned for each room by the sync API, from a `prev_batch` token returned for each room by the sync API,
or from a ``start`` or ``end`` token returned by a previous request or from a `start` or `end` token returned by a previous request
to this endpoint. to this endpoint.
required: true required: true
x-example: "s345_678_333" x-example: "s345_678_333"
@ -61,8 +61,8 @@ paths:
name: to name: to
description: |- description: |-
The token to stop returning events at. This token can be obtained from The token to stop returning events at. This token can be obtained from
a ``prev_batch`` token returned for each room by the sync endpoint, a `prev_batch` token returned for each room by the sync endpoint,
or from a ``start`` or ``end`` token returned by a previous request to or from a `start` or `end` token returned by a previous request to
this endpoint. this endpoint.
required: false required: false
- in: query - in: query
@ -96,30 +96,30 @@ paths:
start: start:
type: string type: string
description: |- description: |-
The token the pagination starts from. If ``dir=b`` this will be The token the pagination starts from. If `dir=b` this will be
the token supplied in ``from``. the token supplied in `from`.
end: end:
type: string type: string
description: |- description: |-
The token the pagination ends at. If ``dir=b`` this token should The token the pagination ends at. If `dir=b` this token should
be used again to request even earlier events. be used again to request even earlier events.
chunk: chunk:
type: array type: array
description: |- description: |-
A list of room events. The order depends on the ``dir`` parameter. A list of room events. The order depends on the `dir` parameter.
For ``dir=b`` events will be in reverse-chronological order, For `dir=b` events will be in reverse-chronological order,
for ``dir=f`` in chronological order, so that events start for `dir=f` in chronological order, so that events start
at the ``from`` point. at the `from` point.
items: items:
"$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml" "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml"
state: state:
type: array type: array
description: |- description: |-
A list of state events relevant to showing the ``chunk``. For example, if A list of state events relevant to showing the `chunk`. For example, if
``lazy_load_members`` is enabled in the filter then this may contain `lazy_load_members` is enabled in the filter then this may contain
the membership events for the senders of events in the ``chunk``. the membership events for the senders of events in the `chunk`.
Unless ``include_redundant_members`` is ``true``, the server Unless `include_redundant_members` is `true`, the server
may remove membership events which would have already been may remove membership events which would have already been
sent to the client in prior calls to this endpoint, assuming sent to the client in prior calls to this endpoint, assuming
the membership of those members has not changed. the membership of those members has not changed.

@ -54,7 +54,7 @@ paths:
name: only name: only
type: string type: string
description: |- description: |-
Allows basic filtering of events returned. Supply ``highlight`` Allows basic filtering of events returned. Supply `highlight`
to return only events where the notification had the highlight to return only events where the notification had the highlight
tweak set. tweak set.
required: false required: false
@ -87,8 +87,8 @@ paths:
next_token: next_token:
type: string type: string
description: |- description: |-
The token to supply in the ``from`` param of the next The token to supply in the `from` param of the next
``/notifications`` request in order to request more `/notifications` request in order to request more
events. If this is absent, there are no more results. events. If this is absent, there are no more results.
notifications: notifications:
type: array type: array

@ -32,10 +32,10 @@ paths:
summary: Listen on the event stream. summary: Listen on the event stream.
description: |- description: |-
This will listen for new events and return them to the caller. This will This will listen for new events and return them to the caller. This will
block until an event is received, or until the ``timeout`` is reached. block until an event is received, or until the `timeout` is reached.
This endpoint was deprecated in r0 of this specification. Clients This endpoint was deprecated in r0 of this specification. Clients
should instead call the |/sync|_ API with a ``since`` parameter. See should instead call the |/sync|_ API with a `since` parameter. See
the `migration guide the `migration guide
<https://matrix.org/docs/guides/client-server-migrating-from-v1.html#deprecated-endpoints>`_. <https://matrix.org/docs/guides/client-server-migrating-from-v1.html#deprecated-endpoints>`_.
operationId: getEvents operationId: getEvents
@ -73,13 +73,13 @@ paths:
start: start:
type: string type: string
description: |- description: |-
A token which correlates to the first value in ``chunk``. This A token which correlates to the first value in `chunk`. This
is usually the same token supplied to ``from=``. is usually the same token supplied to `from=`.
end: end:
type: string type: string
description: |- description: |-
A token which correlates to the last value in ``chunk``. This A token which correlates to the last value in `chunk`. This
token should be used in the next request to ``/events``. token should be used in the next request to `/events`.
chunk: chunk:
type: array type: array
description: "An array of events." description: "An array of events."
@ -89,7 +89,7 @@ paths:
allOf: allOf:
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml" - "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml"
400: 400:
description: "Bad pagination ``from`` parameter." description: "Bad pagination `from` parameter."
tags: tags:
- Room participation - Room participation
deprecated: true deprecated: true
@ -101,7 +101,7 @@ paths:
number of messages per room to return. number of messages per room to return.
This endpoint was deprecated in r0 of this specification. Clients This endpoint was deprecated in r0 of this specification. Clients
should instead call the |/sync|_ API with no ``since`` parameter. See should instead call the |/sync|_ API with no `since` parameter. See
the `migration guide the `migration guide
<https://matrix.org/docs/guides/client-server-migrating-from-v1.html#deprecated-endpoints>`_. <https://matrix.org/docs/guides/client-server-migrating-from-v1.html#deprecated-endpoints>`_.
operationId: initialSync operationId: initialSync
@ -118,10 +118,10 @@ paths:
type: boolean type: boolean
name: archived name: archived
description: |- description: |-
Whether to include rooms that the user has left. If ``false`` then Whether to include rooms that the user has left. If `false` then
only rooms that the user has been invited to or has joined are only rooms that the user has been invited to or has joined are
included. If set to ``true`` then rooms that the user has left are included. If set to `true` then rooms that the user has left are
included as well. By default this is ``false``. included as well. By default this is `false`.
required: false required: false
x-example: "true" x-example: "true"
responses: responses:
@ -199,8 +199,8 @@ paths:
end: end:
type: string type: string
description: |- description: |-
A token which correlates to the last value in ``chunk``. This A token which correlates to the last value in `chunk`. This
token should be used with the ``/events`` API to listen for new token should be used with the `/events` API to listen for new
events. events.
presence: presence:
type: array type: array
@ -226,7 +226,7 @@ paths:
invite: invite:
type: object type: object
title: "InviteEvent" title: "InviteEvent"
description: "The invite event if ``membership`` is ``invite``" description: "The invite event if `membership` is `invite`"
allOf: allOf:
- "$ref": "../../event-schemas/schema/m.room.member.yaml" - "$ref": "../../event-schemas/schema/m.room.member.yaml"
messages: messages:
@ -237,12 +237,12 @@ paths:
start: start:
type: string type: string
description: |- description: |-
A token which correlates to the first value in ``chunk``. A token which correlates to the first value in `chunk`.
Used for pagination. Used for pagination.
end: end:
type: string type: string
description: |- description: |-
A token which correlates to the last value in ``chunk``. A token which correlates to the last value in `chunk`.
Used for pagination. Used for pagination.
chunk: chunk:
type: array type: array
@ -251,7 +251,7 @@ paths:
list of the most recent messages for this room. If list of the most recent messages for this room. If
the user has left the room this will be the the user has left the room this will be the
messages that preceeded them leaving. This array messages that preceeded them leaving. This array
will consist of at most ``limit`` elements. will consist of at most `limit` elements.
items: items:
type: object type: object
title: RoomEvent title: RoomEvent
@ -274,7 +274,7 @@ paths:
type: string type: string
enum: ["private", "public"] enum: ["private", "public"]
description: |- description: |-
Whether this room is visible to the ``/publicRooms`` API Whether this room is visible to the `/publicRooms` API
or not." or not."
account_data: account_data:
type: array type: array
@ -306,7 +306,7 @@ paths:
get: get:
summary: Get a single event by event ID. summary: Get a single event by event ID.
description: |- description: |-
Get a single event based on ``event_id``. You must have permission to Get a single event based on `event_id`. You must have permission to
retrieve this event e.g. by being a member in the room for this event. retrieve this event e.g. by being a member in the room for this event.
This endpoint was deprecated in r0 of this specification. Clients This endpoint was deprecated in r0 of this specification. Clients

@ -37,7 +37,7 @@ paths:
OpenID. OpenID.
The access token generated is only valid for the OpenID API. It cannot The access token generated is only valid for the OpenID API. It cannot
be used to request another OpenID access token or call ``/sync``, for be used to request another OpenID access token or call `/sync`, for
example. example.
operationId: requestOpenIdToken operationId: requestOpenIdToken
security: security:
@ -63,7 +63,7 @@ paths:
description: |- description: |-
OpenID token information. This response is nearly compatible with the OpenID token information. This response is nearly compatible with the
response documented in the `OpenID Connect 1.0 Specification <http://openid.net/specs/openid-connect-core-1_0.html#TokenResponse>`_ response documented in the `OpenID Connect 1.0 Specification <http://openid.net/specs/openid-connect-core-1_0.html#TokenResponse>`_
with the only difference being the lack of an ``id_token``. Instead, with the only difference being the lack of an `id_token`. Instead,
the Matrix homeserver's name is provided. the Matrix homeserver's name is provided.
examples: examples:
application/json: { application/json: {

@ -33,12 +33,12 @@ paths:
description: |- description: |-
This will listen for new events related to a particular room and return This will listen for new events related to a particular room and return
them to the caller. This will block until an event is received, or until them to the caller. This will block until an event is received, or until
the ``timeout`` is reached. the `timeout` is reached.
This API is the same as the normal ``/events`` endpoint, but can be This API is the same as the normal `/events` endpoint, but can be
called by users who have not joined the room. called by users who have not joined the room.
Note that the normal ``/events`` endpoint has been deprecated. This Note that the normal `/events` endpoint has been deprecated. This
API will also be deprecated at some point, but its replacement is not API will also be deprecated at some point, but its replacement is not
yet known. yet known.
operationId: peekEvents operationId: peekEvents
@ -86,13 +86,13 @@ paths:
start: start:
type: string type: string
description: |- description: |-
A token which correlates to the first value in ``chunk``. This A token which correlates to the first value in `chunk`. This
is usually the same token supplied to ``from=``. is usually the same token supplied to `from=`.
end: end:
type: string type: string
description: |- description: |-
A token which correlates to the last value in ``chunk``. This A token which correlates to the last value in `chunk`. This
token should be used in the next request to ``/events``. token should be used in the next request to `/events`.
chunk: chunk:
type: array type: array
description: "An array of events." description: "An array of events."
@ -102,5 +102,5 @@ paths:
allOf: allOf:
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml" - "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml"
400: 400:
description: "Bad pagination ``from`` parameter." description: "Bad pagination `from` parameter."
# No tags to exclude this from the swagger UI - use the normal version instead. # No tags to exclude this from the swagger UI - use the normal version instead.

@ -33,7 +33,7 @@ paths:
description: |- description: |-
This API sets the given user's presence state. When setting the status, This API sets the given user's presence state. When setting the status,
the activity time is updated to reflect that activity; the client does the activity time is updated to reflect that activity; the client does
not need to specify the ``last_active_ago`` field. You cannot set the not need to specify the `last_active_ago` field. You cannot set the
presence state of another user. presence state of another user.
operationId: setPresence operationId: setPresence
security: security:

@ -32,7 +32,7 @@ paths:
summary: Set the user's display name. summary: Set the user's display name.
description: |- description: |-
This API sets the given user's display name. You must have permission to This API sets the given user's display name. You must have permission to
set this user's display name, e.g. you need to have their ``access_token``. set this user's display name, e.g. you need to have their `access_token`.
operationId: setDisplayName operationId: setDisplayName
security: security:
- accessToken: [] - accessToken: []
@ -106,7 +106,7 @@ paths:
summary: Set the user's avatar URL. summary: Set the user's avatar URL.
description: |- description: |-
This API sets the given user's avatar URL. You must have permission to This API sets the given user's avatar URL. You must have permission to
set this user's avatar URL, e.g. you need to have their ``access_token``. set this user's avatar URL, e.g. you need to have their `access_token`.
operationId: setAvatarUrl operationId: setAvatarUrl
security: security:
- accessToken: [] - accessToken: []
@ -182,7 +182,7 @@ paths:
Get the combined profile information for this user. This API may be used Get the combined profile information for this user. This API may be used
to fetch the user's own profile information or other users; either to fetch the user's own profile information or other users; either
locally or on remote homeservers. This API may return keys which are not locally or on remote homeservers. This API may return keys which are not
limited to ``displayname`` or ``avatar_url``. limited to `displayname` or `avatar_url`.
operationId: getUserProfile operationId: getUserProfile
parameters: parameters:
- in: path - in: path

@ -71,13 +71,13 @@ paths:
pushkey: pushkey:
type: string type: string
description: |- description: |-
This is a unique identifier for this pusher. See ``/set`` for This is a unique identifier for this pusher. See `/set` for
more detail. more detail.
Max length, 512 bytes. Max length, 512 bytes.
kind: kind:
type: string type: string
description: |- description: |-
The kind of pusher. ``"http"`` is a pusher that The kind of pusher. `"http"` is a pusher that
sends HTTP pokes. sends HTTP pokes.
app_id: app_id:
type: string type: string
@ -114,7 +114,7 @@ paths:
url: url:
type: string type: string
description: |- description: |-
Required if ``kind`` is ``http``. The URL to use to send Required if `kind` is `http`. The URL to use to send
notifications to. notifications to.
format: format:
type: string type: string
@ -173,14 +173,14 @@ paths:
client has no such concept, use any unique identifier. client has no such concept, use any unique identifier.
Max length, 512 bytes. Max length, 512 bytes.
If the ``kind`` is ``"email"``, this is the email address to If the `kind` is `"email"`, this is the email address to
send notifications to. send notifications to.
kind: kind:
type: string type: string
description: |- description: |-
The kind of pusher to configure. ``"http"`` makes a pusher that The kind of pusher to configure. `"http"` makes a pusher that
sends HTTP pokes. ``"email"`` makes a pusher that emails the sends HTTP pokes. `"email"` makes a pusher that emails the
user with unread notifications. ``null`` deletes the pusher. user with unread notifications. `null` deletes the pusher.
app_id: app_id:
type: string type: string
description: |- description: |-
@ -189,7 +189,7 @@ paths:
different platform versions get different app identifiers. different platform versions get different app identifiers.
Max length, 64 chars. Max length, 64 chars.
If the ``kind`` is ``"email"``, this is ``"m.email"``. If the `kind` is `"email"`, this is `"m.email"`.
app_display_name: app_display_name:
type: string type: string
description: |- description: |-
@ -214,22 +214,22 @@ paths:
type: object type: object
description: |- description: |-
A dictionary of information for the pusher implementation A dictionary of information for the pusher implementation
itself. If ``kind`` is ``http``, this should contain ``url`` itself. If `kind` is `http`, this should contain `url`
which is the URL to use to send notifications to. which is the URL to use to send notifications to.
title: PusherData title: PusherData
properties: properties:
url: url:
type: string type: string
description: |- description: |-
Required if ``kind`` is ``http``. The URL to use to send Required if `kind` is `http`. The URL to use to send
notifications to. MUST be an HTTPS URL with a path of notifications to. MUST be an HTTPS URL with a path of
``/_matrix/push/v1/notify``. `/_matrix/push/v1/notify`.
example: "https://push-gateway.location.here/_matrix/push/v1/notify" example: "https://push-gateway.location.here/_matrix/push/v1/notify"
format: format:
type: string type: string
description: |- description: |-
The format to send notifications in to Push Gateways if the The format to send notifications in to Push Gateways if the
``kind`` is ``http``. The details about what fields the `kind` is `http`. The details about what fields the
homeserver should send to the push gateway are defined in the homeserver should send to the push gateway are defined in the
`Push Gateway Specification`_. Currently the only format `Push Gateway Specification`_. Currently the only format
available is 'event_id_only'. available is 'event_id_only'.
@ -240,7 +240,7 @@ paths:
given pushkey and App ID in addition to any others with given pushkey and App ID in addition to any others with
different user IDs. Otherwise, the homeserver must remove any different user IDs. Otherwise, the homeserver must remove any
other pushers with the same App ID and pushkey for different other pushers with the same App ID and pushkey for different
users. The default is ``false``. users. The default is `false`.
required: ['kind', 'app_id', 'app_display_name', required: ['kind', 'app_id', 'app_display_name',
'device_display_name', 'pushkey', 'lang', 'data'] 'device_display_name', 'pushkey', 'lang', 'data']
responses: responses:

@ -32,9 +32,9 @@ paths:
summary: Retrieve all push rulesets. summary: Retrieve all push rulesets.
description: |- description: |-
Retrieve all push rulesets for this user. Clients can "drill-down" on Retrieve all push rulesets for this user. Clients can "drill-down" on
the rulesets by suffixing a ``scope`` to this path e.g. the rulesets by suffixing a `scope` to this path e.g.
``/pushrules/global/``. This will return a subset of this data under the `/pushrules/global/`. This will return a subset of this data under the
specified key e.g. the ``global`` key. specified key e.g. the `global` key.
operationId: getPushRules operationId: getPushRules
security: security:
- accessToken: [] - accessToken: []
@ -263,7 +263,7 @@ paths:
required: true required: true
x-example: "global" x-example: "global"
description: |- description: |-
``global`` to specify global rules. `global` to specify global rules.
- in: path - in: path
type: string type: string
name: kind name: kind
@ -283,7 +283,7 @@ paths:
200: 200:
description: |- description: |-
The specific push rule. This will also include keys specific to the The specific push rule. This will also include keys specific to the
rule itself such as the rule's ``actions`` and ``conditions`` if set. rule itself such as the rule's `actions` and `conditions` if set.
examples: examples:
application/json: { application/json: {
"actions": [ "actions": [
@ -326,7 +326,7 @@ paths:
required: true required: true
x-example: "global" x-example: "global"
description: |- description: |-
``global`` to specify global rules. `global` to specify global rules.
- in: path - in: path
type: string type: string
name: kind name: kind
@ -380,7 +380,7 @@ paths:
required: true required: true
x-example: "global" x-example: "global"
description: |- description: |-
``global`` to specify global rules. `global` to specify global rules.
- in: path - in: path
type: string type: string
name: kind name: kind
@ -402,7 +402,7 @@ paths:
required: false required: false
x-example: someRuleId x-example: someRuleId
description: |- description: |-
Use 'before' with a ``rule_id`` as its value to make the new rule the Use 'before' with a `rule_id` as its value to make the new rule the
next-most important rule with respect to the given user defined rule. next-most important rule with respect to the given user defined rule.
It is not possible to add a rule relative to a predefined server rule. It is not possible to add a rule relative to a predefined server rule.
- in: query - in: query
@ -418,7 +418,7 @@ paths:
name: pushrule name: pushrule
description: |- description: |-
The push rule data. Additional top-level keys may be present depending The push rule data. Additional top-level keys may be present depending
on the parameters for the rule ``kind``. on the parameters for the rule `kind`.
required: true required: true
schema: schema:
type: object type: object
@ -440,14 +440,14 @@ paths:
description: |- description: |-
The conditions that must hold true for an event in order for a The conditions that must hold true for an event in order for a
rule to be applied to an event. A rule with no conditions rule to be applied to an event. A rule with no conditions
always matches. Only applicable to ``underride`` and ``override`` rules. always matches. Only applicable to `underride` and `override` rules.
items: items:
type: object type: object
allOf: [ "$ref": "definitions/push_condition.yaml" ] allOf: [ "$ref": "definitions/push_condition.yaml" ]
pattern: pattern:
type: string type: string
description: |- description: |-
Only applicable to ``content`` rules. The glob-style pattern to match against. Only applicable to `content` rules. The glob-style pattern to match against.
required: ["actions"] required: ["actions"]
responses: responses:
200: 200:
@ -497,8 +497,8 @@ paths:
required: true required: true
x-example: "global" x-example: "global"
description: |- description: |-
Either ``global`` or ``device/<profile_tag>`` to specify global Either `global` or `device/<profile_tag>` to specify global
rules or device rules for the given ``profile_tag``. rules or device rules for the given `profile_tag`.
- in: path - in: path
type: string type: string
name: kind name: kind
@ -554,7 +554,7 @@ paths:
required: true required: true
x-example: "global" x-example: "global"
description: |- description: |-
``global`` to specify global rules. `global` to specify global rules.
- in: path - in: path
type: string type: string
name: kind name: kind
@ -620,8 +620,8 @@ paths:
required: true required: true
x-example: "global" x-example: "global"
description: |- description: |-
Either ``global`` or ``device/<profile_tag>`` to specify global Either `global` or `device/<profile_tag>` to specify global
rules or device rules for the given ``profile_tag``. rules or device rules for the given `profile_tag`.
- in: path - in: path
type: string type: string
name: kind name: kind
@ -685,7 +685,7 @@ paths:
required: true required: true
x-example: "global" x-example: "global"
description: |- description: |-
``global`` to specify global rules. `global` to specify global rules.
- in: path - in: path
type: string type: string
name: kind name: kind

@ -60,7 +60,7 @@ paths:
type: string type: string
description: |- description: |-
The event ID to set the read receipt location at. This is The event ID to set the read receipt location at. This is
equivalent to calling ``/receipt/m.read/$elsewhere:example.org`` equivalent to calling `/receipt/m.read/$elsewhere:example.org`
and is provided here to save that extra call. and is provided here to save that extra call.
example: "$elsewhere:example.org" example: "$elsewhere:example.org"
required: ['m.fully_read'] required: ['m.fully_read']

@ -59,8 +59,8 @@ paths:
- in: body - in: body
name: receipt name: receipt
description: |- description: |-
Extra receipt information to attach to ``content`` if any. The Extra receipt information to attach to `content` if any. The
server will automatically set the ``ts`` field. server will automatically set the `ts` field.
schema: schema:
type: object type: object
example: { example: {

@ -36,9 +36,9 @@ paths:
This cannot be undone. This cannot be undone.
Any user with a power level greater than or equal to the ``m.room.redaction`` Any user with a power level greater than or equal to the `m.room.redaction`
event power level may send redaction events in the room. If the user's power event power level may send redaction events in the room. If the user's power
level greater is also greater than or equal to the ``redact`` power level level greater is also greater than or equal to the `redact` power level
of the room, the user may redact events sent by other users. of the room, the user may redact events sent by other users.
Server administrators may redact events sent by users on their server. Server administrators may redact events sent by users on their server.

@ -43,27 +43,27 @@ paths:
If registration is successful, this endpoint will issue an access token If registration is successful, this endpoint will issue an access token
the client can use to authorize itself in subsequent requests. the client can use to authorize itself in subsequent requests.
If the client does not supply a ``device_id``, the server must If the client does not supply a `device_id`, the server must
auto-generate one. auto-generate one.
The server SHOULD register an account with a User ID based on the The server SHOULD register an account with a User ID based on the
``username`` provided, if any. Note that the grammar of Matrix User ID `username` provided, if any. Note that the grammar of Matrix User ID
localparts is restricted, so the server MUST either map the provided localparts is restricted, so the server MUST either map the provided
``username`` onto a ``user_id`` in a logical manner, or reject `username` onto a `user_id` in a logical manner, or reject
``username``\s which do not comply to the grammar, with `username`\s which do not comply to the grammar, with
``M_INVALID_USERNAME``. `M_INVALID_USERNAME`.
Matrix clients MUST NOT assume that localpart of the registered Matrix clients MUST NOT assume that localpart of the registered
``user_id`` matches the provided ``username``. `user_id` matches the provided `username`.
The returned access token must be associated with the ``device_id`` The returned access token must be associated with the `device_id`
supplied by the client or generated by the server. The server may supplied by the client or generated by the server. The server may
invalidate any access token previously associated with that device. See invalidate any access token previously associated with that device. See
`Relationship between access tokens and devices`_. `Relationship between access tokens and devices`_.
When registering a guest account, all parameters in the request body When registering a guest account, all parameters in the request body
with the exception of ``initial_device_display_name`` MUST BE ignored with the exception of `initial_device_display_name` MUST BE ignored
by the server. The server MUST pick a ``device_id`` for the account by the server. The server MUST pick a `device_id` for the account
regardless of input. regardless of input.
Any user ID returned by this API must conform to the grammar given in the Any user ID returned by this API must conform to the grammar given in the
@ -81,7 +81,7 @@ paths:
enum: enum:
- guest - guest
- user - user
description: The kind of account to register. Defaults to ``user``. description: The kind of account to register. Defaults to `user`.
- in: body - in: body
name: body name: body
required: true required: true
@ -94,7 +94,7 @@ paths:
user-interactive authentication API. Note that this user-interactive authentication API. Note that this
information is *not* used to define how the registered user information is *not* used to define how the registered user
should be authenticated, but is instead used to should be authenticated, but is instead used to
authenticate the ``register`` call itself. authenticate the `register` call itself.
allOf: allOf:
- "$ref": "definitions/auth_data.yaml" - "$ref": "definitions/auth_data.yaml"
username: username:
@ -118,12 +118,12 @@ paths:
type: string type: string
description: |- description: |-
A display name to assign to the newly-created device. Ignored A display name to assign to the newly-created device. Ignored
if ``device_id`` corresponds to a known device. if `device_id` corresponds to a known device.
example: Jungle Phone example: Jungle Phone
inhibit_login: inhibit_login:
type: boolean type: boolean
description: |- description: |-
If true, an ``access_token`` and ``device_id`` should not be If true, an `access_token` and `device_id` should not be
returned from this call, therefore preventing an automatic returned from this call, therefore preventing an automatic
login. Defaults to false. login. Defaults to false.
example: false example: false
@ -151,7 +151,7 @@ paths:
description: |- description: |-
An access token for the account. An access token for the account.
This access token can then be used to authorize other requests. This access token can then be used to authorize other requests.
Required if the ``inhibit_login`` option is false. Required if the `inhibit_login` option is false.
home_server: home_server:
type: string type: string
description: |- description: |-
@ -159,22 +159,22 @@ paths:
been registered. been registered.
**Deprecated**. Clients should extract the server_name from **Deprecated**. Clients should extract the server_name from
``user_id`` (by splitting at the first colon) if they require `user_id` (by splitting at the first colon) if they require
it. Note also that ``homeserver`` is not spelt this way. it. Note also that `homeserver` is not spelt this way.
device_id: device_id:
type: string type: string
description: |- description: |-
ID of the registered device. Will be the same as the ID of the registered device. Will be the same as the
corresponding parameter in the request, if one was specified. corresponding parameter in the request, if one was specified.
Required if the ``inhibit_login`` option is false. Required if the `inhibit_login` option is false.
required: ['user_id'] required: ['user_id']
400: 400:
description: |- description: |-
Part of the request was invalid. This may include one of the following error codes: Part of the request was invalid. This may include one of the following error codes:
* ``M_USER_IN_USE`` : The desired user ID is already taken. * `M_USER_IN_USE` : The desired user ID is already taken.
* ``M_INVALID_USERNAME`` : The desired user ID is not a valid user name. * `M_INVALID_USERNAME` : The desired user ID is not a valid user name.
* ``M_EXCLUSIVE`` : The desired user ID is in the exclusive namespace * `M_EXCLUSIVE` : The desired user ID is in the exclusive namespace
claimed by an application service. claimed by an application service.
These errors may be returned at any stage of the registration process, These errors may be returned at any stage of the registration process,
@ -200,7 +200,7 @@ paths:
403: 403:
description: |- description: |-
The homeserver does not permit registering the account. This response The homeserver does not permit registering the account. This response
can be used to identify that a particular ``kind`` of account is not can be used to identify that a particular `kind` of account is not
allowed, or that registration is generally not supported by the homeserver. allowed, or that registration is generally not supported by the homeserver.
examples: examples:
application/json: { application/json: {
@ -251,12 +251,12 @@ paths:
description: |- description: |-
Part of the request was invalid. This may include one of the following error codes: Part of the request was invalid. This may include one of the following error codes:
* ``M_THREEPID_IN_USE`` : The email address is already registered to an account on this server. * `M_THREEPID_IN_USE` : The email address is already registered to an account on this server.
However, if the homeserver has the ability to send email, it is recommended that the server However, if the homeserver has the ability to send email, it is recommended that the server
instead send an email to the user with instructions on how to reset their password. instead send an email to the user with instructions on how to reset their password.
This prevents malicious parties from being able to determine if a given email address This prevents malicious parties from being able to determine if a given email address
has an account on the homeserver in question. has an account on the homeserver in question.
* ``M_SERVER_NOT_TRUSTED`` : The ``id_server`` parameter refers to an identity server * `M_SERVER_NOT_TRUSTED` : The `id_server` parameter refers to an identity server
that is not trusted by this homeserver. that is not trusted by this homeserver.
examples: examples:
application/json: { application/json: {
@ -301,12 +301,12 @@ paths:
description: |- description: |-
Part of the request was invalid. This may include one of the following error codes: Part of the request was invalid. This may include one of the following error codes:
* ``M_THREEPID_IN_USE`` : The phone number is already registered to an account on this server. * `M_THREEPID_IN_USE` : The phone number is already registered to an account on this server.
However, if the homeserver has the ability to send SMS message, it is recommended that the server However, if the homeserver has the ability to send SMS message, it is recommended that the server
instead send an SMS message to the user with instructions on how to reset their password. instead send an SMS message to the user with instructions on how to reset their password.
This prevents malicious parties from being able to determine if a given phone number This prevents malicious parties from being able to determine if a given phone number
has an account on the homeserver in question. has an account on the homeserver in question.
* ``M_SERVER_NOT_TRUSTED`` : The ``id_server`` parameter refers to an identity server * `M_SERVER_NOT_TRUSTED` : The `id_server` parameter refers to an identity server
that is not trusted by this homeserver. that is not trusted by this homeserver.
examples: examples:
application/json: { application/json: {
@ -352,7 +352,7 @@ paths:
Whether the user's other access tokens, and their associated devices, should be Whether the user's other access tokens, and their associated devices, should be
revoked if the request succeeds. Defaults to true. revoked if the request succeeds. Defaults to true.
When ``false``, the server can still take advantage of `the soft logout method <#soft-logout>`_ When `false`, the server can still take advantage of `the soft logout method <#soft-logout>`_
for the user's remaining devices. for the user's remaining devices.
example: true example: true
auth: auth:
@ -386,20 +386,20 @@ paths:
The homeserver must check that the given email address **is The homeserver must check that the given email address **is
associated** with an account on this homeserver. This API should be associated** with an account on this homeserver. This API should be
used to request validation tokens when authenticating for the used to request validation tokens when authenticating for the
``/account/password`` endpoint. `/account/password` endpoint.
This API's parameters and response are identical to that of the This API's parameters and response are identical to that of the
|/register/email/requestToken|_ endpoint, except that |/register/email/requestToken|_ endpoint, except that
``M_THREEPID_NOT_FOUND`` may be returned if no account matching the `M_THREEPID_NOT_FOUND` may be returned if no account matching the
given email address could be found. The server may instead send an given email address could be found. The server may instead send an
email to the given address prompting the user to create an account. email to the given address prompting the user to create an account.
``M_THREEPID_IN_USE`` may not be returned. `M_THREEPID_IN_USE` may not be returned.
The homeserver should validate the email itself, either by sending a The homeserver should validate the email itself, either by sending a
validation email itself or by using a service it has control over. validation email itself or by using a service it has control over.
.. |/register/email/requestToken| replace:: ``/register/email/requestToken`` .. |/register/email/requestToken| replace:: `/register/email/requestToken`
.. _/register/email/requestToken: #post-matrix-client-%CLIENT_MAJOR_VERSION%-register-email-requesttoken .. _/register/email/requestToken: #post-matrix-client-%CLIENT_MAJOR_VERSION%-register-email-requesttoken
operationId: requestTokenToResetPasswordEmail operationId: requestTokenToResetPasswordEmail
@ -428,7 +428,7 @@ paths:
400: 400:
description: |- description: |-
The referenced third party identifier is not recognised by the The referenced third party identifier is not recognised by the
homeserver, or the request was invalid. The error code ``M_SERVER_NOT_TRUSTED`` homeserver, or the request was invalid. The error code `M_SERVER_NOT_TRUSTED`
can be returned if the server does not trust/support the identity server can be returned if the server does not trust/support the identity server
provided in the request. provided in the request.
schema: schema:
@ -445,19 +445,19 @@ paths:
The homeserver must check that the given phone number **is The homeserver must check that the given phone number **is
associated** with an account on this homeserver. This API should be associated** with an account on this homeserver. This API should be
used to request validation tokens when authenticating for the used to request validation tokens when authenticating for the
``/account/password`` endpoint. `/account/password` endpoint.
This API's parameters and response are identical to that of the This API's parameters and response are identical to that of the
|/register/msisdn/requestToken|_ endpoint, except that |/register/msisdn/requestToken|_ endpoint, except that
``M_THREEPID_NOT_FOUND`` may be returned if no account matching the `M_THREEPID_NOT_FOUND` may be returned if no account matching the
given phone number could be found. The server may instead send the SMS given phone number could be found. The server may instead send the SMS
to the given phone number prompting the user to create an account. to the given phone number prompting the user to create an account.
``M_THREEPID_IN_USE`` may not be returned. `M_THREEPID_IN_USE` may not be returned.
The homeserver should validate the phone number itself, either by sending a The homeserver should validate the phone number itself, either by sending a
validation message itself or by using a service it has control over. validation message itself or by using a service it has control over.
.. |/register/msisdn/requestToken| replace:: ``/register/msisdn/requestToken`` .. |/register/msisdn/requestToken| replace:: `/register/msisdn/requestToken`
.. _/register/msisdn/requestToken: #post-matrix-client-%CLIENT_MAJOR_VERSION%-register-email-requesttoken .. _/register/msisdn/requestToken: #post-matrix-client-%CLIENT_MAJOR_VERSION%-register-email-requesttoken
operationId: requestTokenToResetPasswordMSISDN operationId: requestTokenToResetPasswordMSISDN
@ -486,7 +486,7 @@ paths:
400: 400:
description: |- description: |-
The referenced third party identifier is not recognised by the The referenced third party identifier is not recognised by the
homeserver, or the request was invalid. The error code ``M_SERVER_NOT_TRUSTED`` homeserver, or the request was invalid. The error code `M_SERVER_NOT_TRUSTED`
can be returned if the server does not trust/support the identity server can be returned if the server does not trust/support the identity server
provided in the request. provided in the request.
schema: schema:
@ -511,7 +511,7 @@ paths:
The homeserver may change the flows available depending on whether a The homeserver may change the flows available depending on whether a
valid access token is provided. valid access token is provided.
Unlike other endpoints, this endpoint does not take an ``id_access_token`` Unlike other endpoints, this endpoint does not take an `id_access_token`
parameter because the homeserver is expected to sign the request to the parameter because the homeserver is expected to sign the request to the
identity server instead. identity server instead.
security: security:
@ -533,11 +533,11 @@ paths:
type: string type: string
description: |- description: |-
The identity server to unbind all of the user's 3PIDs from. The identity server to unbind all of the user's 3PIDs from.
If not provided, the homeserver MUST use the ``id_server`` If not provided, the homeserver MUST use the `id_server`
that was originally use to bind each identifier. If the that was originally use to bind each identifier. If the
homeserver does not know which ``id_server`` that was, homeserver does not know which `id_server` that was,
it must return an ``id_server_unbind_result`` of it must return an `id_server_unbind_result` of
``no-support``. `no-support`.
example: "example.org" example: "example.org"
responses: responses:
200: 200:
@ -552,12 +552,12 @@ paths:
- "no-support" - "no-support"
description: |- description: |-
An indicator as to whether or not the homeserver was able to unbind An indicator as to whether or not the homeserver was able to unbind
the user's 3PIDs from the identity server(s). ``success`` indicates the user's 3PIDs from the identity server(s). `success` indicates
that all identifiers have been unbound from the identity server while that all identifiers have been unbound from the identity server while
``no-support`` indicates that one or more identifiers failed to unbind `no-support` indicates that one or more identifiers failed to unbind
due to the identity server refusing the request or the homeserver due to the identity server refusing the request or the homeserver
being unable to determine an identity server to unbind from. This being unable to determine an identity server to unbind from. This
must be ``success`` if the homeserver has no identifiers to unbind must be `success` if the homeserver has no identifiers to unbind
for the user. for the user.
example: "success" example: "success"
required: required:
@ -612,15 +612,15 @@ paths:
type: boolean type: boolean
description: |- description: |-
A flag to indicate that the username is available. This should always A flag to indicate that the username is available. This should always
be ``true`` when the server replies with 200 OK. be `true` when the server replies with 200 OK.
400: 400:
description: |- description: |-
Part of the request was invalid or the username is not available. This may Part of the request was invalid or the username is not available. This may
include one of the following error codes: include one of the following error codes:
* ``M_USER_IN_USE`` : The desired username is already taken. * `M_USER_IN_USE` : The desired username is already taken.
* ``M_INVALID_USERNAME`` : The desired username is not a valid user name. * `M_INVALID_USERNAME` : The desired username is not a valid user name.
* ``M_EXCLUSIVE`` : The desired username is in the exclusive namespace * `M_EXCLUSIVE` : The desired username is in the exclusive namespace
claimed by an application service. claimed by an application service.
examples: examples:
application/json: { application/json: {

@ -98,12 +98,12 @@ paths:
start: start:
type: string type: string
description: |- description: |-
A token which correlates to the first value in ``chunk``. A token which correlates to the first value in `chunk`.
Used for pagination. Used for pagination.
end: end:
type: string type: string
description: |- description: |-
A token which correlates to the last value in ``chunk``. A token which correlates to the last value in `chunk`.
Used for pagination. Used for pagination.
chunk: chunk:
type: array type: array
@ -112,7 +112,7 @@ paths:
list of the most recent messages for this room. If list of the most recent messages for this room. If
the user has left the room this will be the the user has left the room this will be the
messages that preceeded them leaving. This array messages that preceeded them leaving. This array
will consist of at most ``limit`` elements. will consist of at most `limit` elements.
items: items:
type: object type: object
title: RoomEvent title: RoomEvent
@ -135,7 +135,7 @@ paths:
type: string type: string
enum: ["private", "public"] enum: ["private", "public"]
description: |- description: |-
Whether this room is visible to the ``/publicRooms`` API Whether this room is visible to the `/publicRooms` API
or not." or not."
account_data: account_data:
type: array type: array

@ -35,18 +35,18 @@ paths:
.. _`put-matrix-client-%CLIENT_MAJOR_VERSION%-rooms-roomid-state-eventtype`: .. _`put-matrix-client-%CLIENT_MAJOR_VERSION%-rooms-roomid-state-eventtype`:
State events can be sent using this endpoint. These events will be State events can be sent using this endpoint. These events will be
overwritten if ``<room id>``, ``<event type>`` and ``<state key>`` all overwritten if `<room id>`, `<event type>` and `<state key>` all
match. match.
Requests to this endpoint **cannot use transaction IDs** Requests to this endpoint **cannot use transaction IDs**
like other ``PUT`` paths because they cannot be differentiated from the like other `PUT` paths because they cannot be differentiated from the
``state_key``. Furthermore, ``POST`` is unsupported on state paths. `state_key`. Furthermore, `POST` is unsupported on state paths.
The body of the request should be the content object of the event; the The body of the request should be the content object of the event; the
fields in this object will vary depending on the type of event. See fields in this object will vary depending on the type of event. See
`Room Events`_ for the ``m.`` event specification. `Room Events`_ for the `m.` event specification.
If the event type being sent is ``m.room.canonical_alias`` servers If the event type being sent is `m.room.canonical_alias` servers
SHOULD ensure that any new aliases being listed in the event are valid SHOULD ensure that any new aliases being listed in the event are valid
per their grammar/syntax and that they point to the room ID where the per their grammar/syntax and that they point to the room ID where the
state event is to be sent. Servers do not validate aliases which are state event is to be sent. Servers do not validate aliases which are
@ -116,10 +116,10 @@ paths:
Some example error codes include: Some example error codes include:
* ``M_INVALID_PARAMETER``: One or more aliases within the ``m.room.canonical_alias`` * `M_INVALID_PARAMETER`: One or more aliases within the `m.room.canonical_alias`
event have invalid syntax. event have invalid syntax.
* ``M_BAD_ALIAS``: One or more aliases within the ``m.room.canonical_alias`` event * `M_BAD_ALIAS`: One or more aliases within the `m.room.canonical_alias` event
do not point to the room ID for which the state event is to be sent to. do not point to the room ID for which the state event is to be sent to.
schema: schema:
$ref: "definitions/errors/error.yaml" $ref: "definitions/errors/error.yaml"

@ -31,7 +31,7 @@ paths:
get: get:
summary: Get a single event by event ID. summary: Get a single event by event ID.
description: |- description: |-
Get a single event based on ``roomId/eventId``. You must have permission to Get a single event based on `roomId/eventId`. You must have permission to
retrieve this event e.g. by being a member in the room for this event. retrieve this event e.g. by being a member in the room for this event.
operationId: getOneRoomEvent operationId: getOneRoomEvent
security: security:
@ -196,7 +196,7 @@ paths:
type: string type: string
description: |- description: |-
The point in time (pagination token) to return members for in the room. The point in time (pagination token) to return members for in the room.
This token can be obtained from a ``prev_batch`` token returned for This token can be obtained from a `prev_batch` token returned for
each room by the sync API. Defaults to the current state of the room, each room by the sync API. Defaults to the current state of the room,
as determined by the server. as determined by the server.
x-example: "YWxsCgpOb25lLDM1ODcwOA" x-example: "YWxsCgpOb25lLDM1ODcwOA"
@ -213,9 +213,9 @@ paths:
- ban - ban
description: |- description: |-
The kind of membership to filter for. Defaults to no filtering if The kind of membership to filter for. Defaults to no filtering if
unspecified. When specified alongside ``not_membership``, the two unspecified. When specified alongside `not_membership`, the two
parameters create an 'or' condition: either the membership *is* parameters create an 'or' condition: either the membership *is*
the same as ``membership`` **or** *is not* the same as ``not_membership``. the same as `membership` **or** *is not* the same as `not_membership`.
x-example: "join" x-example: "join"
- in: query - in: query
name: not_membership name: not_membership
@ -267,7 +267,7 @@ paths:
summary: Gets the list of currently joined users and their profile data. summary: Gets the list of currently joined users and their profile data.
description: description:
This API returns a map of MXIDs to member info objects for members of the room. The current user must be in the room for it to work, unless it is an Application Service in which case any of the AS's users must be in the room. This API returns a map of MXIDs to member info objects for members of the room. The current user must be in the room for it to work, unless it is an Application Service in which case any of the AS's users must be in the room.
This API is primarily for Application Services and should be faster to respond than ``/members`` as it can be implemented more efficiently on the server. This API is primarily for Application Services and should be faster to respond than `/members` as it can be implemented more efficiently on the server.
operationId: getJoinedMembersByRoom operationId: getJoinedMembersByRoom
parameters: parameters:
- in: path - in: path

@ -41,7 +41,7 @@ paths:
type: string type: string
description: |- description: |-
The point to return events from. If given, this should be a The point to return events from. If given, this should be a
``next_batch`` result from a previous call to this endpoint. `next_batch` result from a previous call to this endpoint.
x-example: "YWxsCgpOb25lLDM1ODcwOA" x-example: "YWxsCgpOb25lLDM1ODcwOA"
- in: body - in: body
name: body name: body
@ -104,7 +104,7 @@ paths:
enum: ["recent", "rank"] enum: ["recent", "rank"]
description: |- description: |-
The order in which to search for results. The order in which to search for results.
By default, this is ``"rank"``. By default, this is `"rank"`.
event_context: event_context:
title: Include Event Context title: Include Event Context
type: object type: object
@ -117,13 +117,13 @@ paths:
title: "Before limit" title: "Before limit"
description: |- description: |-
How many events before the result are How many events before the result are
returned. By default, this is ``5``. returned. By default, this is `5`.
after_limit: after_limit:
type: integer type: integer
title: "After limit" title: "After limit"
description: |- description: |-
How many events after the result are How many events after the result are
returned. By default, this is ``5``. returned. By default, this is `5`.
include_profile: include_profile:
type: boolean type: boolean
title: "Return profile information" title: "Return profile information"
@ -131,7 +131,7 @@ paths:
Requests that the server returns the Requests that the server returns the
historic profile information for the users historic profile information for the users
that sent the events that were returned. that sent the events that were returned.
By default, this is ``false``. By default, this is `false`.
include_state: include_state:
type: boolean type: boolean
title: Include current state title: Include current state
@ -231,7 +231,7 @@ paths:
The historic profile information of the The historic profile information of the
users that sent the events returned. users that sent the events returned.
The ``string`` key is the user ID for which The `string` key is the user ID for which
the profile belongs to. the profile belongs to.
additionalProperties: additionalProperties:
type: object type: object
@ -265,10 +265,10 @@ paths:
description: |- description: |-
The current state for every room in the results. The current state for every room in the results.
This is included if the request had the This is included if the request had the
``include_state`` key set with a value of ``true``. `include_state` key set with a value of `true`.
The ``string`` key is the room ID for which the ``State The `string` key is the room ID for which the `State
Event`` array belongs to. Event` array belongs to.
additionalProperties: additionalProperties:
type: array type: array
title: Room State title: Room State
@ -281,8 +281,8 @@ paths:
description: |- description: |-
Any groups that were requested. Any groups that were requested.
The outer ``string`` key is the group key requested (eg: ``room_id`` The outer `string` key is the group key requested (eg: `room_id`
or ``sender``). The inner ``string`` key is the grouped value (eg: or `sender`). The inner `string` key is the grouped value (eg:
a room's ID or a user's ID). a room's ID or a user's ID).
additionalProperties: additionalProperties:
type: object type: object

@ -36,20 +36,20 @@ paths:
incremental deltas to the state, and to receive new messages. incremental deltas to the state, and to receive new messages.
*Note*: This endpoint supports lazy-loading. See `Filtering <#filtering>`_ *Note*: This endpoint supports lazy-loading. See `Filtering <#filtering>`_
for more information. Lazy-loading members is only supported on a ``StateFilter`` for more information. Lazy-loading members is only supported on a `StateFilter`
for this endpoint. When lazy-loading is enabled, servers MUST include the for this endpoint. When lazy-loading is enabled, servers MUST include the
syncing user's own membership event when they join a room, or when the syncing user's own membership event when they join a room, or when the
full state of rooms is requested, to aid discovering the user's avatar & full state of rooms is requested, to aid discovering the user's avatar &
displayname. displayname.
Further, like other members, the user's own membership event is eligible Further, like other members, the user's own membership event is eligible
for being considered redundant by the server. When a sync is ``limited``, for being considered redundant by the server. When a sync is `limited`,
the server MUST return membership events for events in the gap the server MUST return membership events for events in the gap
(between ``since`` and the start of the returned timeline), regardless (between `since` and the start of the returned timeline), regardless
as to whether or not they are redundant. This ensures that joins/leaves as to whether or not they are redundant. This ensures that joins/leaves
and profile changes which occur during the gap are not lost. and profile changes which occur during the gap are not lost.
Note that the default behaviour of ``state`` is to include all membership Note that the default behaviour of `state` is to include all membership
events, alongside other state, when lazy-loading is not enabled. events, alongside other state, when lazy-loading is not enabled.
operationId: sync operationId: sync
security: security:
@ -61,7 +61,7 @@ paths:
description: |- description: |-
The ID of a filter created using the filter API or a filter JSON The ID of a filter created using the filter API or a filter JSON
object encoded as a string. The server will detect whether it is object encoded as a string. The server will detect whether it is
an ID or a JSON object by whether the first character is a ``"{"`` an ID or a JSON object by whether the first character is a `"{"`
open brace. Passing the JSON inline is best suited to one off open brace. Passing the JSON inline is best suited to one off
requests. Creating a filter using the filter API is recommended for requests. Creating a filter using the filter API is recommended for
clients that reuse the same filter multiple times, for example in clients that reuse the same filter multiple times, for example in
@ -82,16 +82,16 @@ paths:
Controls whether to include the full state for all rooms the user Controls whether to include the full state for all rooms the user
is a member of. is a member of.
If this is set to ``true``, then all state events will be returned, If this is set to `true`, then all state events will be returned,
even if ``since`` is non-empty. The timeline will still be limited even if `since` is non-empty. The timeline will still be limited
by the ``since`` parameter. In this case, the ``timeout`` parameter by the `since` parameter. In this case, the `timeout` parameter
will be ignored and the query will return immediately, possibly with will be ignored and the query will return immediately, possibly with
an empty timeline. an empty timeline.
If ``false``, and ``since`` is non-empty, only state which has If `false`, and `since` is non-empty, only state which has
changed since the point indicated by ``since`` will be returned. changed since the point indicated by `since` will be returned.
By default, this is ``false``. By default, this is `false`.
x-example: "false" x-example: "false"
- in: query - in: query
name: set_presence name: set_presence
@ -113,7 +113,7 @@ paths:
request. If no events (or other data) become available before this request. If no events (or other data) become available before this
time elapses, the server will return a response with empty fields. time elapses, the server will return a response with empty fields.
By default, this is ``0``, so the server will return immediately By default, this is `0`, so the server will return immediately
even if the response is empty. even if the response is empty.
x-example: 30000 x-example: 30000
responses: responses:
@ -127,8 +127,8 @@ paths:
next_batch: next_batch:
type: string type: string
description: |- description: |-
The batch token to supply in the ``since`` param of the next The batch token to supply in the `since` param of the next
``/sync`` request. `/sync` request.
rooms: rooms:
title: Rooms title: Rooms
type: object type: object
@ -157,7 +157,7 @@ paths:
description: |- description: |-
The users which can be used to generate a room name The users which can be used to generate a room name
if the room does not have one. Required if the room's if the room does not have one. Required if the room's
``m.room.name`` or ``m.room.canonical_alias`` state events `m.room.name` or `m.room.canonical_alias` state events
are unset or empty. are unset or empty.
This should be the first 5 members of the room, ordered This should be the first 5 members of the room, ordered
@ -169,7 +169,7 @@ paths:
when there are less than 5 members to represent. when there are less than 5 members to represent.
When lazy-loading room members is enabled, the membership When lazy-loading room members is enabled, the membership
events for the heroes MUST be included in the ``state``, events for the heroes MUST be included in the `state`,
unless they are redundant. When the list of users changes, unless they are redundant. When the list of users changes,
the server notifies the client by sending a fresh list of the server notifies the client by sending a fresh list of
heroes. If there are no changes since the last sync, this heroes. If there are no changes since the last sync, this
@ -179,14 +179,14 @@ paths:
"m.joined_member_count": "m.joined_member_count":
type: integer type: integer
description: |- description: |-
The number of users with ``membership`` of ``join``, The number of users with `membership` of `join`,
including the client's own user ID. If this field has including the client's own user ID. If this field has
not changed since the last sync, it may be omitted. not changed since the last sync, it may be omitted.
Required otherwise. Required otherwise.
"m.invited_member_count": "m.invited_member_count":
type: integer type: integer
description: |- description: |-
The number of users with ``membership`` of ``invite``. The number of users with `membership` of `invite`.
If this field has not changed since the last sync, it If this field has not changed since the last sync, it
may be omitted. Required otherwise. may be omitted. Required otherwise.
state: state:
@ -194,14 +194,14 @@ paths:
type: object type: object
description: |- description: |-
Updates to the state, between the time indicated by Updates to the state, between the time indicated by
the ``since`` parameter, and the start of the the `since` parameter, and the start of the
``timeline`` (or all state up to the start of the `timeline` (or all state up to the start of the
``timeline``, if ``since`` is not given, or `timeline`, if `since` is not given, or
``full_state`` is true). `full_state` is true).
N.B. state updates for ``m.room.member`` events will N.B. state updates for `m.room.member` events will
be incomplete if ``lazy_load_members`` is enabled in be incomplete if `lazy_load_members` is enabled in
the ``/sync`` filter, and only return the member events the `/sync` filter, and only return the member events
required to display the senders of the timeline events required to display the senders of the timeline events
in this response. in this response.
allOf: allOf:
@ -264,17 +264,17 @@ paths:
type: object type: object
description: |- description: |-
The state of a room that the user has been invited The state of a room that the user has been invited
to. These state events may only have the ``sender``, to. These state events may only have the `sender`,
``type``, ``state_key`` and ``content`` keys `type`, `state_key` and `content` keys
present. These events do not replace any state that present. These events do not replace any state that
the client already has for the room, for example if the client already has for the room, for example if
the client has archived the room. Instead the the client has archived the room. Instead the
client should keep two separate copies of the client should keep two separate copies of the
state: the one from the ``invite_state`` and one state: the one from the `invite_state` and one
from the archived ``state``. If the client joins from the archived `state`. If the client joins
the room then the current state will be given as a the room then the current state will be given as a
delta against the archived ``state`` not the delta against the archived `state` not the
``invite_state``. `invite_state`.
properties: properties:
events: events:
description: The StrippedState events that form the invite state. description: The StrippedState events that form the invite state.

@ -69,7 +69,7 @@ paths:
type: number type: number
format: float format: float
description: |- description: |-
A number in a range ``[0,1]`` describing a relative A number in a range `[0,1]` describing a relative
position of the room under the given tag. position of the room under the given tag.
additionalProperties: true additionalProperties: true
examples: examples:
@ -125,7 +125,7 @@ paths:
type: number type: number
format: float format: float
description: |- description: |-
A number in a range ``[0,1]`` describing a relative A number in a range `[0,1]` describing a relative
position of the room under the given tag. position of the room under the given tag.
additionalProperties: true additionalProperties: true
example: { example: {

@ -48,7 +48,7 @@ paths:
join that room. join that room.
If the identity server did know the Matrix user identifier for the If the identity server did know the Matrix user identifier for the
third party identifier, the homeserver will append a ``m.room.member`` third party identifier, the homeserver will append a `m.room.member`
event to the room. event to the room.
If the identity server does not know a Matrix user identifier for the If the identity server does not know a Matrix user identifier for the
@ -56,7 +56,7 @@ paths:
which can be accepted upon providing proof of ownership of the third which can be accepted upon providing proof of ownership of the third
party identifier. This is achieved by the identity server generating a party identifier. This is achieved by the identity server generating a
token, which it gives to the inviting homeserver. The homeserver will token, which it gives to the inviting homeserver. The homeserver will
add an ``m.room.third_party_invite`` event into the graph for the room, add an `m.room.third_party_invite` event into the graph for the room,
containing that token. containing that token.
When the invitee binds the invited third party identifier to a Matrix When the invitee binds the invited third party identifier to a Matrix
@ -72,7 +72,7 @@ paths:
- The matrix user ID who invited them to the room - The matrix user ID who invited them to the room
If a token is requested from the identity server, the homeserver will If a token is requested from the identity server, the homeserver will
append a ``m.room.third_party_invite`` event to the room. append a `m.room.third_party_invite` event to the room.
.. _joining rooms section: `invite-by-user-id-endpoint`_ .. _joining rooms section: `invite-by-user-id-endpoint`_
operationId: inviteBy3PID operationId: inviteBy3PID
@ -109,7 +109,7 @@ paths:
medium: medium:
type: string type: string
# TODO: Link to Identity Service spec when it eixsts # TODO: Link to Identity Service spec when it eixsts
description: The kind of address being passed in the address field, for example ``email``. description: The kind of address being passed in the address field, for example `email`.
address: address:
type: string type: string
description: The invitee's third party identifier. description: The invitee's third party identifier.
@ -124,7 +124,7 @@ paths:
type: object type: object
403: 403:
description: |- description: |-
You do not have permission to invite the user to the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are: You do not have permission to invite the user to the room. A meaningful `errcode` and description error text will be returned. Example reasons for rejections are:
- The invitee has been banned from the room. - The invitee has been banned from the room.
- The invitee is already a member of the room. - The invitee is already a member of the room.

@ -32,8 +32,8 @@ paths:
summary: Informs the server that the user has started or stopped typing. summary: Informs the server that the user has started or stopped typing.
description: |- description: |-
This tells the server that the user is typing for the next N This tells the server that the user is typing for the next N
milliseconds where N is the value specified in the ``timeout`` key. milliseconds where N is the value specified in the `timeout` key.
Alternatively, if ``typing`` is ``false``, it tells the server that the Alternatively, if `typing` is `false`, it tells the server that the
user has stopped typing. user has stopped typing.
operationId: setTyping operationId: setTyping
security: security:
@ -65,7 +65,7 @@ paths:
typing: typing:
type: boolean type: boolean
description: |- description: |-
Whether the user is typing or not. If ``false``, the ``timeout`` Whether the user is typing or not. If `false`, the `timeout`
key can be omitted. key can be omitted.
timeout: timeout:
type: integer type: integer

@ -40,7 +40,7 @@ paths:
The search is performed case-insensitively on user IDs and display The search is performed case-insensitively on user IDs and display
names preferably using a collation determined based upon the names preferably using a collation determined based upon the
``Accept-Language`` header provided in the request, if present. `Accept-Language` header provided in the request, if present.
operationId: searchUserDirectory operationId: searchUserDirectory
security: security:
- accessToken: [] - accessToken: []

@ -29,13 +29,13 @@ paths:
description: |- description: |-
Gets the versions of the specification supported by the server. Gets the versions of the specification supported by the server.
Values will take the form ``rX.Y.Z``. Values will take the form `rX.Y.Z`.
Only the latest ``Z`` value will be reported for each supported ``X.Y`` value. Only the latest `Z` value will be reported for each supported `X.Y` value.
i.e. if the server implements ``r0.0.0``, ``r0.0.1``, and ``r1.2.0``, it will report ``r0.0.1`` and ``r1.2.0``. i.e. if the server implements `r0.0.0`, `r0.0.1`, and `r1.2.0`, it will report `r0.0.1` and `r1.2.0`.
The server may additionally advertise experimental features it supports The server may additionally advertise experimental features it supports
through ``unstable_features``. These features should be namespaced and through `unstable_features`. These features should be namespaced and
may optionally include version information within their name if desired. may optionally include version information within their name if desired.
Features listed here are not for optionally toggling parts of the Matrix Features listed here are not for optionally toggling parts of the Matrix
specification and should only be used to advertise support for a feature specification and should only be used to advertise support for a feature

@ -28,7 +28,7 @@ paths:
description: |- description: |-
Gets discovery information about the domain. The file may include Gets discovery information about the domain. The file may include
additional keys, which MUST follow the Java package naming convention, additional keys, which MUST follow the Java package naming convention,
e.g. ``com.example.myapp.property``. This ensures property names are e.g. `com.example.myapp.property`. This ensures property names are
suitably namespaced for each application and reduces the risk of suitably namespaced for each application and reduces the risk of
clashes. clashes.

@ -33,8 +33,8 @@ paths:
Note that, as with the rest of the Client-Server API, Note that, as with the rest of the Client-Server API,
Application Services may masquerade as users within their Application Services may masquerade as users within their
namespace by giving a ``user_id`` query parameter. In this namespace by giving a `user_id` query parameter. In this
situation, the server should verify that the given ``user_id`` situation, the server should verify that the given `user_id`
is registered by the appservice, and return it in the response is registered by the appservice, and return it in the response
body. body.
operationId: getTokenOwner operationId: getTokenOwner

@ -35,13 +35,13 @@ paths:
- in: query - in: query
type: string type: string
name: sid name: sid
description: The Session ID generated by the ``requestToken`` call. description: The Session ID generated by the `requestToken` call.
required: true required: true
x-example: 1234 x-example: 1234
- in: query - in: query
type: string type: string
name: client_secret name: client_secret
description: The client secret passed to the ``requestToken`` call. description: The client secret passed to the `requestToken` call.
required: true required: true
x-example: monkeys_are_GREAT x-example: monkeys_are_GREAT
responses: responses:
@ -72,9 +72,9 @@ paths:
description: |- description: |-
The session has not been validated. The session has not been validated.
If the session has not been validated, then ``errcode`` will be If the session has not been validated, then `errcode` will be
``M_SESSION_NOT_VALIDATED``. If the session has timed out, then `M_SESSION_NOT_VALIDATED`. If the session has timed out, then
``errcode`` will be ``M_SESSION_EXPIRED``. `errcode` will be `M_SESSION_EXPIRED`.
examples: examples:
application/json: { application/json: {
"errcode": "M_SESSION_NOT_VALIDATED", "errcode": "M_SESSION_NOT_VALIDATED",
@ -97,12 +97,12 @@ paths:
description: |- description: |-
Publish an association between a session and a Matrix user ID. Publish an association between a session and a Matrix user ID.
Future calls to ``/lookup`` for any of the session\'s 3pids will return Future calls to `/lookup` for any of the session\'s 3pids will return
this association. this association.
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: bind operationId: bind
deprecated: true deprecated: true
@ -119,10 +119,10 @@ paths:
properties: properties:
sid: sid:
type: string type: string
description: The Session ID generated by the ``requestToken`` call. description: The Session ID generated by the `requestToken` call.
client_secret: client_secret:
type: string type: string
description: The client secret passed to the ``requestToken`` call. description: The client secret passed to the `requestToken` call.
mxid: mxid:
type: string type: string
description: The Matrix user ID to associate with the 3pids. description: The Matrix user ID to associate with the 3pids.
@ -184,9 +184,9 @@ paths:
description: |- description: |-
The association was not published. The association was not published.
If the session has not been validated, then ``errcode`` will be If the session has not been validated, then `errcode` will be
``M_SESSION_NOT_VALIDATED``. If the session has timed out, then `M_SESSION_NOT_VALIDATED`. If the session has timed out, then
``errcode`` will be ``M_SESSION_EXPIRED``. `errcode` will be `M_SESSION_EXPIRED`.
examples: examples:
application/json: { application/json: {
"errcode": "M_SESSION_NOT_VALIDATED", "errcode": "M_SESSION_NOT_VALIDATED",
@ -209,15 +209,15 @@ paths:
description: |- description: |-
Remove an association between a session and a Matrix user ID. Remove an association between a session and a Matrix user ID.
Future calls to ``/lookup`` for any of the session's 3pids will not Future calls to `/lookup` for any of the session's 3pids will not
return the removed association. return the removed association.
The identity server should authenticate the request in one of two The identity server should authenticate the request in one of two
ways: ways:
1. The request is signed by the homeserver which controls the ``user_id``. 1. The request is signed by the homeserver which controls the `user_id`.
2. The request includes the ``sid`` and ``client_secret`` parameters, 2. The request includes the `sid` and `client_secret` parameters,
as per ``/3pid/bind``, which proves ownership of the 3PID. as per `/3pid/bind`, which proves ownership of the 3PID.
If this endpoint returns a JSON Matrix error, that error should be passed If this endpoint returns a JSON Matrix error, that error should be passed
through to the client requesting an unbind through a homeserver, if the through to the client requesting an unbind through a homeserver, if the
@ -241,10 +241,10 @@ paths:
properties: properties:
sid: sid:
type: string type: string
description: The Session ID generated by the ``requestToken`` call. description: The Session ID generated by the `requestToken` call.
client_secret: client_secret:
type: string type: string
description: The client secret passed to the ``requestToken`` call. description: The client secret passed to the `requestToken` call.
mxid: mxid:
type: string type: string
description: The Matrix user ID to remove from the 3pids. description: The Matrix user ID to remove from the 3pids.
@ -253,7 +253,7 @@ paths:
title: 3PID title: 3PID
description: |- description: |-
The 3PID to remove. Must match the 3PID used to generate the session The 3PID to remove. Must match the 3PID used to generate the session
if using ``sid`` and ``client_secret`` to authenticate this request. if using `sid` and `client_secret` to authenticate this request.
properties: properties:
medium: medium:
type: string type: string

@ -23,7 +23,7 @@ properties:
description: | description: |
A unique string generated by the client, and used to identify the A unique string generated by the client, and used to identify the
validation attempt. It must be a string consisting of the characters validation attempt. It must be a string consisting of the characters
``[0-9a-zA-Z.=_-]``. Its length must not exceed 255 characters and it `[0-9a-zA-Z.=_-]`. Its length must not exceed 255 characters and it
must not be empty. must not be empty.
example: "monkeys_are_GREAT" example: "monkeys_are_GREAT"
email: email:
@ -33,9 +33,9 @@ properties:
send_attempt: send_attempt:
type: integer type: integer
description: |- description: |-
The server will only send an email if the ``send_attempt`` The server will only send an email if the `send_attempt`
is a number greater than the most recent one which it has seen, is a number greater than the most recent one which it has seen,
scoped to that ``email`` + ``client_secret`` pair. This is to scoped to that `email` + `client_secret` pair. This is to
avoid repeatedly sending the same email in the case of request avoid repeatedly sending the same email in the case of request
retries between the POSTing user and the identity server. retries between the POSTing user and the identity server.
The client should increment this value if they desire a new The client should increment this value if they desire a new

@ -24,14 +24,14 @@ properties:
description: | description: |
A unique string generated by the client, and used to identify the A unique string generated by the client, and used to identify the
validation attempt. It must be a string consisting of the characters validation attempt. It must be a string consisting of the characters
``[0-9a-zA-Z.=_-]``. Its length must not exceed 255 characters and it `[0-9a-zA-Z.=_-]`. Its length must not exceed 255 characters and it
must not be empty. must not be empty.
example: "monkeys_are_GREAT" example: "monkeys_are_GREAT"
country: country:
type: string type: string
description: |- description: |-
The two-letter uppercase ISO-3166-1 alpha-2 country code that the The two-letter uppercase ISO-3166-1 alpha-2 country code that the
number in ``phone_number`` should be parsed as if it were dialled from. number in `phone_number` should be parsed as if it were dialled from.
example: "GB" example: "GB"
phone_number: phone_number:
type: string type: string
@ -40,9 +40,9 @@ properties:
send_attempt: send_attempt:
type: integer type: integer
description: |- description: |-
The server will only send an SMS if the ``send_attempt`` is a The server will only send an SMS if the `send_attempt` is a
number greater than the most recent one which it has seen, number greater than the most recent one which it has seen,
scoped to that ``country`` + ``phone_number`` + ``client_secret`` scoped to that `country` + `phone_number` + `client_secret`
triple. This is to avoid repeatedly sending the same SMS in triple. This is to avoid repeatedly sending the same SMS in
the case of request retries between the POSTing user and the the case of request retries between the POSTing user and the
identity server. The client should increment this value if identity server. The client should increment this value if

@ -13,6 +13,6 @@
# limitations under the License. # limitations under the License.
accessToken: accessToken:
type: apiKey type: apiKey
description: The access_token returned by a call to ``/register``. description: The access_token returned by a call to `/register`.
name: access_token name: access_token
in: query in: query

@ -18,7 +18,7 @@ properties:
description: | description: |
The session ID. Session IDs are opaque strings generated by the identity The session ID. Session IDs are opaque strings generated by the identity
server. They must consist entirely of the characters server. They must consist entirely of the characters
``[0-9a-zA-Z.=_-]``. Their length must not exceed 255 characters and they `[0-9a-zA-Z.=_-]`. Their length must not exceed 255 characters and they
must not be empty. must not be empty.
example: "123abc" example: "123abc"
required: ['sid'] required: ['sid']

@ -37,13 +37,13 @@ paths:
Note that homeservers offer APIs that proxy this API, adding Note that homeservers offer APIs that proxy this API, adding
additional behaviour on top, for example, additional behaviour on top, for example,
``/register/email/requestToken`` is designed specifically for use when `/register/email/requestToken` is designed specifically for use when
registering an account and therefore will inform the user if the email registering an account and therefore will inform the user if the email
address given is already registered on the server. address given is already registered on the server.
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: emailRequestToken operationId: emailRequestToken
deprecated: true deprecated: true
@ -61,8 +61,8 @@ paths:
description: | description: |
An error ocurred. Some possible errors are: An error ocurred. Some possible errors are:
- ``M_INVALID_EMAIL``: The email address provided was invalid. - `M_INVALID_EMAIL`: The email address provided was invalid.
- ``M_EMAIL_SEND_ERROR``: The validation email could not be sent. - `M_EMAIL_SEND_ERROR`: The validation email could not be sent.
examples: examples:
application/json: { application/json: {
"errcode": "M_INVALID_EMAIL", "errcode": "M_INVALID_EMAIL",
@ -77,10 +77,10 @@ paths:
Validate ownership of an email address. Validate ownership of an email address.
If the three parameters are consistent with a set generated by a If the three parameters are consistent with a set generated by a
``requestToken`` call, ownership of the email address is considered to `requestToken` call, ownership of the email address is considered to
have been validated. This does not publish any information publicly, or have been validated. This does not publish any information publicly, or
associate the email address with any Matrix user ID. Specifically, associate the email address with any Matrix user ID. Specifically,
calls to ``/lookup`` will not show a binding. calls to `/lookup` will not show a binding.
The identity server is free to match the token case-insensitively, or The identity server is free to match the token case-insensitively, or
carry out other mapping operations such as unicode carry out other mapping operations such as unicode
@ -90,7 +90,7 @@ paths:
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: emailSubmitTokenPost operationId: emailSubmitTokenPost
deprecated: true deprecated: true
@ -107,13 +107,13 @@ paths:
properties: properties:
sid: sid:
type: string type: string
description: The session ID, generated by the ``requestToken`` call. description: The session ID, generated by the `requestToken` call.
client_secret: client_secret:
type: string type: string
description: The client secret that was supplied to the ``requestToken`` call. description: The client secret that was supplied to the `requestToken` call.
token: token:
type: string type: string
description: The token generated by the ``requestToken`` call and emailed to the user. description: The token generated by the `requestToken` call and emailed to the user.
required: ["sid", "client_secret", "token"] required: ["sid", "client_secret", "token"]
responses: responses:
200: 200:
@ -136,10 +136,10 @@ paths:
Validate ownership of an email address. Validate ownership of an email address.
If the three parameters are consistent with a set generated by a If the three parameters are consistent with a set generated by a
``requestToken`` call, ownership of the email address is considered to `requestToken` call, ownership of the email address is considered to
have been validated. This does not publish any information publicly, or have been validated. This does not publish any information publicly, or
associate the email address with any Matrix user ID. Specifically, associate the email address with any Matrix user ID. Specifically,
calls to ``/lookup`` will not show a binding. calls to `/lookup` will not show a binding.
Note that, in contrast with the POST version, this endpoint will be Note that, in contrast with the POST version, this endpoint will be
used by end-users, and so the response should be human-readable. used by end-users, and so the response should be human-readable.
@ -150,28 +150,28 @@ paths:
type: string type: string
name: sid name: sid
required: true required: true
description: The session ID, generated by the ``requestToken`` call. description: The session ID, generated by the `requestToken` call.
x-example: 1234 x-example: 1234
- in: query - in: query
type: string type: string
name: client_secret name: client_secret
required: true required: true
description: The client secret that was supplied to the ``requestToken`` call. description: The client secret that was supplied to the `requestToken` call.
x-example: monkeys_are_GREAT x-example: monkeys_are_GREAT
- in: query - in: query
type: string type: string
name: token name: token
required: true required: true
description: The token generated by the ``requestToken`` call and emailed to the user. description: The token generated by the `requestToken` call and emailed to the user.
x-example: atoken x-example: atoken
responses: responses:
200: 200:
description: Email address is validated. description: Email address is validated.
"3xx": "3xx":
description: |- description: |-
Email address is validated, and the ``next_link`` parameter was Email address is validated, and the `next_link` parameter was
provided to the ``requestToken`` call. The user must be redirected provided to the `requestToken` call. The user must be redirected
to the URL provided by the ``next_link`` parameter. to the URL provided by the `next_link` parameter.
"4xx": "4xx":
description: description:
Validation failed. Validation failed.

@ -30,8 +30,8 @@ paths:
description: |- description: |-
Sign invitation details. Sign invitation details.
The identity server will look up ``token`` which was stored in a call The identity server will look up `token` which was stored in a call
to ``store-invite``, and fetch the sender of the invite. to `store-invite`, and fetch the sender of the invite.
operationId: blindlySignStuff operationId: blindlySignStuff
deprecated: true deprecated: true
parameters: parameters:
@ -50,7 +50,7 @@ paths:
description: The Matrix user ID of the user accepting the invitation. description: The Matrix user ID of the user accepting the invitation.
token: token:
type: string type: string
description: The token from the call to ``store-invite``. description: The token from the call to `store-invite`.
private_key: private_key:
type: string type: string
description: The private key, encoded as `Unpadded base64`_. description: The private key, encoded as `Unpadded base64`_.

@ -131,8 +131,8 @@ paths:
- type: string - type: string
- type: string - type: string
description: |- description: |-
An array of arrays containing the `3PID Types`_ with the ``medium`` An array of arrays containing the `3PID Types`_ with the `medium`
in first position and the ``address`` in second position. in first position and the `address` in second position.
required: required:
- "threepids" - "threepids"
responses: responses:
@ -164,8 +164,8 @@ paths:
- type: string - type: string
- type: string - type: string
description: |- description: |-
An array of array containing the `3PID Types`_ with the ``medium`` An array of array containing the `3PID Types`_ with the `medium`
in first position, the ``address`` in second position and Matrix user in first position, the `address` in second position and Matrix user
ID in third position. ID in third position.
required: required:
- "threepids" - "threepids"

@ -37,13 +37,13 @@ paths:
Note that homeservers offer APIs that proxy this API, adding Note that homeservers offer APIs that proxy this API, adding
additional behaviour on top, for example, additional behaviour on top, for example,
``/register/msisdn/requestToken`` is designed specifically for use when `/register/msisdn/requestToken` is designed specifically for use when
registering an account and therefore will inform the user if the phone registering an account and therefore will inform the user if the phone
number given is already registered on the server. number given is already registered on the server.
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: msisdnRequestToken operationId: msisdnRequestToken
deprecated: true deprecated: true
@ -61,9 +61,9 @@ paths:
description: | description: |
An error ocurred. Some possible errors are: An error ocurred. Some possible errors are:
- ``M_INVALID_ADDRESS``: The phone number provided was invalid. - `M_INVALID_ADDRESS`: The phone number provided was invalid.
- ``M_SEND_ERROR``: The validation SMS could not be sent. - `M_SEND_ERROR`: The validation SMS could not be sent.
- ``M_DESTINATION_REJECTED``: The identity server cannot deliver an - `M_DESTINATION_REJECTED`: The identity server cannot deliver an
SMS to the provided country or region. SMS to the provided country or region.
examples: examples:
application/json: { application/json: {
@ -79,10 +79,10 @@ paths:
Validate ownership of a phone number. Validate ownership of a phone number.
If the three parameters are consistent with a set generated by a If the three parameters are consistent with a set generated by a
``requestToken`` call, ownership of the phone number is considered to `requestToken` call, ownership of the phone number is considered to
have been validated. This does not publish any information publicly, or have been validated. This does not publish any information publicly, or
associate the phone number address with any Matrix user associate the phone number address with any Matrix user
ID. Specifically, calls to ``/lookup`` will not show a binding. ID. Specifically, calls to `/lookup` will not show a binding.
The identity server is free to match the token case-insensitively, or The identity server is free to match the token case-insensitively, or
carry out other mapping operations such as unicode carry out other mapping operations such as unicode
@ -92,7 +92,7 @@ paths:
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: msisdnSubmitTokenPost operationId: msisdnSubmitTokenPost
deprecated: true deprecated: true
@ -109,13 +109,13 @@ paths:
properties: properties:
sid: sid:
type: string type: string
description: The session ID, generated by the ``requestToken`` call. description: The session ID, generated by the `requestToken` call.
client_secret: client_secret:
type: string type: string
description: The client secret that was supplied to the ``requestToken`` call. description: The client secret that was supplied to the `requestToken` call.
token: token:
type: string type: string
description: The token generated by the ``requestToken`` call and sent to the user. description: The token generated by the `requestToken` call and sent to the user.
required: ["sid", "client_secret", "token"] required: ["sid", "client_secret", "token"]
responses: responses:
200: 200:
@ -138,10 +138,10 @@ paths:
Validate ownership of a phone number. Validate ownership of a phone number.
If the three parameters are consistent with a set generated by a If the three parameters are consistent with a set generated by a
``requestToken`` call, ownership of the phone number address is `requestToken` call, ownership of the phone number address is
considered to have been validated. This does not publish any considered to have been validated. This does not publish any
information publicly, or associate the phone number with any Matrix information publicly, or associate the phone number with any Matrix
user ID. Specifically, calls to ``/lookup`` will not show a binding. user ID. Specifically, calls to `/lookup` will not show a binding.
Note that, in contrast with the POST version, this endpoint will be Note that, in contrast with the POST version, this endpoint will be
used by end-users, and so the response should be human-readable. used by end-users, and so the response should be human-readable.
@ -152,28 +152,28 @@ paths:
type: string type: string
name: sid name: sid
required: true required: true
description: The session ID, generated by the ``requestToken`` call. description: The session ID, generated by the `requestToken` call.
x-example: 1234 x-example: 1234
- in: query - in: query
type: string type: string
name: client_secret name: client_secret
required: true required: true
description: The client secret that was supplied to the ``requestToken`` call. description: The client secret that was supplied to the `requestToken` call.
x-example: monkeys_are_GREAT x-example: monkeys_are_GREAT
- in: query - in: query
type: string type: string
name: token name: token
required: true required: true
description: The token generated by the ``requestToken`` call and sent to the user. description: The token generated by the `requestToken` call and sent to the user.
x-example: atoken x-example: atoken
responses: responses:
200: 200:
description: Phone number is validated. description: Phone number is validated.
"3xx": "3xx":
description: |- description: |-
Phone number address is validated, and the ``next_link`` parameter Phone number address is validated, and the `next_link` parameter
was provided to the ``requestToken`` call. The user must be was provided to the `requestToken` call. The user must be
redirected to the URL provided by the ``next_link`` parameter. redirected to the URL provided by the `next_link` parameter.
"4xx": "4xx":
description: description:
Validation failed. Validation failed.

@ -37,23 +37,23 @@ paths:
The service will generate a random token and an ephemeral key used for The service will generate a random token and an ephemeral key used for
accepting the invite. accepting the invite.
The service also generates a ``display_name`` for the inviter, which is The service also generates a `display_name` for the inviter, which is
a redacted version of ``address`` which does not leak the full contents a redacted version of `address` which does not leak the full contents
of the ``address``. of the `address`.
The service records persistently all of the above information. The service records persistently all of the above information.
It also generates an email containing all of this data, sent to the It also generates an email containing all of this data, sent to the
``address`` parameter, notifying them of the invitation. `address` parameter, notifying them of the invitation.
Also, the generated ephemeral public key will be listed as valid on Also, the generated ephemeral public key will be listed as valid on
requests to ``/_matrix/identity/api/v1/pubkey/ephemeral/isvalid``. requests to `/_matrix/identity/api/v1/pubkey/ephemeral/isvalid`.
Currently, invites may only be issued for 3pids of the ``email`` medium. Currently, invites may only be issued for 3pids of the `email` medium.
Optional fields in the request should be populated to the best of the Optional fields in the request should be populated to the best of the
server's ability. Identity servers may use these variables when notifying server's ability. Identity servers may use these variables when notifying
the ``address`` of the pending invite for display purposes. the `address` of the pending invite for display purposes.
operationId: storeInvite operationId: storeInvite
deprecated: true deprecated: true
parameters: parameters:
@ -64,7 +64,7 @@ paths:
properties: properties:
medium: medium:
type: string type: string
description: The literal string ``email``. description: The literal string `email`.
example: "email" example: "email"
address: address:
type: string type: string
@ -82,26 +82,26 @@ paths:
type: string type: string
description: |- description: |-
The Matrix room alias for the room to which the user is The Matrix room alias for the room to which the user is
invited. This should be retrieved from the ``m.room.canonical_alias`` invited. This should be retrieved from the `m.room.canonical_alias`
state event. state event.
example: "#somewhere:exmaple.org" example: "#somewhere:exmaple.org"
room_avatar_url: room_avatar_url:
type: string type: string
description: |- description: |-
The Content URI for the room to which the user is invited. This should The Content URI for the room to which the user is invited. This should
be retrieved from the ``m.room.avatar`` state event. be retrieved from the `m.room.avatar` state event.
example: "mxc://example.org/s0meM3dia" example: "mxc://example.org/s0meM3dia"
room_join_rules: room_join_rules:
type: string type: string
description: |- description: |-
The ``join_rule`` for the room to which the user is invited. This should The `join_rule` for the room to which the user is invited. This should
be retrieved from the ``m.room.join_rules`` state event. be retrieved from the `m.room.join_rules` state event.
example: "public" example: "public"
room_name: room_name:
type: string type: string
description: |- description: |-
The name of the room to which the user is invited. This should be retrieved The name of the room to which the user is invited. This should be retrieved
from the ``m.room.name`` state event. from the `m.room.name` state event.
example: "Bob's Emporium of Messages" example: "Bob's Emporium of Messages"
sender_display_name: sender_display_name:
type: string type: string
@ -122,7 +122,7 @@ paths:
type: string type: string
description: | description: |
The generated token. Must be a string consisting of the The generated token. Must be a string consisting of the
characters ``[0-9a-zA-Z.=_-]``. Its length must not exceed characters `[0-9a-zA-Z.=_-]`. Its length must not exceed
255 characters and it must not be empty. 255 characters and it must not be empty.
public_keys: public_keys:
type: array type: array
@ -149,8 +149,8 @@ paths:
An error has occured. An error has occured.
If the 3pid is already bound to a Matrix user ID, the error code If the 3pid is already bound to a Matrix user ID, the error code
will be ``M_THREEPID_IN_USE``. If the medium is unsupported, the will be `M_THREEPID_IN_USE`. If the medium is unsupported, the
error code will be ``M_UNRECOGNIZED``. error code will be `M_UNRECOGNIZED`.
examples: examples:
application/json: { application/json: {
"errcode": "M_THREEPID_IN_USE", "errcode": "M_THREEPID_IN_USE",

@ -39,13 +39,13 @@ paths:
- in: query - in: query
type: string type: string
name: sid name: sid
description: The Session ID generated by the ``requestToken`` call. description: The Session ID generated by the `requestToken` call.
required: true required: true
x-example: 1234 x-example: 1234
- in: query - in: query
type: string type: string
name: client_secret name: client_secret
description: The client secret passed to the ``requestToken`` call. description: The client secret passed to the `requestToken` call.
required: true required: true
x-example: monkeys_are_GREAT x-example: monkeys_are_GREAT
responses: responses:
@ -76,9 +76,9 @@ paths:
description: |- description: |-
The session has not been validated. The session has not been validated.
If the session has not been validated, then ``errcode`` will be If the session has not been validated, then `errcode` will be
``M_SESSION_NOT_VALIDATED``. If the session has timed out, then `M_SESSION_NOT_VALIDATED`. If the session has timed out, then
``errcode`` will be ``M_SESSION_EXPIRED``. `errcode` will be `M_SESSION_EXPIRED`.
examples: examples:
application/json: { application/json: {
"errcode": "M_SESSION_NOT_VALIDATED", "errcode": "M_SESSION_NOT_VALIDATED",
@ -98,7 +98,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",
@ -112,12 +112,12 @@ paths:
description: |- description: |-
Publish an association between a session and a Matrix user ID. Publish an association between a session and a Matrix user ID.
Future calls to ``/lookup`` for any of the session\'s 3pids will return Future calls to `/lookup` for any of the session\'s 3pids will return
this association. this association.
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: bindV2 operationId: bindV2
security: security:
@ -135,10 +135,10 @@ paths:
properties: properties:
sid: sid:
type: string type: string
description: The Session ID generated by the ``requestToken`` call. description: The Session ID generated by the `requestToken` call.
client_secret: client_secret:
type: string type: string
description: The client secret passed to the ``requestToken`` call. description: The client secret passed to the `requestToken` call.
mxid: mxid:
type: string type: string
description: The Matrix user ID to associate with the 3pids. description: The Matrix user ID to associate with the 3pids.
@ -200,9 +200,9 @@ paths:
description: |- description: |-
The association was not published. The association was not published.
If the session has not been validated, then ``errcode`` will be If the session has not been validated, then `errcode` will be
``M_SESSION_NOT_VALIDATED``. If the session has timed out, then `M_SESSION_NOT_VALIDATED`. If the session has timed out, then
``errcode`` will be ``M_SESSION_EXPIRED``. `errcode` will be `M_SESSION_EXPIRED`.
examples: examples:
application/json: { application/json: {
"errcode": "M_SESSION_NOT_VALIDATED", "errcode": "M_SESSION_NOT_VALIDATED",
@ -222,7 +222,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",
@ -236,15 +236,15 @@ paths:
description: |- description: |-
Remove an association between a session and a Matrix user ID. Remove an association between a session and a Matrix user ID.
Future calls to ``/lookup`` for any of the session's 3pids will not Future calls to `/lookup` for any of the session's 3pids will not
return the removed association. return the removed association.
The identity server should authenticate the request in one of two The identity server should authenticate the request in one of two
ways: ways:
1. The request is signed by the homeserver which controls the ``user_id``. 1. The request is signed by the homeserver which controls the `user_id`.
2. The request includes the ``sid`` and ``client_secret`` parameters, 2. The request includes the `sid` and `client_secret` parameters,
as per ``/3pid/bind``, which proves ownership of the 3PID. as per `/3pid/bind`, which proves ownership of the 3PID.
If this endpoint returns a JSON Matrix error, that error should be passed If this endpoint returns a JSON Matrix error, that error should be passed
through to the client requesting an unbind through a homeserver, if the through to the client requesting an unbind through a homeserver, if the
@ -269,10 +269,10 @@ paths:
properties: properties:
sid: sid:
type: string type: string
description: The Session ID generated by the ``requestToken`` call. description: The Session ID generated by the `requestToken` call.
client_secret: client_secret:
type: string type: string
description: The client secret passed to the ``requestToken`` call. description: The client secret passed to the `requestToken` call.
mxid: mxid:
type: string type: string
description: The Matrix user ID to remove from the 3pids. description: The Matrix user ID to remove from the 3pids.
@ -281,7 +281,7 @@ paths:
title: 3PID title: 3PID
description: |- description: |-
The 3PID to remove. Must match the 3PID used to generate the session The 3PID to remove. Must match the 3PID used to generate the session
if using ``sid`` and ``client_secret`` to authenticate this request. if using `sid` and `client_secret` to authenticate this request.
properties: properties:
medium: medium:
type: string type: string
@ -317,7 +317,7 @@ paths:
the chosen authentication method (such as blocking homeservers from the chosen authentication method (such as blocking homeservers from
unbinding identifiers). unbinding identifiers).
Another common error code is ``M_TERMS_NOT_SIGNED`` where the user Another common error code is `M_TERMS_NOT_SIGNED` where the user
needs to `agree to more terms`_ in order to continue. needs to `agree to more terms`_ in order to continue.
examples: examples:
application/json: { application/json: {

@ -32,7 +32,7 @@ paths:
description: |- description: |-
Exchanges an OpenID token from the homeserver for an access token to Exchanges an OpenID token from the homeserver for an access token to
access the identity server. The request body is the same as the values access the identity server. The request body is the same as the values
returned by ``/openid/request_token`` in the Client-Server API. returned by `/openid/request_token` in the Client-Server API.
operationId: registerAccount operationId: registerAccount
parameters: parameters:
- in: body - in: body
@ -83,7 +83,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",
@ -121,7 +121,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",

@ -40,13 +40,13 @@ paths:
Note that homeservers offer APIs that proxy this API, adding Note that homeservers offer APIs that proxy this API, adding
additional behaviour on top, for example, additional behaviour on top, for example,
``/register/email/requestToken`` is designed specifically for use when `/register/email/requestToken` is designed specifically for use when
registering an account and therefore will inform the user if the email registering an account and therefore will inform the user if the email
address given is already registered on the server. address given is already registered on the server.
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: emailRequestTokenV2 operationId: emailRequestTokenV2
security: security:
@ -65,8 +65,8 @@ paths:
description: | description: |
An error ocurred. Some possible errors are: An error ocurred. Some possible errors are:
- ``M_INVALID_EMAIL``: The email address provided was invalid. - `M_INVALID_EMAIL`: The email address provided was invalid.
- ``M_EMAIL_SEND_ERROR``: The validation email could not be sent. - `M_EMAIL_SEND_ERROR`: The validation email could not be sent.
examples: examples:
application/json: { application/json: {
"errcode": "M_INVALID_EMAIL", "errcode": "M_INVALID_EMAIL",
@ -77,7 +77,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",
@ -92,10 +92,10 @@ paths:
Validate ownership of an email address. Validate ownership of an email address.
If the three parameters are consistent with a set generated by a If the three parameters are consistent with a set generated by a
``requestToken`` call, ownership of the email address is considered to `requestToken` call, ownership of the email address is considered to
have been validated. This does not publish any information publicly, or have been validated. This does not publish any information publicly, or
associate the email address with any Matrix user ID. Specifically, associate the email address with any Matrix user ID. Specifically,
calls to ``/lookup`` will not show a binding. calls to `/lookup` will not show a binding.
The identity server is free to match the token case-insensitively, or The identity server is free to match the token case-insensitively, or
carry out other mapping operations such as unicode carry out other mapping operations such as unicode
@ -105,7 +105,7 @@ paths:
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: emailSubmitTokenPostV2 operationId: emailSubmitTokenPostV2
security: security:
@ -123,13 +123,13 @@ paths:
properties: properties:
sid: sid:
type: string type: string
description: The session ID, generated by the ``requestToken`` call. description: The session ID, generated by the `requestToken` call.
client_secret: client_secret:
type: string type: string
description: The client secret that was supplied to the ``requestToken`` call. description: The client secret that was supplied to the `requestToken` call.
token: token:
type: string type: string
description: The token generated by the ``requestToken`` call and emailed to the user. description: The token generated by the `requestToken` call and emailed to the user.
required: ["sid", "client_secret", "token"] required: ["sid", "client_secret", "token"]
responses: responses:
200: 200:
@ -149,7 +149,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",
@ -163,10 +163,10 @@ paths:
Validate ownership of an email address. Validate ownership of an email address.
If the three parameters are consistent with a set generated by a If the three parameters are consistent with a set generated by a
``requestToken`` call, ownership of the email address is considered to `requestToken` call, ownership of the email address is considered to
have been validated. This does not publish any information publicly, or have been validated. This does not publish any information publicly, or
associate the email address with any Matrix user ID. Specifically, associate the email address with any Matrix user ID. Specifically,
calls to ``/lookup`` will not show a binding. calls to `/lookup` will not show a binding.
Note that, in contrast with the POST version, this endpoint will be Note that, in contrast with the POST version, this endpoint will be
used by end-users, and so the response should be human-readable. used by end-users, and so the response should be human-readable.
@ -178,35 +178,35 @@ paths:
type: string type: string
name: sid name: sid
required: true required: true
description: The session ID, generated by the ``requestToken`` call. description: The session ID, generated by the `requestToken` call.
x-example: 1234 x-example: 1234
- in: query - in: query
type: string type: string
name: client_secret name: client_secret
required: true required: true
description: The client secret that was supplied to the ``requestToken`` call. description: The client secret that was supplied to the `requestToken` call.
x-example: monkeys_are_GREAT x-example: monkeys_are_GREAT
- in: query - in: query
type: string type: string
name: token name: token
required: true required: true
description: The token generated by the ``requestToken`` call and emailed to the user. description: The token generated by the `requestToken` call and emailed to the user.
x-example: atoken x-example: atoken
responses: responses:
200: 200:
description: Email address is validated. description: Email address is validated.
"3xx": "3xx":
description: |- description: |-
Email address is validated, and the ``next_link`` parameter was Email address is validated, and the `next_link` parameter was
provided to the ``requestToken`` call. The user must be redirected provided to the `requestToken` call. The user must be redirected
to the URL provided by the ``next_link`` parameter. to the URL provided by the `next_link` parameter.
"4xx": "4xx":
description: description:
Validation failed. Validation failed.
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",

@ -33,8 +33,8 @@ paths:
description: |- description: |-
Sign invitation details. Sign invitation details.
The identity server will look up ``token`` which was stored in a call The identity server will look up `token` which was stored in a call
to ``store-invite``, and fetch the sender of the invite. to `store-invite`, and fetch the sender of the invite.
operationId: blindlySignStuffV2 operationId: blindlySignStuffV2
security: security:
- accessToken: [] - accessToken: []
@ -54,7 +54,7 @@ paths:
description: The Matrix user ID of the user accepting the invitation. description: The Matrix user ID of the user accepting the invitation.
token: token:
type: string type: string
description: The token from the call to ``store-invite``. description: The token from the call to `store-invite`.
private_key: private_key:
type: string type: string
description: The private key, encoded as `Unpadded base64`_. description: The private key, encoded as `Unpadded base64`_.
@ -102,7 +102,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",

@ -55,7 +55,7 @@ paths:
type: string type: string
description: |- description: |-
The pepper the client MUST use in hashing identifiers, and MUST The pepper the client MUST use in hashing identifiers, and MUST
supply to the ``/lookup`` endpoint when performing lookups. supply to the `/lookup` endpoint when performing lookups.
Servers SHOULD rotate this string often. Servers SHOULD rotate this string often.
algorithms: algorithms:
@ -63,7 +63,7 @@ paths:
items: items:
type: string type: string
description: |- description: |-
The algorithms the server supports. Must contain at least ``sha256``. The algorithms the server supports. Must contain at least `sha256`.
required: ['lookup_pepper', 'algorithms'] required: ['lookup_pepper', 'algorithms']
"/lookup": "/lookup":
post: post:
@ -84,14 +84,14 @@ paths:
algorithm: algorithm:
type: string type: string
description: |- description: |-
The algorithm the client is using to encode the ``addresses``. This The algorithm the client is using to encode the `addresses`. This
should be one of the available options from ``/hash_details``. should be one of the available options from `/hash_details`.
example: "sha256" example: "sha256"
pepper: pepper:
type: string type: string
description: |- description: |-
The pepper from ``/hash_details``. This is required even when the The pepper from `/hash_details`. This is required even when the
``algorithm`` does not make use of it. `algorithm` does not make use of it.
example: "matrixrocks" example: "matrixrocks"
addresses: addresses:
type: array type: array
@ -99,7 +99,7 @@ paths:
type: string type: string
description: |- description: |-
The addresses to look up. The format of the entries here depend on The addresses to look up. The format of the entries here depend on
the ``algorithm`` used. Note that queries which have been incorrectly the `algorithm` used. Note that queries which have been incorrectly
hashed or formatted will lead to no matches. hashed or formatted will lead to no matches.
example: [ example: [
"4kenr7N9drpCJ4AfalmlGQVsOn3o2RHjkADUpXJWZUc", "4kenr7N9drpCJ4AfalmlGQVsOn3o2RHjkADUpXJWZUc",
@ -109,7 +109,7 @@ paths:
responses: responses:
200: 200:
description: description:
The associations for any matched ``addresses``. The associations for any matched `addresses`.
examples: examples:
application/json: { application/json: {
"mappings": { "mappings": {
@ -122,7 +122,7 @@ paths:
mappings: mappings:
type: object type: object
description: |- description: |-
Any applicable mappings of ``addresses`` to Matrix User IDs. Addresses Any applicable mappings of `addresses` to Matrix User IDs. Addresses
which do not have associations will not be included, which can make which do not have associations will not be included, which can make
this property be an empty object. this property be an empty object.
title: AssociatedMappings title: AssociatedMappings
@ -132,13 +132,13 @@ paths:
400: 400:
description: description:
The client's request was invalid in some way. One possible problem could The client's request was invalid in some way. One possible problem could
be the ``pepper`` being invalid after the server has rotated it - this is be the `pepper` being invalid after the server has rotated it - this is
presented with the ``M_INVALID_PEPPER`` error code. Clients SHOULD make presented with the `M_INVALID_PEPPER` error code. Clients SHOULD make
a call to ``/hash_details`` to get a new pepper in this scenario, being a call to `/hash_details` to get a new pepper in this scenario, being
careful to avoid retry loops. careful to avoid retry loops.
``M_INVALID_PARAM`` can also be returned to indicate the client supplied `M_INVALID_PARAM` can also be returned to indicate the client supplied
an ``algorithm`` that is unknown to the server. an `algorithm` that is unknown to the server.
examples: examples:
application/json: { application/json: {
"errcode": "M_INVALID_PEPPER", "errcode": "M_INVALID_PEPPER",

@ -40,13 +40,13 @@ paths:
Note that homeservers offer APIs that proxy this API, adding Note that homeservers offer APIs that proxy this API, adding
additional behaviour on top, for example, additional behaviour on top, for example,
``/register/msisdn/requestToken`` is designed specifically for use when `/register/msisdn/requestToken` is designed specifically for use when
registering an account and therefore will inform the user if the phone registering an account and therefore will inform the user if the phone
number given is already registered on the server. number given is already registered on the server.
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: msisdnRequestTokenV2 operationId: msisdnRequestTokenV2
security: security:
@ -65,9 +65,9 @@ paths:
description: | description: |
An error ocurred. Some possible errors are: An error ocurred. Some possible errors are:
- ``M_INVALID_ADDRESS``: The phone number provided was invalid. - `M_INVALID_ADDRESS`: The phone number provided was invalid.
- ``M_SEND_ERROR``: The validation SMS could not be sent. - `M_SEND_ERROR`: The validation SMS could not be sent.
- ``M_DESTINATION_REJECTED``: The identity server cannot deliver an - `M_DESTINATION_REJECTED`: The identity server cannot deliver an
SMS to the provided country or region. SMS to the provided country or region.
examples: examples:
application/json: { application/json: {
@ -79,7 +79,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",
@ -94,10 +94,10 @@ paths:
Validate ownership of a phone number. Validate ownership of a phone number.
If the three parameters are consistent with a set generated by a If the three parameters are consistent with a set generated by a
``requestToken`` call, ownership of the phone number is considered to `requestToken` call, ownership of the phone number is considered to
have been validated. This does not publish any information publicly, or have been validated. This does not publish any information publicly, or
associate the phone number address with any Matrix user associate the phone number address with any Matrix user
ID. Specifically, calls to ``/lookup`` will not show a binding. ID. Specifically, calls to `/lookup` will not show a binding.
The identity server is free to match the token case-insensitively, or The identity server is free to match the token case-insensitively, or
carry out other mapping operations such as unicode carry out other mapping operations such as unicode
@ -107,7 +107,7 @@ paths:
Note: for backwards compatibility with previous drafts of this Note: for backwards compatibility with previous drafts of this
specification, the parameters may also be specified as specification, the parameters may also be specified as
``application/x-form-www-urlencoded`` data. However, this usage is `application/x-form-www-urlencoded` data. However, this usage is
deprecated. deprecated.
operationId: msisdnSubmitTokenPostV2 operationId: msisdnSubmitTokenPostV2
security: security:
@ -125,13 +125,13 @@ paths:
properties: properties:
sid: sid:
type: string type: string
description: The session ID, generated by the ``requestToken`` call. description: The session ID, generated by the `requestToken` call.
client_secret: client_secret:
type: string type: string
description: The client secret that was supplied to the ``requestToken`` call. description: The client secret that was supplied to the `requestToken` call.
token: token:
type: string type: string
description: The token generated by the ``requestToken`` call and sent to the user. description: The token generated by the `requestToken` call and sent to the user.
required: ["sid", "client_secret", "token"] required: ["sid", "client_secret", "token"]
responses: responses:
200: 200:
@ -151,7 +151,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",
@ -165,10 +165,10 @@ paths:
Validate ownership of a phone number. Validate ownership of a phone number.
If the three parameters are consistent with a set generated by a If the three parameters are consistent with a set generated by a
``requestToken`` call, ownership of the phone number address is `requestToken` call, ownership of the phone number address is
considered to have been validated. This does not publish any considered to have been validated. This does not publish any
information publicly, or associate the phone number with any Matrix information publicly, or associate the phone number with any Matrix
user ID. Specifically, calls to ``/lookup`` will not show a binding. user ID. Specifically, calls to `/lookup` will not show a binding.
Note that, in contrast with the POST version, this endpoint will be Note that, in contrast with the POST version, this endpoint will be
used by end-users, and so the response should be human-readable. used by end-users, and so the response should be human-readable.
@ -180,35 +180,35 @@ paths:
type: string type: string
name: sid name: sid
required: true required: true
description: The session ID, generated by the ``requestToken`` call. description: The session ID, generated by the `requestToken` call.
x-example: 1234 x-example: 1234
- in: query - in: query
type: string type: string
name: client_secret name: client_secret
required: true required: true
description: The client secret that was supplied to the ``requestToken`` call. description: The client secret that was supplied to the `requestToken` call.
x-example: monkeys_are_GREAT x-example: monkeys_are_GREAT
- in: query - in: query
type: string type: string
name: token name: token
required: true required: true
description: The token generated by the ``requestToken`` call and sent to the user. description: The token generated by the `requestToken` call and sent to the user.
x-example: atoken x-example: atoken
responses: responses:
200: 200:
description: Phone number is validated. description: Phone number is validated.
"3xx": "3xx":
description: |- description: |-
Phone number address is validated, and the ``next_link`` parameter Phone number address is validated, and the `next_link` parameter
was provided to the ``requestToken`` call. The user must be was provided to the `requestToken` call. The user must be
redirected to the URL provided by the ``next_link`` parameter. redirected to the URL provided by the `next_link` parameter.
"4xx": "4xx":
description: description:
Validation failed. Validation failed.
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",

@ -40,23 +40,23 @@ paths:
The service will generate a random token and an ephemeral key used for The service will generate a random token and an ephemeral key used for
accepting the invite. accepting the invite.
The service also generates a ``display_name`` for the inviter, which is The service also generates a `display_name` for the inviter, which is
a redacted version of ``address`` which does not leak the full contents a redacted version of `address` which does not leak the full contents
of the ``address``. of the `address`.
The service records persistently all of the above information. The service records persistently all of the above information.
It also generates an email containing all of this data, sent to the It also generates an email containing all of this data, sent to the
``address`` parameter, notifying them of the invitation. `address` parameter, notifying them of the invitation.
Also, the generated ephemeral public key will be listed as valid on Also, the generated ephemeral public key will be listed as valid on
requests to ``/_matrix/identity/v2/pubkey/ephemeral/isvalid``. requests to `/_matrix/identity/v2/pubkey/ephemeral/isvalid`.
Currently, invites may only be issued for 3pids of the ``email`` medium. Currently, invites may only be issued for 3pids of the `email` medium.
Optional fields in the request should be populated to the best of the Optional fields in the request should be populated to the best of the
server's ability. Identity servers may use these variables when notifying server's ability. Identity servers may use these variables when notifying
the ``address`` of the pending invite for display purposes. the `address` of the pending invite for display purposes.
operationId: storeInviteV2 operationId: storeInviteV2
security: security:
- accessToken: [] - accessToken: []
@ -68,7 +68,7 @@ paths:
properties: properties:
medium: medium:
type: string type: string
description: The literal string ``email``. description: The literal string `email`.
example: "email" example: "email"
address: address:
type: string type: string
@ -86,26 +86,26 @@ paths:
type: string type: string
description: |- description: |-
The Matrix room alias for the room to which the user is The Matrix room alias for the room to which the user is
invited. This should be retrieved from the ``m.room.canonical_alias`` invited. This should be retrieved from the `m.room.canonical_alias`
state event. state event.
example: "#somewhere:exmaple.org" example: "#somewhere:exmaple.org"
room_avatar_url: room_avatar_url:
type: string type: string
description: |- description: |-
The Content URI for the room to which the user is invited. This should The Content URI for the room to which the user is invited. This should
be retrieved from the ``m.room.avatar`` state event. be retrieved from the `m.room.avatar` state event.
example: "mxc://example.org/s0meM3dia" example: "mxc://example.org/s0meM3dia"
room_join_rules: room_join_rules:
type: string type: string
description: |- description: |-
The ``join_rule`` for the room to which the user is invited. This should The `join_rule` for the room to which the user is invited. This should
be retrieved from the ``m.room.join_rules`` state event. be retrieved from the `m.room.join_rules` state event.
example: "public" example: "public"
room_name: room_name:
type: string type: string
description: |- description: |-
The name of the room to which the user is invited. This should be retrieved The name of the room to which the user is invited. This should be retrieved
from the ``m.room.name`` state event. from the `m.room.name` state event.
example: "Bob's Emporium of Messages" example: "Bob's Emporium of Messages"
sender_display_name: sender_display_name:
type: string type: string
@ -126,7 +126,7 @@ paths:
type: string type: string
description: | description: |
The generated token. Must be a string consisting of the The generated token. Must be a string consisting of the
characters ``[0-9a-zA-Z.=_-]``. Its length must not exceed characters `[0-9a-zA-Z.=_-]`. Its length must not exceed
255 characters and it must not be empty. 255 characters and it must not be empty.
public_keys: public_keys:
type: array type: array
@ -153,8 +153,8 @@ paths:
An error has occured. An error has occured.
If the 3pid is already bound to a Matrix user ID, the error code If the 3pid is already bound to a Matrix user ID, the error code
will be ``M_THREEPID_IN_USE``. If the medium is unsupported, the will be `M_THREEPID_IN_USE`. If the medium is unsupported, the
error code will be ``M_UNRECOGNIZED``. error code will be `M_UNRECOGNIZED`.
examples: examples:
application/json: { application/json: {
"errcode": "M_THREEPID_IN_USE", "errcode": "M_THREEPID_IN_USE",
@ -166,7 +166,7 @@ paths:
403: 403:
description: | description: |
The user must do something in order to use this endpoint. One example The user must do something in order to use this endpoint. One example
is an ``M_TERMS_NOT_SIGNED`` error where the user must `agree to more terms`_. is an `M_TERMS_NOT_SIGNED` error where the user must `agree to more terms`_.
examples: examples:
application/json: { application/json: {
"errcode": "M_TERMS_NOT_SIGNED", "errcode": "M_TERMS_NOT_SIGNED",

@ -106,7 +106,7 @@ paths:
all three criteria to avoid conflicts when the policy is updated all three criteria to avoid conflicts when the policy is updated
in the future: for example, if this was "https://example.org/terms.html" in the future: for example, if this was "https://example.org/terms.html"
then the server would be unable to update it because the client would then the server would be unable to update it because the client would
have already added that URL to the ``m.accepted_terms`` collection. have already added that URL to the `m.accepted_terms` collection.
required: ['name', 'url'] required: ['name', 'url']
required: ['policies'] required: ['policies']
post: post:
@ -121,7 +121,7 @@ paths:
to the user. Servers SHOULD consider acceptance of any one language's URL as to the user. Servers SHOULD consider acceptance of any one language's URL as
acceptance for all other languages of that policy. acceptance for all other languages of that policy.
The server should avoid returning ``M_TERMS_NOT_SIGNED`` because the client The server should avoid returning `M_TERMS_NOT_SIGNED` because the client
may not be accepting all terms at once. may not be accepting all terms at once.
operationId: agreeToTerms operationId: agreeToTerms
security: security:

@ -39,7 +39,7 @@ paths:
Notifications about a particular event will normally cause the user to be Notifications about a particular event will normally cause the user to be
alerted in some way. It is therefore necessary to perform duplicate alerted in some way. It is therefore necessary to perform duplicate
suppression for such notifications using the ``event_id`` field to avoid suppression for such notifications using the `event_id` field to avoid
retries of this HTTP API causing duplicate alerts. The operation of retries of this HTTP API causing duplicate alerts. The operation of
updating counts of unread notifications should be idempotent and updating counts of unread notifications should be idempotent and
therefore do not require duplicate suppression. therefore do not require duplicate suppression.
@ -111,7 +111,7 @@ paths:
type: type:
type: string type: string
description: |- description: |-
The type of the event as in the event's ``type`` field. The type of the event as in the event's `type` field.
sender: sender:
type: string type: string
description: |- description: |-
@ -131,13 +131,13 @@ paths:
type: boolean type: boolean
description: |- description: |-
This is true if the user receiving the notification is the This is true if the user receiving the notification is the
subject of a member event (i.e. the ``state_key`` of the subject of a member event (i.e. the `state_key` of the
member event is equal to the user's Matrix ID). member event is equal to the user's Matrix ID).
prio: prio:
type: string type: string
enum: ["high", "low"] enum: ["high", "low"]
description: |- description: |-
The priority of the notification. If omitted, ``high`` is The priority of the notification. If omitted, `high` is
assumed. This may be used by push gateways to deliver less assumed. This may be used by push gateways to deliver less
time-sensitive notifications in a way that will preserve time-sensitive notifications in a way that will preserve
battery power on mobile devices. battery power on mobile devices.
@ -145,7 +145,7 @@ paths:
type: object type: object
title: EventContent title: EventContent
description: |- description: |-
The ``content`` field from the event, if present. The pusher The `content` field from the event, if present. The pusher
may omit this if the event had no content or for any other may omit this if the event had no content or for any other
reason. reason.
counts: counts:
@ -178,10 +178,10 @@ paths:
app_id: app_id:
type: string type: string
description: |- description: |-
The ``app_id`` given when the pusher was created. The `app_id` given when the pusher was created.
pushkey: pushkey:
type: string type: string
description: The ``pushkey`` given when the pusher was created. description: The `pushkey` given when the pusher was created.
pushkey_ts: pushkey_ts:
type: integer type: integer
description: |- description: |-
@ -193,7 +193,7 @@ paths:
description: |- description: |-
A dictionary of additional pusher-specific data. For A dictionary of additional pusher-specific data. For
'http' pushers, this is the data dictionary passed in at 'http' pushers, this is the data dictionary passed in at
pusher creation minus the ``url`` key. pusher creation minus the `url` key.
tweaks: tweaks:
type: object type: object
title: Tweaks title: Tweaks

@ -32,8 +32,8 @@ paths:
summary: Retrieves the events which precede the given event summary: Retrieves the events which precede the given event
description: |- description: |-
Retrieves a sliding-window history of previous PDUs that occurred in the given room. Retrieves a sliding-window history of previous PDUs that occurred in the given room.
Starting from the PDU ID(s) given in the ``v`` argument, the PDUs given in ``v`` and Starting from the PDU ID(s) given in the `v` argument, the PDUs given in `v` and
the PDUs that preceded them are retrieved, up to the total number given by the ``limit``. the PDUs that preceded them are retrieved, up to the total number given by the `limit`.
operationId: backfillRoom operationId: backfillRoom
security: security:
- signedRequest: [] - signedRequest: []
@ -65,12 +65,12 @@ paths:
event(s), up to the given limit. event(s), up to the given limit.
**Note:** **Note:**
Though the PDU definitions require that ``prev_events`` and ``auth_events`` be limited Though the PDU definitions require that `prev_events` and `auth_events` be limited
in number, the response of backfill MUST NOT be validated on these specific restrictions. in number, the response of backfill MUST NOT be validated on these specific restrictions.
Due to historical reasons, it is possible that events which were previously accepted Due to historical reasons, it is possible that events which were previously accepted
would now be rejected by these limitations. The events should be rejected per usual by would now be rejected by these limitations. The events should be rejected per usual by
the ``/send``, ``/get_missing_events``, and remaining endpoints. the `/send`, `/get_missing_events`, and remaining endpoints.
schema: schema:
$ref: "definitions/unlimited_pdu_transaction.yaml" $ref: "definitions/unlimited_pdu_transaction.yaml"
"/get_missing_events/{roomId}": "/get_missing_events/{roomId}":
@ -78,8 +78,8 @@ paths:
summary: Retrieves events that the sender is missing summary: Retrieves events that the sender is missing
description: |- description: |-
Retrieves previous events that the sender is missing. This is done by doing a breadth-first Retrieves previous events that the sender is missing. This is done by doing a breadth-first
walk of the ``prev_events`` for the ``latest_events``, ignoring any events in ``earliest_events`` walk of the `prev_events` for the `latest_events`, ignoring any events in `earliest_events`
and stopping at the ``limit``. and stopping at the `limit`.
operationId: getMissingPreviousEvents operationId: getMissingPreviousEvents
security: security:
- signedRequest: [] - signedRequest: []
@ -107,7 +107,7 @@ paths:
type: array type: array
description: |- description: |-
The latest event IDs that the sender already has. These are skipped when retrieving The latest event IDs that the sender already has. These are skipped when retrieving
the previous events of ``latest_events``. the previous events of `latest_events`.
items: items:
type: string type: string
example: ["$missing_event:example.org"] example: ["$missing_event:example.org"]
@ -121,8 +121,8 @@ paths:
responses: responses:
200: 200:
description: |- description: |-
The previous events for ``latest_events``, excluding any ``earliest_events``, up to the The previous events for `latest_events`, excluding any `earliest_events`, up to the
provided ``limit``. provided `limit`.
schema: schema:
type: object type: object
properties: properties:

@ -32,7 +32,7 @@ allOf:
edu_type: edu_type:
type: enum type: enum
enum: ['m.device_list_update'] enum: ['m.device_list_update']
description: The string ``m.device_list_update``. description: The string `m.device_list_update`.
example: "m.device_list_update" example: "m.device_list_update"
content: content:
type: object type: object
@ -57,7 +57,7 @@ allOf:
type: integer type: integer
description: |- description: |-
An ID sent by the server for this update, unique for a given An ID sent by the server for this update, unique for a given
user_id. Used to identify any gaps in the sequence of ``m.device_list_update`` user_id. Used to identify any gaps in the sequence of `m.device_list_update`
EDUs broadcast by a server. EDUs broadcast by a server.
example: 6 example: 6
prev_id: prev_id:
@ -67,7 +67,7 @@ allOf:
which have not been referred to already in an EDU's prev_id field. If the which have not been referred to already in an EDU's prev_id field. If the
receiving server does not recognise any of the prev_ids, it means an EDU receiving server does not recognise any of the prev_ids, it means an EDU
has been lost and the server should query a snapshot of the device list has been lost and the server should query a snapshot of the device list
via ``/user/keys/query`` in order to correctly interpret future ``m.device_list_update`` via `/user/keys/query` in order to correctly interpret future `m.device_list_update`
EDUs. May be missing or empty for the first EDU in a sequence. EDUs. May be missing or empty for the first EDU in a sequence.
items: items:
type: integer type: integer

@ -25,7 +25,7 @@ allOf:
edu_type: edu_type:
type: enum type: enum
enum: ['m.direct_to_device'] enum: ['m.direct_to_device']
description: The string ``m.direct_to_device``. description: The string `m.direct_to_device`.
example: "m.direct_to_device" example: "m.direct_to_device"
content: content:
type: object type: object
@ -50,7 +50,7 @@ allOf:
description: |- description: |-
The contents of the messages to be sent. These are arranged in The contents of the messages to be sent. These are arranged in
a map of user IDs to a map of device IDs to message bodies. a map of user IDs to a map of device IDs to message bodies.
The device ID may also be ``*``, meaning all known devices for the user. The device ID may also be `*`, meaning all known devices for the user.
additionalProperties: additionalProperties:
type: object type: object
title: User Devices title: User Devices

@ -23,7 +23,7 @@ allOf:
edu_type: edu_type:
type: enum type: enum
enum: ['m.presence'] enum: ['m.presence']
description: The string ``m.presence`` description: The string `m.presence`
example: "m.presence" example: "m.presence"
content: content:
type: object type: object
@ -64,7 +64,7 @@ allOf:
description: |- description: |-
True if the user is likely to be interacting with their True if the user is likely to be interacting with their
client. This may be indicated by the user having a client. This may be indicated by the user having a
``last_active_ago`` within the last few minutes. Defaults `last_active_ago` within the last few minutes. Defaults
to false. to false.
example: true example: true
required: ['user_id', 'presence', 'last_active_ago'] required: ['user_id', 'presence', 'last_active_ago']

@ -26,7 +26,7 @@ allOf:
edu_type: edu_type:
type: enum type: enum
enum: ['m.receipt'] enum: ['m.receipt']
description: The string ``m.receipt`` description: The string `m.receipt`
example: "m.receipt" example: "m.receipt"
content: content:
type: object type: object

@ -24,7 +24,7 @@ allOf:
edu_type: edu_type:
type: enum type: enum
enum: ['m.signing_key_update'] enum: ['m.signing_key_update']
description: The string ``m.signing_update``. description: The string `m.signing_update`.
example: "m.signing_key_update" example: "m.signing_key_update"
content: content:
type: object type: object

@ -22,7 +22,7 @@ allOf:
edu_type: edu_type:
type: enum type: enum
enum: ['m.typing'] enum: ['m.typing']
description: The string ``m.typing`` description: The string `m.typing`
example: "m.typing" example: "m.typing"
content: content:
type: object type: object

@ -22,7 +22,7 @@ allOf:
sender: sender:
type: string type: string
description: |- description: |-
The matrix ID of the user who sent the original ``m.room.third_party_invite``. The matrix ID of the user who sent the original `m.room.third_party_invite`.
example: "@someone:example.org" example: "@someone:example.org"
origin: origin:
type: string type: string
@ -35,7 +35,7 @@ allOf:
example: 1234567890 example: 1234567890
type: type:
type: string type: string
description: The value ``m.room.member``. description: The value `m.room.member`.
example: "m.room.member" example: "m.room.member"
state_key: state_key:
type: string type: string
@ -46,12 +46,12 @@ allOf:
title: Membership Event Content title: Membership Event Content
description: |- description: |-
The content of the event, matching what is available in the The content of the event, matching what is available in the
`Client-Server API`_. Must include a ``membership`` of ``invite``. `Client-Server API`_. Must include a `membership` of `invite`.
example: {"membership": "invite"} example: {"membership": "invite"}
properties: properties:
membership: membership:
type: string type: string
description: The value ``invite``. description: The value `invite`.
example: "invite" example: "invite"
required: ['membership'] required: ['membership']
required: required:

@ -26,10 +26,10 @@ properties:
description: |- description: |-
Public keys of the homeserver for verifying digital signatures. Public keys of the homeserver for verifying digital signatures.
The object's key is the algorithm and version combined (``ed25519`` being the The object's key is the algorithm and version combined (`ed25519` being the
algorithm and ``abc123`` being the version in the example below). Together, algorithm and `abc123` being the version in the example below). Together,
this forms the Key ID. The version must have characters matching the regular this forms the Key ID. The version must have characters matching the regular
expression ``[a-zA-Z0-9_]``. expression `[a-zA-Z0-9_]`.
additionalProperties: additionalProperties:
type: object type: object
title: Verify Key title: Verify Key
@ -49,10 +49,10 @@ properties:
description: |- description: |-
The public keys that the server used to use and when it stopped using them. The public keys that the server used to use and when it stopped using them.
The object's key is the algorithm and version combined (``ed25519`` being the The object's key is the algorithm and version combined (`ed25519` being the
algorithm and ``0ldK3y`` being the version in the example below). Together, algorithm and `0ldK3y` being the version in the example below). Together,
this forms the Key ID. The version must have characters matching the regular this forms the Key ID. The version must have characters matching the regular
expression ``[a-zA-Z0-9_]``. expression `[a-zA-Z0-9_]`.
additionalProperties: additionalProperties:
type: object type: object
title: Old Verify Key title: Old Verify Key
@ -76,7 +76,7 @@ properties:
signatures: signatures:
type: object type: object
description: |- description: |-
Digital signatures for this object signed using the ``verify_keys``. Digital signatures for this object signed using the `verify_keys`.
The signature is calculated using the process described at `Signing The signature is calculated using the process described at `Signing
JSON`_. JSON`_.

@ -14,6 +14,6 @@
signedRequest: signedRequest:
type: apiKey type: apiKey
description: |- description: |-
The ``Authorization`` header defined in the `Authentication`_ section. The `Authorization` header defined in the `Authentication`_ section.
name: Authorization name: Authorization
in: header in: header

@ -20,7 +20,7 @@ properties:
origin: origin:
type: string type: string
description: |- description: |-
The ``server_name`` of the homeserver sending this transaction. The `server_name` of the homeserver sending this transaction.
example: "example.org" example: "example.org"
origin_server_ts: origin_server_ts:
type: integer type: integer

@ -27,7 +27,7 @@ properties:
example: "@someone:matrix.org" example: "@someone:matrix.org"
origin: origin:
type: string type: string
description: The ``server_name`` of the homeserver that created this event. description: The `server_name` of the homeserver that created this event.
example: "matrix.org" example: "matrix.org"
origin_server_ts: origin_server_ts:
type: integer type: integer
@ -42,7 +42,7 @@ properties:
type: string type: string
description: |- description: |-
If this key is present, the event is a state event, and it will replace previous events If this key is present, the event is a state event, and it will replace previous events
with the same ``type`` and ``state_key`` in the room state. with the same `type` and `state_key` in the room state.
example: "my_key" example: "my_key"
content: content:
type: object type: object
@ -77,7 +77,7 @@ properties:
depth: depth:
type: integer type: integer
description: |- description: |-
The maximum depth of the ``prev_events``, plus one. Must be less than the The maximum depth of the `prev_events`, plus one. Must be less than the
maximum value for an integer (2^63 - 1). If the room's depth is already at maximum value for an integer (2^63 - 1). If the room's depth is already at
the limit, the depth must be set to the limit. the limit, the depth must be set to the limit.
example: 12 example: 12
@ -117,7 +117,7 @@ properties:
type: object type: object
title: UnsignedData title: UnsignedData
description: |- description: |-
Additional data added by the origin server but not covered by the ``signatures``. More Additional data added by the origin server but not covered by the `signatures`. More
keys than those defined here may be used. keys than those defined here may be used.
example: {"key": "value"} example: {"key": "value"}
properties: properties:

@ -94,7 +94,7 @@ paths:
summary: Get all the state event IDs of a given room summary: Get all the state event IDs of a given room
description: |- description: |-
Retrieves a snapshot of a room's state at a given event, in the form of Retrieves a snapshot of a room's state at a given event, in the form of
event IDs. This performs the same function as calling ``/state/{roomId}``, event IDs. This performs the same function as calling `/state/{roomId}`,
however this returns just the event IDs rather than the full events. however this returns just the event IDs rather than the full events.
operationId: getRoomStateIds operationId: getRoomStateIds
security: security:

@ -36,8 +36,8 @@ paths:
room by the inviting homeserver. room by the inviting homeserver.
Servers should prefer to use the v2 API for invites instead of the v1 API. Servers Servers should prefer to use the v2 API for invites instead of the v1 API. Servers
which receive a v1 invite request must assume that the room version is either ``"1"`` which receive a v1 invite request must assume that the room version is either `"1"`
or ``"2"``. or `"2"`.
Note that events have a different format depending on the room version - check the Note that events have a different format depending on the room version - check the
`room version specification`_ for precise event formats. **The request and response `room version specification`_ for precise event formats. **The request and response
@ -113,7 +113,7 @@ paths:
maxItems: 2 maxItems: 2
items: items:
- type: integer - type: integer
description: The value ``200``. description: The value `200`.
example: 200 example: 200
- type: object - type: object
description: An object containing the signed invite event. description: An object containing the signed invite event.

@ -164,7 +164,7 @@ paths:
400: 400:
description: |- description: |-
The request is invalid or the room the server is attempting The request is invalid or the room the server is attempting
to join has a version that is not listed in the ``ver`` to join has a version that is not listed in the `ver`
parameters. parameters.
The error should be passed through to clients so that they The error should be passed through to clients so that they
@ -177,8 +177,8 @@ paths:
room_version: room_version:
type: string type: string
description: |- description: |-
The version of the room. Required if the ``errcode`` The version of the room. Required if the `errcode`
is ``M_INCOMPATIBLE_ROOM_VERSION``. is `M_INCOMPATIBLE_ROOM_VERSION`.
examples: examples:
application/json: { application/json: {
"errcode": "M_INCOMPATIBLE_ROOM_VERSION", "errcode": "M_INCOMPATIBLE_ROOM_VERSION",

@ -57,7 +57,7 @@ paths:
name: ver name: ver
description: |- description: |-
The room versions the sending server has support for. Defaults The room versions the sending server has support for. Defaults
to ``[1]``. to `[1]`.
x-example: ["1", "2"] x-example: ["1", "2"]
responses: responses:
200: 200:
@ -99,7 +99,7 @@ paths:
example: 1234567890 example: 1234567890
type: type:
type: string type: string
description: The value ``m.room.member``. description: The value `m.room.member`.
example: "m.room.member" example: "m.room.member"
state_key: state_key:
type: string type: string
@ -113,7 +113,7 @@ paths:
properties: properties:
membership: membership:
type: string type: string
description: The value ``join``. description: The value `join`.
example: "join" example: "join"
required: ['membership'] required: ['membership']
required: required:
@ -141,7 +141,7 @@ paths:
400: 400:
description: |- description: |-
The request is invalid or the room the server is attempting The request is invalid or the room the server is attempting
to join has a version that is not listed in the ``ver`` to join has a version that is not listed in the `ver`
parameters. parameters.
The error should be passed through to clients so that they The error should be passed through to clients so that they
@ -154,8 +154,8 @@ paths:
room_version: room_version:
type: string type: string
description: |- description: |-
The version of the room. Required if the ``errcode`` The version of the room. Required if the `errcode`
is ``M_INCOMPATIBLE_ROOM_VERSION``. is `M_INCOMPATIBLE_ROOM_VERSION`.
examples: examples:
application/json: { application/json: {
"errcode": "M_INCOMPATIBLE_ROOM_VERSION", "errcode": "M_INCOMPATIBLE_ROOM_VERSION",
@ -177,7 +177,7 @@ paths:
summary: Submit a signed join event to a resident server summary: Submit a signed join event to a resident server
description: |- description: |-
**Note:** **Note:**
Servers should instead prefer to use the v2 ``/send_join`` endpoint. Servers should instead prefer to use the v2 `/send_join` endpoint.
Submits a signed join event to the resident server for it Submits a signed join event to the resident server for it
to accept it into the room's graph. Note that events have to accept it into the room's graph. Note that events have
@ -224,7 +224,7 @@ paths:
example: 1234567890 example: 1234567890
type: type:
type: string type: string
description: The value ``m.room.member``. description: The value `m.room.member`.
example: "m.room.member" example: "m.room.member"
state_key: state_key:
type: string type: string
@ -238,7 +238,7 @@ paths:
properties: properties:
membership: membership:
type: string type: string
description: The value ``join``. description: The value `join`.
example: "join" example: "join"
required: ['membership'] required: ['membership']
required: required:
@ -269,7 +269,7 @@ paths:
maxItems: 2 maxItems: 2
items: items:
- type: integer - type: integer
description: The value ``200``. description: The value `200`.
example: 200 example: 200
- $ref: "./definitions/send_join_response.yaml" - $ref: "./definitions/send_join_response.yaml"
examples: examples:

@ -87,7 +87,7 @@ paths:
example: 1234567890 example: 1234567890
type: type:
type: string type: string
description: The value ``m.room.member``. description: The value `m.room.member`.
example: "m.room.member" example: "m.room.member"
state_key: state_key:
type: string type: string
@ -101,7 +101,7 @@ paths:
properties: properties:
membership: membership:
type: string type: string
description: The value ``join``. description: The value `join`.
example: "join" example: "join"
required: ['membership'] required: ['membership']
required: required:

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save