Add git versions to other parts of the spec

pull/327/head
Richard van der Hoff 9 years ago
parent 0e4a4e1e44
commit 5cc9066159

@ -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…
Cancel
Save