remove trailing whitespace
This commit is contained in:
parent
969cc408f1
commit
7e244e8a0d
4 changed files with 92 additions and 92 deletions
|
@ -12,7 +12,7 @@ WARNING
|
||||||
|
|
||||||
We're publishing it at this point because it's complete enough to be more than
|
We're publishing it at this point because it's complete enough to be more than
|
||||||
useful and provide a canonical reference to how Matrix is evolving. Our end
|
useful and provide a canonical reference to how Matrix is evolving. Our end
|
||||||
goal is to mirror WHATWG's `Living Standard <http://wiki.whatwg.org/wiki/FAQ#What_does_.22Living_Standard.22_mean.3F>`_
|
goal is to mirror WHATWG's `Living Standard <http://wiki.whatwg.org/wiki/FAQ#What_does_.22Living_Standard.22_mean.3F>`_
|
||||||
approach except right now Matrix is more in the process of being born than actually being
|
approach except right now Matrix is more in the process of being born than actually being
|
||||||
living!
|
living!
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ domain, it is simply for globally namespacing room IDs. The room does NOT
|
||||||
reside on the domain specified. Room IDs are not meant to be human readable.
|
reside on the domain specified. Room IDs are not meant to be human readable.
|
||||||
They ARE case-sensitive.
|
They ARE case-sensitive.
|
||||||
|
|
||||||
The following diagram shows an ``m.room.message`` event being sent in the room
|
The following diagram shows an ``m.room.message`` event being sent in the room
|
||||||
``!qporfwt:matrix.org``::
|
``!qporfwt:matrix.org``::
|
||||||
|
|
||||||
{ @alice:matrix.org } { @bob:domain.com }
|
{ @alice:matrix.org } { @bob:domain.com }
|
||||||
|
@ -207,7 +207,7 @@ that are in the room that can be used to join via.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
GET
|
GET
|
||||||
#matrix:domain.com !aaabaa:matrix.org
|
#matrix:domain.com !aaabaa:matrix.org
|
||||||
| ^
|
| ^
|
||||||
| |
|
| |
|
||||||
|
@ -218,7 +218,7 @@ that are in the room that can be used to join via.
|
||||||
| #golf >> !wfeiofh:sport.com |
|
| #golf >> !wfeiofh:sport.com |
|
||||||
| #bike >> !4rguxf:matrix.org |
|
| #bike >> !4rguxf:matrix.org |
|
||||||
|________________________________|
|
|________________________________|
|
||||||
|
|
||||||
Identity
|
Identity
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|
||||||
|
@ -456,7 +456,7 @@ State Resolution
|
||||||
++++++++++++++++
|
++++++++++++++++
|
||||||
A given state section may have multiple state events associated with it in a
|
A given state section may have multiple state events associated with it in a
|
||||||
given graph. A consistent method of selecting which state event takes
|
given graph. A consistent method of selecting which state event takes
|
||||||
precedence is therefore required.
|
precedence is therefore required.
|
||||||
|
|
||||||
This is done by taking the latest state events, i.e. the set of events that are
|
This is done by taking the latest state events, i.e. the set of events that are
|
||||||
either incomparable or after every other event in the graph. A state resolution
|
either incomparable or after every other event in the graph. A state resolution
|
||||||
|
@ -530,7 +530,7 @@ codes should have their namespace first in ALL CAPS, followed by a single _.
|
||||||
For example, if there was a custom namespace ``com.mydomain.here``, and a
|
For example, if there was a custom namespace ``com.mydomain.here``, and a
|
||||||
``FORBIDDEN`` code, the error code should look like
|
``FORBIDDEN`` code, the error code should look like
|
||||||
``COM.MYDOMAIN.HERE_FORBIDDEN``. There may be additional keys depending on the
|
``COM.MYDOMAIN.HERE_FORBIDDEN``. There may be additional keys depending on the
|
||||||
error, but the keys ``error`` and ``errcode`` MUST always be present.
|
error, but the keys ``error`` and ``errcode`` MUST always be present.
|
||||||
|
|
||||||
Some standard error codes are below:
|
Some standard error codes are below:
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ State events have the additional fields:
|
||||||
Description:
|
Description:
|
||||||
Optional. Contains the previous ``content`` for this event. If there is no previous content, this
|
Optional. Contains the previous ``content`` for this event. If there is no previous content, this
|
||||||
key will be missing.
|
key will be missing.
|
||||||
|
|
||||||
.. TODO-spec
|
.. TODO-spec
|
||||||
How do "age" and "ts" fit in to all this? Which do we expose?
|
How do "age" and "ts" fit in to all this? Which do we expose?
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ prefixed with ``m.``
|
||||||
``m.room.name``
|
``m.room.name``
|
||||||
Summary:
|
Summary:
|
||||||
Set the human-readable name for the room.
|
Set the human-readable name for the room.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "name" : "string" }``
|
``{ "name" : "string" }``
|
||||||
|
@ -112,7 +112,7 @@ prefixed with ``m.``
|
||||||
``m.room.topic``
|
``m.room.topic``
|
||||||
Summary:
|
Summary:
|
||||||
Set a topic for the room.
|
Set a topic for the room.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "topic" : "string" }``
|
``{ "topic" : "string" }``
|
||||||
|
@ -128,7 +128,7 @@ prefixed with ``m.``
|
||||||
``m.room.member``
|
``m.room.member``
|
||||||
Summary:
|
Summary:
|
||||||
The current membership state of a user in the room.
|
The current membership state of a user in the room.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "membership" : "enum[ invite|join|leave|ban ]" }``
|
``{ "membership" : "enum[ invite|join|leave|ban ]" }``
|
||||||
|
@ -145,20 +145,20 @@ prefixed with ``m.``
|
||||||
``m.room.create``
|
``m.room.create``
|
||||||
Summary:
|
Summary:
|
||||||
The first event in the room.
|
The first event in the room.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "creator": "string"}``
|
``{ "creator": "string"}``
|
||||||
Example:
|
Example:
|
||||||
``{ "creator": "@user:example.com" }``
|
``{ "creator": "@user:example.com" }``
|
||||||
Description:
|
Description:
|
||||||
This is the first event in a room and cannot be changed. It acts as the
|
This is the first event in a room and cannot be changed. It acts as the
|
||||||
root of all other events.
|
root of all other events.
|
||||||
|
|
||||||
``m.room.join_rules``
|
``m.room.join_rules``
|
||||||
Summary:
|
Summary:
|
||||||
Descripes how/if people are allowed to join.
|
Descripes how/if people are allowed to join.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "join_rule": "enum [ public|knock|invite|private ]" }``
|
``{ "join_rule": "enum [ public|knock|invite|private ]" }``
|
||||||
|
@ -166,55 +166,55 @@ prefixed with ``m.``
|
||||||
``{ "join_rule": "public" }``
|
``{ "join_rule": "public" }``
|
||||||
Description:
|
Description:
|
||||||
TODO-doc : Use docs/models/rooms.rst
|
TODO-doc : Use docs/models/rooms.rst
|
||||||
|
|
||||||
``m.room.power_levels``
|
``m.room.power_levels``
|
||||||
Summary:
|
Summary:
|
||||||
Defines the power levels of users in the room.
|
Defines the power levels of users in the room.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "<user_id>": <int>, ..., "default": <int>}``
|
``{ "<user_id>": <int>, ..., "default": <int>}``
|
||||||
Example:
|
Example:
|
||||||
``{ "@user:example.com": 5, "@user2:example.com": 10, "default": 0 }``
|
``{ "@user:example.com": 5, "@user2:example.com": 10, "default": 0 }``
|
||||||
Description:
|
Description:
|
||||||
If a user is in the list, then they have the associated power level.
|
If a user is in the list, then they have the associated power level.
|
||||||
Otherwise they have the default level. If not ``default`` key is supplied,
|
Otherwise they have the default level. If not ``default`` key is supplied,
|
||||||
it is assumed to be 0.
|
it is assumed to be 0.
|
||||||
|
|
||||||
``m.room.add_state_level``
|
``m.room.add_state_level``
|
||||||
Summary:
|
Summary:
|
||||||
Defines the minimum power level a user needs to add state.
|
Defines the minimum power level a user needs to add state.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "level": <int> }``
|
``{ "level": <int> }``
|
||||||
Example:
|
Example:
|
||||||
``{ "level": 5 }``
|
``{ "level": 5 }``
|
||||||
Description:
|
Description:
|
||||||
To add a new piece of state to the room a user must have the given power
|
To add a new piece of state to the room a user must have the given power
|
||||||
level. This does not apply to updating current state, which is goverened
|
level. This does not apply to updating current state, which is goverened
|
||||||
by the ``required_power_level`` event key.
|
by the ``required_power_level`` event key.
|
||||||
|
|
||||||
``m.room.send_event_level``
|
``m.room.send_event_level``
|
||||||
Summary:
|
Summary:
|
||||||
Defines the minimum power level a user needs to send an event.
|
Defines the minimum power level a user needs to send an event.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "level": <int> }``
|
``{ "level": <int> }``
|
||||||
Example:
|
Example:
|
||||||
``{ "level": 0 }``
|
``{ "level": 0 }``
|
||||||
Description:
|
Description:
|
||||||
To send a new event into the room a user must have at least this power
|
To send a new event into the room a user must have at least this power
|
||||||
level. This allows ops to make the room read only by increasing this level,
|
level. This allows ops to make the room read only by increasing this level,
|
||||||
or muting individual users by lowering their power level below this
|
or muting individual users by lowering their power level below this
|
||||||
threshold.
|
threshold.
|
||||||
|
|
||||||
``m.room.ops_levels``
|
``m.room.ops_levels``
|
||||||
Summary:
|
Summary:
|
||||||
Defines the minimum power levels that a user must have before they can
|
Defines the minimum power levels that a user must have before they can
|
||||||
kick and/or ban other users.
|
kick and/or ban other users.
|
||||||
Type:
|
Type:
|
||||||
State event
|
State event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "ban_level": <int>, "kick_level": <int>, "redact_level": <int> }``
|
``{ "ban_level": <int>, "kick_level": <int>, "redact_level": <int> }``
|
||||||
|
@ -222,7 +222,7 @@ prefixed with ``m.``
|
||||||
``{ "ban_level": 5, "kick_level": 5 }``
|
``{ "ban_level": 5, "kick_level": 5 }``
|
||||||
Description:
|
Description:
|
||||||
This defines who can ban and/or kick people in the room. Most of the time
|
This defines who can ban and/or kick people in the room. Most of the time
|
||||||
``ban_level`` will be greater than or equal to ``kick_level`` since
|
``ban_level`` will be greater than or equal to ``kick_level`` since
|
||||||
banning is more severe than kicking.
|
banning is more severe than kicking.
|
||||||
|
|
||||||
``m.room.aliases``
|
``m.room.aliases``
|
||||||
|
@ -266,7 +266,7 @@ prefixed with ``m.``
|
||||||
``m.room.message``
|
``m.room.message``
|
||||||
Summary:
|
Summary:
|
||||||
A message.
|
A message.
|
||||||
Type:
|
Type:
|
||||||
Non-state event
|
Non-state event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "msgtype": "string" }``
|
``{ "msgtype": "string" }``
|
||||||
|
@ -283,7 +283,7 @@ prefixed with ``m.``
|
||||||
``m.room.message.feedback``
|
``m.room.message.feedback``
|
||||||
Summary:
|
Summary:
|
||||||
A receipt for a message.
|
A receipt for a message.
|
||||||
Type:
|
Type:
|
||||||
Non-state event
|
Non-state event
|
||||||
JSON format:
|
JSON format:
|
||||||
``{ "type": "enum [ delivered|read ]", "target_event_id": "string" }``
|
``{ "type": "enum [ delivered|read ]", "target_event_id": "string" }``
|
||||||
|
@ -294,7 +294,7 @@ prefixed with ``m.``
|
||||||
are two supported acknowledgements: ``delivered`` (sent when the event has
|
are two supported acknowledgements: ``delivered`` (sent when the event has
|
||||||
been received) and ``read`` (sent when the event has been observed by the
|
been received) and ``read`` (sent when the event has been observed by the
|
||||||
end-user). The ``target_event_id`` should reference the ``m.room.message``
|
end-user). The ``target_event_id`` should reference the ``m.room.message``
|
||||||
event being acknowledged.
|
event being acknowledged.
|
||||||
|
|
||||||
``m.room.redaction``
|
``m.room.redaction``
|
||||||
Summary:
|
Summary:
|
||||||
|
@ -352,10 +352,10 @@ outlined below:
|
||||||
- ``body`` : "string" - The alt text of the image, or some kind of content
|
- ``body`` : "string" - The alt text of the image, or some kind of content
|
||||||
description for accessibility e.g. "image attachment".
|
description for accessibility e.g. "image attachment".
|
||||||
|
|
||||||
ImageInfo:
|
ImageInfo:
|
||||||
Information about an image::
|
Information about an image::
|
||||||
|
|
||||||
{
|
{
|
||||||
"size" : integer (size of image in bytes),
|
"size" : integer (size of image in bytes),
|
||||||
"w" : integer (width of image in pixels),
|
"w" : integer (width of image in pixels),
|
||||||
"h" : integer (height of image in pixels),
|
"h" : integer (height of image in pixels),
|
||||||
|
@ -371,7 +371,7 @@ outlined below:
|
||||||
- ``body`` : "string" - A description of the audio e.g. "Bee Gees - Stayin'
|
- ``body`` : "string" - A description of the audio e.g. "Bee Gees - Stayin'
|
||||||
Alive", or some kind of content description for accessibility e.g.
|
Alive", or some kind of content description for accessibility e.g.
|
||||||
"audio attachment".
|
"audio attachment".
|
||||||
AudioInfo:
|
AudioInfo:
|
||||||
Information about a piece of audio::
|
Information about a piece of audio::
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -390,7 +390,7 @@ outlined below:
|
||||||
some kind of content description for accessibility e.g. "video
|
some kind of content description for accessibility e.g. "video
|
||||||
attachment".
|
attachment".
|
||||||
|
|
||||||
VideoInfo:
|
VideoInfo:
|
||||||
Information about a video::
|
Information about a video::
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -466,7 +466,7 @@ This event is sent by the caller when they wish to establish a call.
|
||||||
valid for. Once the invite age exceeds this value, clients should discard
|
valid for. Once the invite age exceeds this value, clients should discard
|
||||||
it. They should also no longer show the call as awaiting an answer in the
|
it. They should also no longer show the call as awaiting an answer in the
|
||||||
UI.
|
UI.
|
||||||
|
|
||||||
Optional keys:
|
Optional keys:
|
||||||
None.
|
None.
|
||||||
Example:
|
Example:
|
||||||
|
@ -537,7 +537,7 @@ A call is set up with messages exchanged as follows:
|
||||||
<------ m.call.answer
|
<------ m.call.answer
|
||||||
[...]
|
[...]
|
||||||
<------ m.call.hangup
|
<------ m.call.hangup
|
||||||
|
|
||||||
Or a rejected call:
|
Or a rejected call:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
|
@ -89,9 +89,9 @@ This specification defines the following login types:
|
||||||
|
|
||||||
Password-based
|
Password-based
|
||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
:Type:
|
:Type:
|
||||||
``m.login.password``
|
``m.login.password``
|
||||||
:Description:
|
:Description:
|
||||||
Login is supported via a username and password.
|
Login is supported via a username and password.
|
||||||
|
|
||||||
To respond to this type, reply with::
|
To respond to this type, reply with::
|
||||||
|
@ -107,10 +107,10 @@ login process, or a standard error response.
|
||||||
|
|
||||||
Captcha-based
|
Captcha-based
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
:Type:
|
:Type:
|
||||||
``m.login.recaptcha``
|
``m.login.recaptcha``
|
||||||
:Description:
|
:Description:
|
||||||
Login is supported by responding to a captcha (in the case of the Synapse
|
Login is supported by responding to a captcha (in the case of the Synapse
|
||||||
implementation, Google's Recaptcha library is used).
|
implementation, Google's Recaptcha library is used).
|
||||||
|
|
||||||
To respond to this type, reply with::
|
To respond to this type, reply with::
|
||||||
|
@ -131,7 +131,7 @@ login process, or a standard error response.
|
||||||
|
|
||||||
OAuth2-based
|
OAuth2-based
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
:Type:
|
:Type:
|
||||||
``m.login.oauth2``
|
``m.login.oauth2``
|
||||||
:Description:
|
:Description:
|
||||||
Login is supported via OAuth2 URLs. This login consists of multiple requests.
|
Login is supported via OAuth2 URLs. This login consists of multiple requests.
|
||||||
|
@ -154,7 +154,7 @@ the uri is a ``sevice selection URI``, it MUST point to a webpage which prompts
|
||||||
the user to choose which service to authorize with. On selection of a service,
|
the user to choose which service to authorize with. On selection of a service,
|
||||||
this MUST link through to an ``Authorization Request URI``. If there is only 1
|
this MUST link through to an ``Authorization Request URI``. If there is only 1
|
||||||
service which the home server accepts when logging in, this indirection can be
|
service which the home server accepts when logging in, this indirection can be
|
||||||
skipped and the "uri" key can be the ``Authorization Request URI``.
|
skipped and the "uri" key can be the ``Authorization Request URI``.
|
||||||
|
|
||||||
The client then visits the ``Authorization Request URI``, which then shows the
|
The client then visits the ``Authorization Request URI``, which then shows the
|
||||||
OAuth2 Allow/Deny prompt. Hitting 'Allow' returns the ``redirect URI`` with the
|
OAuth2 Allow/Deny prompt. Hitting 'Allow' returns the ``redirect URI`` with the
|
||||||
|
@ -165,8 +165,8 @@ When the home server gets this access token, it verifies that the cilent has
|
||||||
authorised with the 3rd party, and can now complete the login. The OAuth2
|
authorised with the 3rd party, and can now complete the login. The OAuth2
|
||||||
``redirect URI`` (with auth code) MUST respond with either new credentials, the
|
``redirect URI`` (with auth code) MUST respond with either new credentials, the
|
||||||
next stage of the login process, or a standard error response.
|
next stage of the login process, or a standard error response.
|
||||||
|
|
||||||
For example, if a home server accepts OAuth2 from Google, it would return the
|
For example, if a home server accepts OAuth2 from Google, it would return the
|
||||||
Authorization Request URI for Google::
|
Authorization Request URI for Google::
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -184,10 +184,10 @@ visits the REDIRECT_URI with the auth code= query parameter which returns::
|
||||||
|
|
||||||
Email-based (code)
|
Email-based (code)
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
:Type:
|
:Type:
|
||||||
``m.login.email.code``
|
``m.login.email.code``
|
||||||
:Description:
|
:Description:
|
||||||
Login is supported by typing in a code which is sent in an email. This login
|
Login is supported by typing in a code which is sent in an email. This login
|
||||||
consists of multiple requests.
|
consists of multiple requests.
|
||||||
|
|
||||||
To respond to this type, reply with::
|
To respond to this type, reply with::
|
||||||
|
@ -220,10 +220,10 @@ stage of the login process, or a standard error response.
|
||||||
|
|
||||||
Email-based (url)
|
Email-based (url)
|
||||||
~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~
|
||||||
:Type:
|
:Type:
|
||||||
``m.login.email.url``
|
``m.login.email.url``
|
||||||
:Description:
|
:Description:
|
||||||
Login is supported by clicking on a URL in an email. This login consists of
|
Login is supported by clicking on a URL in an email. This login consists of
|
||||||
multiple requests.
|
multiple requests.
|
||||||
|
|
||||||
To respond to this type, reply with::
|
To respond to this type, reply with::
|
||||||
|
@ -251,7 +251,7 @@ client should perform another request::
|
||||||
}
|
}
|
||||||
|
|
||||||
The home server MUST respond to this with either new credentials, the next
|
The home server MUST respond to this with either new credentials, the next
|
||||||
stage of the login process, or a standard error response.
|
stage of the login process, or a standard error response.
|
||||||
|
|
||||||
A common client implementation will be to periodically poll until the link is
|
A common client implementation will be to periodically poll until the link is
|
||||||
clicked. If the link has not been visited yet, a standard error response with
|
clicked. If the link has not been visited yet, a standard error response with
|
||||||
|
@ -296,7 +296,7 @@ of a previous login stage::
|
||||||
"next": "<next login type>"
|
"next": "<next login type>"
|
||||||
}
|
}
|
||||||
|
|
||||||
If a home server implements N-factor authentication, it MUST respond with all
|
If a home server implements N-factor authentication, it MUST respond with all
|
||||||
``stages`` when initially queried for their login requirements::
|
``stages`` when initially queried for their login requirements::
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -311,7 +311,7 @@ This can be represented conceptually as::
|
||||||
| type: "<login type1>" |
|
| type: "<login type1>" |
|
||||||
| ___________________ |
|
| ___________________ |
|
||||||
| |_Request_1_________| | <-- Returns "session" key which is used throughout.
|
| |_Request_1_________| | <-- Returns "session" key which is used throughout.
|
||||||
| ___________________ |
|
| ___________________ |
|
||||||
| |_Request_2_________| | <-- Returns a "next" value of "login type2"
|
| |_Request_2_________| | <-- Returns a "next" value of "login type2"
|
||||||
|_______________________|
|
|_______________________|
|
||||||
|
|
|
|
||||||
|
@ -355,9 +355,9 @@ To create a room, a client has to use the |createRoom|_ API. There are various
|
||||||
options which can be set when creating a room:
|
options which can be set when creating a room:
|
||||||
|
|
||||||
``visibility``
|
``visibility``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
Optional:
|
Optional:
|
||||||
Yes
|
Yes
|
||||||
Value:
|
Value:
|
||||||
Either ``public`` or ``private``.
|
Either ``public`` or ``private``.
|
||||||
|
@ -367,9 +367,9 @@ options which can be set when creating a room:
|
||||||
list. Rooms default to ``private`` visibility if this key is not included.
|
list. Rooms default to ``private`` visibility if this key is not included.
|
||||||
|
|
||||||
``room_alias_name``
|
``room_alias_name``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
Optional:
|
Optional:
|
||||||
Yes
|
Yes
|
||||||
Value:
|
Value:
|
||||||
The room alias localpart.
|
The room alias localpart.
|
||||||
|
@ -379,9 +379,9 @@ options which can be set when creating a room:
|
||||||
the room, e.g. ``!qadnasoi:domain.com >>> #room_alias_name:domain.com``
|
the room, e.g. ``!qadnasoi:domain.com >>> #room_alias_name:domain.com``
|
||||||
|
|
||||||
``name``
|
``name``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
Optional:
|
Optional:
|
||||||
Yes
|
Yes
|
||||||
Value:
|
Value:
|
||||||
The ``name`` value for the ``m.room.name`` state event.
|
The ``name`` value for the ``m.room.name`` state event.
|
||||||
|
@ -391,9 +391,9 @@ options which can be set when creating a room:
|
||||||
``m.room.name``.
|
``m.room.name``.
|
||||||
|
|
||||||
``topic``
|
``topic``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
Optional:
|
Optional:
|
||||||
Yes
|
Yes
|
||||||
Value:
|
Value:
|
||||||
The ``topic`` value for the ``m.room.topic`` state event.
|
The ``topic`` value for the ``m.room.topic`` state event.
|
||||||
|
@ -416,7 +416,7 @@ options which can be set when creating a room:
|
||||||
Example::
|
Example::
|
||||||
|
|
||||||
{
|
{
|
||||||
"visibility": "public",
|
"visibility": "public",
|
||||||
"room_alias_name": "thepub",
|
"room_alias_name": "thepub",
|
||||||
"name": "The Grand Duke Pub",
|
"name": "The Grand Duke Pub",
|
||||||
"topic": "All about happy hour"
|
"topic": "All about happy hour"
|
||||||
|
@ -462,7 +462,7 @@ send update requests to other servers.
|
||||||
|
|
||||||
Rooms store a *partial* list of room aliases via the ``m.room.aliases`` state
|
Rooms store a *partial* list of room aliases via the ``m.room.aliases`` state
|
||||||
event. This alias list is partial because it cannot guarantee that the alias
|
event. This alias list is partial because it cannot guarantee that the alias
|
||||||
list is in any way accurate or up-to-date, as room aliases can point to
|
list is in any way accurate or up-to-date, as room aliases can point to
|
||||||
different room IDs over time. Crucially, the aliases in this event are
|
different room IDs over time. Crucially, the aliases in this event are
|
||||||
**purely informational** and SHOULD NOT be treated as accurate. They SHOULD
|
**purely informational** and SHOULD NOT be treated as accurate. They SHOULD
|
||||||
be checked before they are used or shared with another user. If a room
|
be checked before they are used or shared with another user. If a room
|
||||||
|
@ -470,7 +470,7 @@ appears to have a room alias of ``#alias:example.com``, this SHOULD be checked
|
||||||
to make sure that the room's ID matches the ``room_id`` returned from the
|
to make sure that the room's ID matches the ``room_id`` returned from the
|
||||||
request.
|
request.
|
||||||
|
|
||||||
Room aliases can be checked in the same way they are resolved; by sending a
|
Room aliases can be checked in the same way they are resolved; by sending a
|
||||||
``GET /directory/room/<room alias>``::
|
``GET /directory/room/<room alias>``::
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -489,7 +489,7 @@ Permissions
|
||||||
|
|
||||||
Permissions for rooms are done via the concept of power levels - to do any
|
Permissions for rooms are done via the concept of power levels - to do any
|
||||||
action in a room a user must have a suitable power level. Power levels are
|
action in a room a user must have a suitable power level. Power levels are
|
||||||
stored as state events in a given room.
|
stored as state events in a given room.
|
||||||
|
|
||||||
Power levels for users are defined in ``m.room.power_levels``, where both a
|
Power levels for users are defined in ``m.room.power_levels``, where both a
|
||||||
default and specific users' power levels can be set::
|
default and specific users' power levels can be set::
|
||||||
|
@ -503,7 +503,7 @@ default and specific users' power levels can be set::
|
||||||
By default all users have a power level of 0, other than the room creator whose
|
By default all users have a power level of 0, other than the room creator whose
|
||||||
power level defaults to 100. Users can grant other users increased power levels
|
power level defaults to 100. Users can grant other users increased power levels
|
||||||
up to their own power level. For example, user A with a power level of 50 could
|
up to their own power level. For example, user A with a power level of 50 could
|
||||||
increase the power level of user B to a maximum of level 50. Power levels for
|
increase the power level of user B to a maximum of level 50. Power levels for
|
||||||
users are tracked per-room even if the user is not present in the room.
|
users are tracked per-room even if the user is not present in the room.
|
||||||
|
|
||||||
State events may contain a ``required_power_level`` key, which indicates the
|
State events may contain a ``required_power_level`` key, which indicates the
|
||||||
|
@ -514,11 +514,11 @@ to update state events in that room.
|
||||||
To perform certain actions there are additional power level requirements
|
To perform certain actions there are additional power level requirements
|
||||||
defined in the following state events:
|
defined in the following state events:
|
||||||
|
|
||||||
- ``m.room.send_event_level`` defines the minimum ``level`` for sending
|
- ``m.room.send_event_level`` defines the minimum ``level`` for sending
|
||||||
non-state events. Defaults to 50.
|
non-state events. Defaults to 50.
|
||||||
- ``m.room.add_state_level`` defines the minimum ``level`` for adding new
|
- ``m.room.add_state_level`` defines the minimum ``level`` for adding new
|
||||||
state, rather than updating existing state. Defaults to 50.
|
state, rather than updating existing state. Defaults to 50.
|
||||||
- ``m.room.ops_level`` defines the minimum ``ban_level`` and ``kick_level`` to
|
- ``m.room.ops_level`` defines the minimum ``ban_level`` and ``kick_level`` to
|
||||||
ban and kick other users respectively. This defaults to a kick and ban levels
|
ban and kick other users respectively. This defaults to a kick and ban levels
|
||||||
of 50 each.
|
of 50 each.
|
||||||
|
|
||||||
|
@ -563,7 +563,7 @@ received an invite.
|
||||||
|
|
||||||
Inviting users
|
Inviting users
|
||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
.. TODO-doc Invite-join dance
|
.. TODO-doc Invite-join dance
|
||||||
- Outline invite join dance. What is it? Why is it required? How does it work?
|
- Outline invite join dance. What is it? Why is it required? How does it work?
|
||||||
- What does the home server have to do?
|
- What does the home server have to do?
|
||||||
|
|
||||||
|
@ -590,8 +590,8 @@ entire invitation process::
|
||||||
"user_id": "<user id to invite>"
|
"user_id": "<user id to invite>"
|
||||||
}
|
}
|
||||||
|
|
||||||
Alternatively, the membership state for this user in this room can be modified
|
Alternatively, the membership state for this user in this room can be modified
|
||||||
directly by sending the following request to
|
directly by sending the following request to
|
||||||
``/rooms/<room id>/state/m.room.member/<url encoded user id>``::
|
``/rooms/<room id>/state/m.room.member/<url encoded user id>``::
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -620,8 +620,8 @@ the room. To leave a room, a request should be made to
|
||||||
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
Alternatively, the membership state for this user in this room can be modified
|
Alternatively, the membership state for this user in this room can be modified
|
||||||
directly by sending the following request to
|
directly by sending the following request to
|
||||||
``/rooms/<room id>/state/m.room.member/<url encoded user id>``::
|
``/rooms/<room id>/state/m.room.member/<url encoded user id>``::
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -633,7 +633,7 @@ See the `Room events`_ section for more information on ``m.room.member``.
|
||||||
Once a user has left a room, that room will no longer appear on the
|
Once a user has left a room, that room will no longer appear on the
|
||||||
|initialSync|_ API.
|
|initialSync|_ API.
|
||||||
|
|
||||||
If all members in a room leave, that room becomes eligible for deletion.
|
If all members in a room leave, that room becomes eligible for deletion.
|
||||||
|
|
||||||
Banning users in a room
|
Banning users in a room
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -648,7 +648,7 @@ to |/rooms/<room_id>/ban|_ with::
|
||||||
"user_id": "<user id to ban"
|
"user_id": "<user id to ban"
|
||||||
"reason": "string: <reason for the ban>"
|
"reason": "string: <reason for the ban>"
|
||||||
}
|
}
|
||||||
|
|
||||||
Banning a user adjusts the banned member's membership state to ``ban`` and
|
Banning a user adjusts the banned member's membership state to ``ban`` and
|
||||||
adjusts the power level of this event to a level higher than the banned person.
|
adjusts the power level of this event to a level higher than the banned person.
|
||||||
Like with other membership changes, a user can directly adjust the target
|
Like with other membership changes, a user can directly adjust the target
|
||||||
|
@ -842,7 +842,7 @@ There are several APIs provided to ``GET`` events for a room:
|
||||||
``{ "start": "<token>", "end": "<token>" }``
|
``{ "start": "<token>", "end": "<token>" }``
|
||||||
Example:
|
Example:
|
||||||
TODO-doc
|
TODO-doc
|
||||||
|
|
||||||
|/rooms/<room_id>/initialSync|_
|
|/rooms/<room_id>/initialSync|_
|
||||||
Description:
|
Description:
|
||||||
Get all relevant events for a room. This includes state events, paginated
|
Get all relevant events for a room. This includes state events, paginated
|
||||||
|
|
|
@ -56,26 +56,26 @@ Each transaction has:
|
||||||
- A list of "previous IDs".
|
- A list of "previous IDs".
|
||||||
- A list of PDUs and EDUs - the actual message payload that the Transaction
|
- A list of PDUs and EDUs - the actual message payload that the Transaction
|
||||||
carries.
|
carries.
|
||||||
|
|
||||||
``origin``
|
``origin``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
Description:
|
Description:
|
||||||
DNS name of homeserver making this transaction.
|
DNS name of homeserver making this transaction.
|
||||||
|
|
||||||
``ts``
|
``ts``
|
||||||
Type:
|
Type:
|
||||||
Integer
|
Integer
|
||||||
Description:
|
Description:
|
||||||
Timestamp in milliseconds on originating homeserver when this transaction
|
Timestamp in milliseconds on originating homeserver when this transaction
|
||||||
started.
|
started.
|
||||||
|
|
||||||
``previous_ids``
|
``previous_ids``
|
||||||
Type:
|
Type:
|
||||||
List of strings
|
List of strings
|
||||||
Description:
|
Description:
|
||||||
List of transactions that were sent immediately prior to this transaction.
|
List of transactions that were sent immediately prior to this transaction.
|
||||||
|
|
||||||
``pdus``
|
``pdus``
|
||||||
Type:
|
Type:
|
||||||
List of Objects.
|
List of Objects.
|
||||||
|
@ -125,13 +125,13 @@ All PDUs have:
|
||||||
String
|
String
|
||||||
Description:
|
Description:
|
||||||
Event context identifier
|
Event context identifier
|
||||||
|
|
||||||
``origin``
|
``origin``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
Description:
|
Description:
|
||||||
DNS name of homeserver that created this PDU.
|
DNS name of homeserver that created this PDU.
|
||||||
|
|
||||||
``pdu_id``
|
``pdu_id``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
|
@ -176,19 +176,19 @@ For state updates:
|
||||||
Boolean
|
Boolean
|
||||||
Description:
|
Description:
|
||||||
True if this PDU is updating state.
|
True if this PDU is updating state.
|
||||||
|
|
||||||
``state_key``
|
``state_key``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
Description:
|
Description:
|
||||||
Optional key identifying the updated state within the context.
|
Optional key identifying the updated state within the context.
|
||||||
|
|
||||||
``power_level``
|
``power_level``
|
||||||
Type:
|
Type:
|
||||||
Integer
|
Integer
|
||||||
Description:
|
Description:
|
||||||
The asserted power level of the user performing the update.
|
The asserted power level of the user performing the update.
|
||||||
|
|
||||||
``required_power_level``
|
``required_power_level``
|
||||||
Type:
|
Type:
|
||||||
Integer
|
Integer
|
||||||
|
@ -200,13 +200,13 @@ For state updates:
|
||||||
String
|
String
|
||||||
Description:
|
Description:
|
||||||
PDU event type.
|
PDU event type.
|
||||||
|
|
||||||
``prev_state_origin``
|
``prev_state_origin``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
Description:
|
Description:
|
||||||
The PDU id of the update this replaces.
|
The PDU id of the update this replaces.
|
||||||
|
|
||||||
``user_id``
|
``user_id``
|
||||||
Type:
|
Type:
|
||||||
String
|
String
|
||||||
|
@ -262,8 +262,8 @@ destination home server names, and the actual nested content.
|
||||||
"origin":"blue",
|
"origin":"blue",
|
||||||
"destination":"orange",
|
"destination":"orange",
|
||||||
"content":...}
|
"content":...}
|
||||||
|
|
||||||
|
|
||||||
Protocol URLs
|
Protocol URLs
|
||||||
-------------
|
-------------
|
||||||
.. WARNING::
|
.. WARNING::
|
||||||
|
@ -291,7 +291,7 @@ To fetch a particular PDU::
|
||||||
|
|
||||||
Retrieves a given PDU from the server. The response will contain a single new
|
Retrieves a given PDU from the server. The response will contain a single new
|
||||||
Transaction, inside which will be the requested PDU.
|
Transaction, inside which will be the requested PDU.
|
||||||
|
|
||||||
|
|
||||||
To fetch all the state of a given context::
|
To fetch all the state of a given context::
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue