Add git versions to other parts of the spec
This commit is contained in:
parent
0e4a4e1e44
commit
5cc9066159
4 changed files with 66 additions and 33 deletions
|
@ -15,6 +15,13 @@ irrespective of the underlying homeserver implementation.
|
||||||
.. contents:: Table of Contents
|
.. contents:: Table of Contents
|
||||||
.. sectnum::
|
.. sectnum::
|
||||||
|
|
||||||
|
Specification version
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This version of the specification is generated from
|
||||||
|
`matrix-doc <https://github.com/matrix-org/matrix-doc>`_ as of Git commit
|
||||||
|
`{{git_version}} <https://github.com/matrix-org/matrix-doc/tree/{{git_rev}}>`_.
|
||||||
|
|
||||||
Application Services
|
Application Services
|
||||||
--------------------
|
--------------------
|
||||||
Application services are passive and can only observe events from a given
|
Application services are passive and can only observe events from a given
|
||||||
|
@ -48,9 +55,9 @@ Application services register "namespaces" of user IDs, room aliases and room ID
|
||||||
These namespaces are represented as regular expressions. An application service
|
These namespaces are represented as regular expressions. An application service
|
||||||
is said to be "interested" in a given event if one of the IDs in the event match
|
is said to be "interested" in a given event if one of the IDs in the event match
|
||||||
the regular expression provided by the application service. An application
|
the regular expression provided by the application service. An application
|
||||||
service can also state whether they should be the only ones who
|
service can also state whether they should be the only ones who
|
||||||
can manage a specified namespace. This is referred to as an "exclusive"
|
can manage a specified namespace. This is referred to as an "exclusive"
|
||||||
namespace. An exclusive namespace prevents humans and other application
|
namespace. An exclusive namespace prevents humans and other application
|
||||||
services from creating/deleting entities in that namespace. Typically,
|
services from creating/deleting entities in that namespace. Typically,
|
||||||
exclusive namespaces are used when the rooms represent real rooms on
|
exclusive namespaces are used when the rooms represent real rooms on
|
||||||
another service (e.g. IRC). Non-exclusive namespaces are used when the
|
another service (e.g. IRC). Non-exclusive namespaces are used when the
|
||||||
|
@ -104,12 +111,12 @@ events. Each list of events includes a transaction ID, which works as follows:
|
||||||
Typical
|
Typical
|
||||||
HS ---> AS : Homeserver sends events with transaction ID T.
|
HS ---> AS : Homeserver sends events with transaction ID T.
|
||||||
<--- : AS sends back 200 OK.
|
<--- : AS sends back 200 OK.
|
||||||
|
|
||||||
AS ACK Lost
|
AS ACK Lost
|
||||||
HS ---> AS : Homeserver sends events with transaction ID T.
|
HS ---> AS : Homeserver sends events with transaction ID T.
|
||||||
<-/- : AS 200 OK is lost.
|
<-/- : AS 200 OK is lost.
|
||||||
HS ---> AS : Homeserver retries with the same transaction ID of T.
|
HS ---> AS : Homeserver retries with the same transaction ID of T.
|
||||||
<--- : AS sends back 200 OK. If the AS had processed these events
|
<--- : AS sends back 200 OK. If the AS had processed these events
|
||||||
already, it can NO-OP this request (and it knows if it is the same
|
already, it can NO-OP this request (and it knows if it is the same
|
||||||
events based on the transaction ID).
|
events based on the transaction ID).
|
||||||
|
|
||||||
|
@ -163,11 +170,11 @@ homeserver.
|
||||||
|
|
||||||
Identity assertion
|
Identity assertion
|
||||||
++++++++++++++++++
|
++++++++++++++++++
|
||||||
The client-server API infers the user ID from the ``access_token`` provided in
|
The client-server API infers the user ID from the ``access_token`` provided in
|
||||||
every request. It would be an annoying amount of book-keeping to maintain tokens
|
every request. It would be an annoying amount of book-keeping to maintain tokens
|
||||||
for every virtual user. It would be preferable if the application service could
|
for every virtual user. It would be preferable if the application service could
|
||||||
use the CS API with its own ``as_token`` instead, and specify the virtual user
|
use the CS API with its own ``as_token`` instead, and specify the virtual user
|
||||||
they wish to be acting on behalf of. For real users, this would require
|
they wish to be acting on behalf of. For real users, this would require
|
||||||
additional permissions granting the AS permission to masquerade as a matrix user.
|
additional permissions granting the AS permission to masquerade as a matrix user.
|
||||||
|
|
||||||
Inputs:
|
Inputs:
|
||||||
|
@ -177,7 +184,7 @@ Inputs:
|
||||||
Notes:
|
Notes:
|
||||||
- This will apply on all aspects of the CS API, except for Account Management.
|
- This will apply on all aspects of the CS API, except for Account Management.
|
||||||
- The ``as_token`` is inserted into ``access_token`` which is usually where the
|
- The ``as_token`` is inserted into ``access_token`` which is usually where the
|
||||||
client token is. This is done on purpose to allow application services to
|
client token is. This is done on purpose to allow application services to
|
||||||
reuse client SDKs.
|
reuse client SDKs.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
@ -187,7 +194,7 @@ Notes:
|
||||||
Query Parameters:
|
Query Parameters:
|
||||||
access_token: The application service token
|
access_token: The application service token
|
||||||
user_id: The desired user ID to act as.
|
user_id: The desired user ID to act as.
|
||||||
|
|
||||||
Timestamp massaging
|
Timestamp massaging
|
||||||
+++++++++++++++++++
|
+++++++++++++++++++
|
||||||
The application service may want to inject events at a certain time (reflecting
|
The application service may want to inject events at a certain time (reflecting
|
||||||
|
@ -199,7 +206,7 @@ Inputs:
|
||||||
- Desired timestamp
|
- Desired timestamp
|
||||||
Notes:
|
Notes:
|
||||||
- This will only apply when sending events.
|
- This will only apply when sending events.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
/path?access_token=$token&ts=$timestamp
|
/path?access_token=$token&ts=$timestamp
|
||||||
|
@ -230,7 +237,7 @@ including the AS token on a ``/register`` request, along with a login type of
|
||||||
::
|
::
|
||||||
|
|
||||||
/register?access_token=$as_token
|
/register?access_token=$as_token
|
||||||
|
|
||||||
Content:
|
Content:
|
||||||
{
|
{
|
||||||
type: "m.login.application_service",
|
type: "m.login.application_service",
|
||||||
|
@ -278,12 +285,12 @@ at the cost of an extra round trip (of which the response can be cached).
|
||||||
Munging the URI would allow clients to apply the mapping locally, but would force
|
Munging the URI would allow clients to apply the mapping locally, but would force
|
||||||
user X on service Y to always map to the same munged user ID. Considering the
|
user X on service Y to always map to the same munged user ID. Considering the
|
||||||
exposed API could just be applying this munging, there is more flexibility if
|
exposed API could just be applying this munging, there is more flexibility if
|
||||||
an API is exposed.
|
an API is exposed.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
GET /_matrix/app/%CLIENT_MAJOR_VERSION%/user?uri=$url_encoded_uri
|
GET /_matrix/app/%CLIENT_MAJOR_VERSION%/user?uri=$url_encoded_uri
|
||||||
|
|
||||||
Returns 200 OK:
|
Returns 200 OK:
|
||||||
{
|
{
|
||||||
user_id: <complete user ID on local HS>
|
user_id: <complete user ID on local HS>
|
||||||
|
@ -297,22 +304,22 @@ e.g. IRC rooms. We don't want to expose every 3P network room though, e.g.
|
||||||
exposed as an alias by the application service. Private rooms
|
exposed as an alias by the application service. Private rooms
|
||||||
(e.g. sending an email to someone) should not
|
(e.g. sending an email to someone) should not
|
||||||
be exposed in this way, but should instead operate using normal invite/join semantics.
|
be exposed in this way, but should instead operate using normal invite/join semantics.
|
||||||
Therefore, the ID conventions discussed below are only valid for public rooms which
|
Therefore, the ID conventions discussed below are only valid for public rooms which
|
||||||
expose room aliases.
|
expose room aliases.
|
||||||
|
|
||||||
Matrix users may wish to join XMPP rooms (e.g. using XEP-0045) or IRC rooms. In both
|
Matrix users may wish to join XMPP rooms (e.g. using XEP-0045) or IRC rooms. In both
|
||||||
cases, these rooms can be expressed as URIs. For consistency, these "room" URIs
|
cases, these rooms can be expressed as URIs. For consistency, these "room" URIs
|
||||||
SHOULD be mapped in the same way as "user" URIs.
|
SHOULD be mapped in the same way as "user" URIs.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
GET /_matrix/app/%CLIENT_MAJOR_VERSION%/alias?uri=$url_encoded_uri
|
GET /_matrix/app/%CLIENT_MAJOR_VERSION%/alias?uri=$url_encoded_uri
|
||||||
|
|
||||||
Returns 200 OK:
|
Returns 200 OK:
|
||||||
{
|
{
|
||||||
alias: <complete room alias on local HS>
|
alias: <complete room alias on local HS>
|
||||||
}
|
}
|
||||||
|
|
||||||
Event fields
|
Event fields
|
||||||
++++++++++++
|
++++++++++++
|
||||||
We recommend that any events that originated from a remote network should
|
We recommend that any events that originated from a remote network should
|
||||||
|
@ -320,4 +327,3 @@ include an ``external_url`` field in their content to provide a way for Matrix
|
||||||
clients to link into the 'native' client from which the event originated.
|
clients to link into the 'native' client from which the event originated.
|
||||||
For instance, this could contain the message-ID for emails/nntp posts, or a link
|
For instance, this could contain the message-ID for emails/nntp posts, or a link
|
||||||
to a blog comment when bridging blog comment traffic in & out of Matrix.
|
to a blog comment when bridging blog comment traffic in & out of Matrix.
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,13 @@ practice has only been applied specifically to email addresses.
|
||||||
.. contents:: Table of Contents
|
.. contents:: Table of Contents
|
||||||
.. sectnum::
|
.. sectnum::
|
||||||
|
|
||||||
|
Specification version
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This version of the specification is generated from
|
||||||
|
`matrix-doc <https://github.com/matrix-org/matrix-doc>`_ as of Git commit
|
||||||
|
`{{git_version}} <https://github.com/matrix-org/matrix-doc/tree/{{git_rev}}>`_.
|
||||||
|
|
||||||
General principles
|
General principles
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,23 @@ Push Gateway API
|
||||||
|
|
||||||
Clients may want to receive push notifications when events are received at
|
Clients may want to receive push notifications when events are received at
|
||||||
the homeserver. This is managed by a distinct entity called the Push Gateway.
|
the homeserver. This is managed by a distinct entity called the Push Gateway.
|
||||||
A client's homeserver forwards information about the event to the push gateway
|
|
||||||
and the gateway submits a push notification to the push notification provider
|
.. contents:: Table of Contents
|
||||||
(e.g. APNS, GCM).
|
.. sectnum::
|
||||||
|
|
||||||
|
Specification version
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This version of the specification is generated from
|
||||||
|
`matrix-doc <https://github.com/matrix-org/matrix-doc>`_ as of Git commit
|
||||||
|
`{{git_version}} <https://github.com/matrix-org/matrix-doc/tree/{{git_rev}}>`_.
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
|
A client's homeserver forwards information about received events to the push
|
||||||
|
gateway. The gateway then submits a push notification to the push notification
|
||||||
|
provider (e.g. APNS, GCM).
|
||||||
|
|
||||||
|
|
||||||
::
|
::
|
||||||
|
@ -23,13 +37,13 @@ and the gateway submits a push notification to the push notification provider
|
||||||
Matrix | | | | | |
|
Matrix | | | | | |
|
||||||
Client/Server API + | | | | |
|
Client/Server API + | | | | |
|
||||||
| | +--------------------+ +-------------------+
|
| | +--------------------+ +-------------------+
|
||||||
| +--+-+ |
|
| +--+-+ |
|
||||||
| | <-------------------------------------------+
|
| | <-------------------------------------------+
|
||||||
+---+ |
|
+---+ |
|
||||||
| | Provider Push Protocol
|
| | Provider Push Protocol
|
||||||
+----+
|
+----+
|
||||||
|
|
||||||
Mobile Device or Client
|
Mobile Device or Client
|
||||||
|
|
||||||
|
|
||||||
Homeserver behaviour
|
Homeserver behaviour
|
||||||
|
|
|
@ -44,6 +44,13 @@ request.
|
||||||
.. contents:: Table of Contents
|
.. contents:: Table of Contents
|
||||||
.. sectnum::
|
.. sectnum::
|
||||||
|
|
||||||
|
Specification version
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This version of the specification is generated from
|
||||||
|
`matrix-doc <https://github.com/matrix-org/matrix-doc>`_ as of Git commit
|
||||||
|
`{{git_version}} <https://github.com/matrix-org/matrix-doc/tree/{{git_rev}}>`_.
|
||||||
|
|
||||||
Server Discovery
|
Server Discovery
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
@ -188,9 +195,9 @@ servers. Either way the response is a list of JSON objects containing the
|
||||||
JSON published by the server under ``_matrix/key/v2/server/`` signed by
|
JSON published by the server under ``_matrix/key/v2/server/`` signed by
|
||||||
both the originating server and by this server.
|
both the originating server and by this server.
|
||||||
|
|
||||||
The ``minimum_valid_until_ts`` is a millisecond POSIX timestamp indicating
|
The ``minimum_valid_until_ts`` is a millisecond POSIX timestamp indicating
|
||||||
when the returned certificate will need to be valid until to be useful to the
|
when the returned certificate will need to be valid until to be useful to the
|
||||||
requesting server. This can be set using the maximum ``origin_server_ts`` of
|
requesting server. This can be set using the maximum ``origin_server_ts`` of
|
||||||
an batch of events that a requesting server is trying to validate. This allows
|
an batch of events that a requesting server is trying to validate. This allows
|
||||||
an intermediate notary server to give a prompt cached response even if the
|
an intermediate notary server to give a prompt cached response even if the
|
||||||
originating server is offline.
|
originating server is offline.
|
||||||
|
@ -832,7 +839,7 @@ State Conflict Resolution
|
||||||
-------------------------
|
-------------------------
|
||||||
.. NOTE::
|
.. NOTE::
|
||||||
This section is a work in progress.
|
This section is a work in progress.
|
||||||
|
|
||||||
.. TODO-doc
|
.. TODO-doc
|
||||||
- How do conflicts arise (diagrams?)
|
- How do conflicts arise (diagrams?)
|
||||||
- How are they resolved (incl tie breaks)
|
- How are they resolved (incl tie breaks)
|
||||||
|
@ -953,4 +960,3 @@ The list of join candidates is a list of server names that are likely to hold
|
||||||
the given room; these are servers that the requesting server may wish to use as
|
the given room; these are servers that the requesting server may wish to use as
|
||||||
resident servers as part of the remote join handshake. This list may or may not
|
resident servers as part of the remote join handshake. This list may or may not
|
||||||
include the server answering the query.
|
include the server answering the query.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue