|
|
|
Matrix Specification
|
|
|
|
====================
|
|
|
|
|
|
|
|
.. Note that this file is specifically unversioned because we don't want to
|
|
|
|
.. have to add Yet Another version number, and the commentary on what specs we
|
|
|
|
.. have should hopefully not get complex enough that we need to worry about
|
|
|
|
.. versioning it.
|
|
|
|
|
|
|
|
This specification has been generated from
|
|
|
|
https://github.com/matrix-org/matrix-doc using
|
|
|
|
https://github.com/matrix-org/matrix-doc/blob/master/scripts/gendoc.py as of
|
|
|
|
revision ``{{git_version}}`` -
|
|
|
|
https://github.com/matrix-org/matrix-doc/tree/{{git_rev}}.
|
|
|
|
|
|
|
|
There is an `introduction and overview to the specification here <intro.html>`_.
|
|
|
|
|
|
|
|
The following APIs are documented in this specification:
|
|
|
|
|
|
|
|
- `Client-Server API <client_server.html>`_ version %CLIENT_RELEASE_LABEL% for writing Matrix clients.
|
|
|
|
- `Server-Server API <server_server.html>`_ version %SERVER_RELEASE_LABEL% for writing servers which can federate with Matrix.
|
|
|
|
- `Application Service API <application_service.html>`_ version %CLIENT_RELEASE_LABEL% for writing privileged plugins to servers.
|
|
|
|
|
|
|
|
There are also some `appendices <appendices.html>`_.
|
|
|
|
|
|
|
|
Any developments since the latest release can be found `here`__.
|
|
|
|
|
|
|
|
.. __: https://matrix.org/speculator/spec/head/
|
|
|
|
|
|
|
|
Old releases of the spec:
|
|
|
|
|
|
|
|
- `r0.0.1 <https://matrix.org/docs/spec/r0.0.1>`_
|
|
|
|
- `r0.0.0 <https://matrix.org/docs/spec/r0.0.0>`_
|
|
|
|
|
|
|
|
Before we formally started releasing the specification, the last working copy
|
|
|
|
we had can be found `here`__.
|
|
|
|
|
|
|
|
.. __: https://matrix.org/docs/spec/legacy/
|
|
|
|
|
|
|
|
Versioning
|
|
|
|
----------
|
|
|
|
|
|
|
|
The specifications are each versioned in the form ``rX.Y.Z``.
|
|
|
|
|
|
|
|
Changes to ``X`` and ``Y`` should not be assumed to be compatible with any other version.
|
|
|
|
|
|
|
|
For a fixed ``X`` and ``Y``, any ``Z`` should be assumed to be compatible with any lesser ``Z``.
|
|
|
|
|
|
|
|
For example, it is safe to assume that a server which claims to implement ``r0.1.2`` supports ``r0.1.0``, but not vice-versa.
|