More formatting fixes; typos; etc

pull/977/head
Kegan Dougal 9 years ago
parent af32ec194a
commit faa95e172f

@ -63,3 +63,4 @@ The call setup should appear seamless to the user as if they had simply placed
a call and the other party had accepted. Thusly, any media stream that had been a call and the other party had accepted. Thusly, any media stream that had been
setup for use on a call should be transferred and used for the call that setup for use on a call should be transferred and used for the call that
replaces it. replaces it.

@ -66,13 +66,13 @@ An example HS configuration required to pass traffic to the AS is:
application service is merely augmenting the room itself (e.g. providing application service is merely augmenting the room itself (e.g. providing
logging or searching facilities). logging or searching facilities).
- Namespaces are represented by POSIX extended regular expressions, - Namespaces are represented by POSIX extended regular expressions,
e.g.: e.g:
.. code-block:: yaml .. code-block:: yaml
users: users:
- exclusive: true - exclusive: true
regex: @irc.freenode.net/.* regex: @irc.freenode.net_.*
Home Server -> Application Service API Home Server -> Application Service API
@ -326,7 +326,7 @@ but only if the application service has defined the namespace as ``exclusive``.
ID conventions ID conventions
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
.. NOTE:: .. TODO-spec
- Giving HSes the freedom to namespace still feels like the Right Thing here. - Giving HSes the freedom to namespace still feels like the Right Thing here.
- Exposing a public API provides the consistency which was the main complaint - Exposing a public API provides the consistency which was the main complaint
against namespacing. against namespacing.
@ -345,7 +345,7 @@ types, including:
- MSISDNs (``tel``) - MSISDNs (``tel``)
- Email addresses (``mailto``) - Email addresses (``mailto``)
- IRC nicks (``irc`` - https://tools.ietf.org/html/draft-butcher-irc-url-04) - IRC nicks (``irc`` - https://tools.ietf.org/html/draft-butcher-irc-url-04)
- XMPP (xep-0032) - XMPP (XEP-0032)
- SIP URIs (RFC 3261) - SIP URIs (RFC 3261)
As a result, virtual user IDs SHOULD relate to their URI counterpart. This As a result, virtual user IDs SHOULD relate to their URI counterpart. This
@ -403,6 +403,8 @@ blog comment traffic in & out of matrix
Active Application Services Active Application Services
---------------------------- ----------------------------
.. NOTE::
This section is a work in progress.
.. TODO-spec .. TODO-spec
API that provides hooks into the server so that you can intercept and API that provides hooks into the server so that you can intercept and
@ -419,3 +421,4 @@ Policy Servers
Enforcing policies Enforcing policies
------------------ ------------------

@ -2,10 +2,9 @@ Federation API
============== ==============
Matrix home servers use the Federation APIs (also known as server-server APIs) Matrix home servers use the Federation APIs (also known as server-server APIs)
to communicate with each other. to communicate with each other. Home servers use these APIs to push messages to
Home servers use these APIs to push messages to each other in real-time, to each other in real-time, to request historic messages from each other, and to
request historic messages from each other, and to query profile and presence query profile and presence information about users on each other's servers.
information about users on each other's servers.
The APIs are implemented using HTTPS GETs and PUTs between each of the The APIs are implemented using HTTPS GETs and PUTs between each of the
servers. These HTTPS requests are strongly authenticated using public key servers. These HTTPS requests are strongly authenticated using public key
@ -21,7 +20,7 @@ Persisted Data Units (PDUs):
context. context.
Like email, it is the responsibility of the originating server of a PDU Like email, it is the responsibility of the originating server of a PDU
to deliver that event to its recepient servers. However PDUs are signed to deliver that event to its recipient servers. However PDUs are signed
using the originating server's public key so that it is possible to using the originating server's public key so that it is possible to
deliver them through third-party servers. deliver them through third-party servers.
@ -84,18 +83,19 @@ directly or by querying an intermediate notary server using a
response with their own key. A server may query multiple notary servers to response with their own key. A server may query multiple notary servers to
ensure that they all report the same public keys. ensure that they all report the same public keys.
This approach is borrowed from the Perspectives Project This approach is borrowed from the `Perspectives Project`_, but modified to
(http://perspectives-project.org/), but modified to include the NACL keys and to include the NACL keys and to use JSON instead of XML. It has the advantage of
use JSON instead of XML. It has the advantage of avoiding a single trust-root avoiding a single trust-root since each server is free to pick which notary
since each server is free to pick which notary servers they trust and can servers they trust and can corroborate the keys returned by a given notary
corroborate the keys returned by a given notary server by querying other server by querying other servers.
servers.
.. _Perspectives Project: http://perspectives-project.org/
Publishing Keys Publishing Keys
_______________ _______________
Home servers publish the allowed TLS fingerprints and signing keys in a JSON Home servers publish the allowed TLS fingerprints and signing keys in a JSON
object at ``/_matrix/key/v2/server/${key_id}``. The response contains a list of object at ``/_matrix/key/v2/server/{key_id}``. The response contains a list of
``verify_keys`` that are valid for signing federation requests made by the ``verify_keys`` that are valid for signing federation requests made by the
server and for signing events. It contains a list of ``old_verify_keys`` server and for signing events. It contains a list of ``old_verify_keys``
which are only valid for signing events. Finally the response contains a list which are only valid for signing events. Finally the response contains a list
@ -510,7 +510,7 @@ To backfill events on a given context::
Retrieves a sliding-window history of previous PDUs that occurred on the given Retrieves a sliding-window history of previous PDUs that occurred on the given
context. Starting from the PDU ID(s) given in the "v" argument, the PDUs that context. Starting from the PDU ID(s) given in the "v" argument, the PDUs that
preceeded it are retrieved, up to a total number given by the "limit" argument. preceded it are retrieved, up to a total number given by the "limit" argument.
These are then returned in a new Transaction containing all of the PDUs. These are then returned in a new Transaction containing all of the PDUs.
@ -554,9 +554,7 @@ Every HTTP request made by a homeserver is authenticated using public key
digital signatures. The request method, target and body are signed by wrapping digital signatures. The request method, target and body are signed by wrapping
them in a JSON object and signing it using the JSON signing algorithm. The them in a JSON object and signing it using the JSON signing algorithm. The
resulting signatures are added as an Authorization header with an auth scheme resulting signatures are added as an Authorization header with an auth scheme
of X-Matrix. of X-Matrix. Note that the target field should include the full path starting with
Note that the target field should include the full path starting with
``/_matrix/...``, including the ``?`` and any query parameters if present, but ``/_matrix/...``, including the ``?`` and any query parameters if present, but
should not include the leading ``https:``, nor the destination server's should not include the leading ``https:``, nor the destination server's
hostname. hostname.
@ -656,12 +654,12 @@ State Conflict Resolution
- How does this work with deleting current state - How does this work with deleting current state
- How do we reject invalid federation traffic? - How do we reject invalid federation traffic?
[[TODO(paul): At this point we should probably have a long description of how [[TODO(paul): At this point we should probably have a long description of how
State management works, with descriptions of clobbering rules, power levels, etc State management works, with descriptions of clobbering rules, power levels, etc
etc... But some of that detail is rather up-in-the-air, on the whiteboard, and etc... But some of that detail is rather up-in-the-air, on the whiteboard, and
so on. This part needs refining. And writing in its own document as the details so on. This part needs refining. And writing in its own document as the details
relate to the server/system as a whole, not specifically to server-server relate to the server/system as a whole, not specifically to server-server
federation.]] federation.]]
Presence Presence
-------- --------
@ -677,8 +675,8 @@ Performing a presence update and poll subscription request::
Each should be an object with the following keys: Each should be an object with the following keys:
user_id: string containing a User ID user_id: string containing a User ID
presence: "offline"|"unavailable"|"online"|"free_for_chat" presence: "offline"|"unavailable"|"online"|"free_for_chat"
status_msg: (optional) string of freeform text status_msg: (optional) string of free-form text
last_active_ago: miliseconds since the last activity by the user last_active_ago: milliseconds since the last activity by the user
poll: (optional): list of strings giving User IDs poll: (optional): list of strings giving User IDs
@ -696,7 +694,7 @@ removed until explicitly requested by a later ``unpoll``.
On receipt of a message containing a non-empty ``poll`` list, the receiving On receipt of a message containing a non-empty ``poll`` list, the receiving
server should immediately send the sending server a presence update EDU of its server should immediately send the sending server a presence update EDU of its
own, containing in a ``push`` list the current state of every user that was in own, containing in a ``push`` list the current state of every user that was in
the orginal EDU's ``poll`` list. the original EDU's ``poll`` list.
Sending a presence invite:: Sending a presence invite::
@ -721,7 +719,7 @@ Rejecting a presence invite::
Content keys - as for m.presence_invite Content keys - as for m.presence_invite
.. TODO-doc .. TODO-doc
- Explain the timing-based roundtrip reduction mechanism for presence - Explain the timing-based round-trip reduction mechanism for presence
messages messages
- Explain the zero-byte presence inference logic - Explain the zero-byte presence inference logic
See also: docs/client-server/model/presence See also: docs/client-server/model/presence
@ -742,8 +740,8 @@ Querying profile information::
field: (optional) string giving a field name field: (optional) string giving a field name
Returns: JSON object containing the following keys: Returns: JSON object containing the following keys:
displayname: string of freeform text displayname: string of free-form text
avatar_url: string containing an http-scheme URL avatar_url: string containing an HTTP-scheme URL
If the query contains the optional ``field`` key, it should give the name of a If the query contains the optional ``field`` key, it should give the name of a
result field. If such is present, then the result should contain only a field result field. If such is present, then the result should contain only a field
@ -769,3 +767,4 @@ Querying directory information::
The list of join candidates is a list of server names that are likely to hold 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 try the given room; these are servers that the requesting server may wish to try
joining with. This list may or may not include the server answering the query. joining with. This list may or may not include the server answering the query.

@ -30,7 +30,7 @@ using this representation.
value, value,
# Encode code-points outside of ASCII as UTF-8 rather than \u escapes # Encode code-points outside of ASCII as UTF-8 rather than \u escapes
ensure_ascii=False, ensure_ascii=False,
# Remove unecessary white space. # Remove unnecessary white space.
separators=(',',':'), separators=(',',':'),
# Sort the keys of dictionaries. # Sort the keys of dictionaries.
sort_keys=True, sort_keys=True,

@ -39,10 +39,10 @@ thumbnailing method::
<thumbnail> <thumbnail>
The thumbnail methods are "crop" and "scale". "scale" trys to return an The thumbnail methods are "crop" and "scale". "scale" tries to return an
image where either the width or the height is smaller than the requested image where either the width or the height is smaller than the requested
size. The client should then scale and letterbox the image if it needs to size. The client should then scale and letterbox the image if it needs to
fit within a given rectangle. "crop" trys to return an image where the fit within a given rectangle. "crop" tries to return an image where the
width and height are close to the requested size and the aspect matches width and height are close to the requested size and the aspect matches
the requested size. The client should scale the image if it needs to fit the requested size. The client should scale the image if it needs to fit
within a given rectangle. within a given rectangle.
@ -53,8 +53,8 @@ the content. Homeservers may return thumbnails of a different size to that
requested. However homeservers should provide exact matches where reasonable. requested. However homeservers should provide exact matches where reasonable.
Homeservers must never upscale images. Homeservers must never upscale images.
Security Security considerations
-------- -----------------------
Clients may try to upload very large files. Homeservers should not store files Clients may try to upload very large files. Homeservers should not store files
that are too large and should not serve them to clients. that are too large and should not serve them to clients.

@ -70,7 +70,7 @@ Room Rules
Sender Sender
These rules configure notification behaviour for messages from a specific, These rules configure notification behaviour for messages from a specific,
named Matrix user ID. The rule_id of Sender rules is always the Matrix user named Matrix user ID. The rule_id of Sender rules is always the Matrix user
ID of the user whose messages theyt apply to. ID of the user whose messages they'd apply to.
Underride Underride
These are identical to override rules, but have a lower priority than content, These are identical to override rules, but have a lower priority than content,
room and sender rules. room and sender rules.
@ -112,7 +112,7 @@ In addition, all rules may be enabled or disabled. Disabled rules never match.
If no rules match an event, the Home Server should not notify for the message If no rules match an event, the Home Server should not notify for the message
(that is to say, the default action is "dont-notify"). Events that the user sent (that is to say, the default action is "dont-notify"). Events that the user sent
themself are never alerted for. themselves are never alerted for.
Predefined Rules Predefined Rules
---------------- ----------------
@ -128,7 +128,7 @@ with these IDs, their semantics should match those given below:
{ {
"rule_id": ".m.rule.contains_user_name" "rule_id": ".m.rule.contains_user_name"
"pattern": "[the lcoal part of the user's Matrix ID]", "pattern": "[the local part of the user's Matrix ID]",
"actions": [ "actions": [
"notify", "notify",
{ {
@ -220,7 +220,7 @@ with these IDs, their semantics should match those given below:
Push Rules: Actions: Push Rules: Actions:
-------------------- --------------------
All rules have an associated list of 'actions'. An action affects if and how a All rules have an associated list of 'actions'. An action affects if and how a
notification is delievered for a matching event. This standard defines the notification is delivered for a matching event. This standard defines the
following actions, although if Home servers wish to support more, they are free following actions, although if Home servers wish to support more, they are free
to do so: to do so:
@ -241,11 +241,11 @@ set_tweak
Actions that have no parameters are represented as a string. Otherwise, they are Actions that have no parameters are represented as a string. Otherwise, they are
represented as a dictionary with a key equal to their name and other keys as represented as a dictionary with a key equal to their name and other keys as
their parameters, eg. { "set_tweak": "sound", "value": "default" } their parameters, e.g. ``{ "set_tweak": "sound", "value": "default" }``
Push Rules: Actions: Tweaks Push Rules: Actions: Tweaks
--------------------------- ---------------------------
The 'set_tweak' key action is used to add an entry to the 'tweaks' dictionary The ``set_tweak`` key action is used to add an entry to the 'tweaks' dictionary
that is sent in the notification poke. The following tweaks are defined: that is sent in the notification poke. The following tweaks are defined:
sound sound
@ -275,7 +275,7 @@ do so:
event_match event_match
This is a glob pattern match on a field of the event. Parameters: This is a glob pattern match on a field of the event. Parameters:
* 'key': The dot-separated field of the event to match, eg. content.body * 'key': The dot-separated field of the event to match, e.g. content.body
* 'pattern': The glob-style pattern to match against. Patterns with no * 'pattern': The glob-style pattern to match against. Patterns with no
special glob characters should be treated as having asterisks special glob characters should be treated as having asterisks
prepended and appended when testing the condition. prepended and appended when testing the condition.
@ -295,7 +295,7 @@ room_member_count
'>=' or '<='. A prefix of '<' matches rooms where the member count is '>=' or '<='. A prefix of '<' matches rooms where the member count is
strictly less than the given number and so forth. If no prefix is present, strictly less than the given number and so forth. If no prefix is present,
this matches rooms where the member count is exactly equal to the given this matches rooms where the member count is exactly equal to the given
number (ie. the same as '=='). number (i.e. the same as '==').
Room, Sender, User and Content rules do not have conditions in the same way, Room, Sender, User and Content rules do not have conditions in the same way,
but instead have predefined conditions, the behaviour of which can be configured but instead have predefined conditions, the behaviour of which can be configured
@ -314,7 +314,7 @@ scope
Either 'global' or 'device/<profile_tag>' to specify global rules or Either 'global' or 'device/<profile_tag>' to specify global rules or
device rules for the given profile_tag. device rules for the given profile_tag.
kind kind
The kind of rule, ie. 'override', 'underride', 'sender', 'room', 'content'. The kind of rule, i.e. 'override', 'underride', 'sender', 'room', 'content'.
rule_id rule_id
The identifier for the rule. The identifier for the rule.
@ -330,7 +330,7 @@ after
rule. rule.
All requests to the push rules API also require an access_token as a query All requests to the push rules API also require an access_token as a query
paraemter. parameter.
The content of the PUT request is a JSON object with a list of actions under the The content of the PUT request is a JSON object with a list of actions under the
'actions' key and either conditions (under the 'conditions' key) or the 'actions' key and either conditions (under the 'conditions' key) or the

Loading…
Cancel
Save