Commit graph

217 commits

Author SHA1 Message Date
Richard van der Hoff 55c4307f12 Rewrite the section on signing events
... for clarity and de-duplication. And to say a bit about validating the
signatures.
2018-08-30 14:37:24 +01:00
Travis Ralston f2d02c9559 Take out device management section for now
This will be handled by the implementation of https://github.com/matrix-org/matrix-doc/issues/1212
2018-08-29 14:37:30 -06:00
Travis Ralston 5ff244f06b More clarification about how /state_ids works 2018-08-29 09:00:46 -06:00
Travis Ralston de36d97839 Clarify which event is actually be excluded from /state_ids 2018-08-29 08:53:20 -06:00
Travis Ralston dad037170a Clarify that the requested event is excluded from /state and /state_ids
Fixes https://github.com/matrix-org/matrix-doc/issues/1564
2018-08-28 15:45:50 -06:00
Erik Johnston fc1fdc95af Specify a limit on the number of EDUs and PDUs a transaction can contain 2018-08-28 17:29:58 +01:00
Travis Ralston 8069981252 Add federation /user/* endpoints
Fixes https://github.com/matrix-org/matrix-doc/issues/1438
2018-08-27 14:19:10 -06:00
Travis Ralston 017d6db737 Document third party network/protocol directories (for appservices)
Fixes https://github.com/matrix-org/matrix-doc/issues/869
2018-08-24 11:07:30 -06:00
Travis Ralston 3869f68a5c Merge remote-tracking branch 'matrix-org/master' into travis/general/room-versions 2018-08-21 12:22:35 -06:00
Travis Ralston 1d7ea314d4
Merge pull request #1482 from turt2live/travis/s2s/presence
Document how presence EDUs work between servers
2018-08-21 11:26:32 -06:00
Travis Ralston e500e2502a Document the maximum value for depth
Implements the proposal for https://github.com/matrix-org/matrix-doc/issues/1230
2018-08-21 09:38:01 -06:00
Travis Ralston 8b65da1cf6 Don't try and be fancy about titles 2018-08-20 11:07:10 -06:00
Travis Ralston e712466dca Improve description for currently_active 2018-08-20 10:44:28 -06:00
Travis Ralston a4015d5c27 Spelling 2018-08-17 10:58:20 -06:00
Travis Ralston 750d4f9fda Rename the presence EDU files to be accurate to their types; Misc cleanup of titles 2018-08-17 10:53:47 -06:00
Travis Ralston ebca4c7d86 Merge remote-tracking branch 'matrix-org/master' into travis/s2s/presence 2018-08-17 09:53:57 -06:00
Travis Ralston 21dc6f823a
Merge pull request #1484 from turt2live/travis/s2s/read-receipts
Document how read receipts work over federation
2018-08-17 09:50:40 -06:00
Travis Ralston c492fe43b5 Add strict typing to the m.receipt EDU; Fix description of event_ids 2018-08-17 09:46:31 -06:00
Travis Ralston 96896fe5d6 Add a strict type the m.typing EDU 2018-08-17 09:34:50 -06:00
Travis Ralston a53fa9300d Merge remote-tracking branch 'matrix-org/master' into travis/s2s/presence 2018-08-17 09:34:16 -06:00
Travis Ralston 766402a702 Use strict types for the presence EDUs 2018-08-17 09:34:08 -06:00
Travis Ralston 549a25cad9 Add a mention about how currently_active works
Reference: d69decd5c7/synapse/handlers/presence.py (L66-L68)
2018-08-17 09:33:40 -06:00
Travis Ralston e7aed3da26 Remove poll/unpoll from presence 2018-08-17 09:16:39 -06:00
Travis Ralston 49ec0a36a8
Merge pull request #1481 from turt2live/travis/s2s/authentication
Define authorization requirements on federation swagger APIs
2018-08-17 09:01:39 -06:00
Travis Ralston 4b9922b641
Merge pull request #1494 from turt2live/travis/general/openid
Document OpenID in the client-server and server-server APIs
2018-08-17 08:57:33 -06:00
Travis Ralston 2aa0e7b00f
Merge pull request #1483 from turt2live/travis/s2s/typing
Document how typing notifications work over federation
2018-08-16 10:09:21 -06:00
Travis Ralston fde48e7ee8 Specify how room versioning works
This is the spec PR for https://github.com/matrix-org/matrix-doc/issues/1425

Room version upgrades are not part of MSC1425.

Documented aspects:
* room_version on the create event
* creating a room with a specific version (useful for testing)
* make_join behaviour
* error code documentation
* grammar of room versions

Based upon https://docs.google.com/document/d/1urKgReoHqxX8R_XtySB17dPi-DZcKhqTEL2_s895Wz0/edit
2018-08-15 15:12:36 -06:00
Travis Ralston a556e33eb9 Spec /3pid/onbind
Fixes https://github.com/matrix-org/matrix-doc/issues/1422
2018-08-13 16:59:36 -06:00
Travis Ralston 25c77ab2d0 Define authorization requirements on federation swagger APIs 2018-08-09 08:37:35 -06:00
Travis Ralston 56dbeeb22a
Merge pull request #1469 from turt2live/travis/s2s/backfill
Improve documentation for backfilling rooms
2018-08-09 08:00:43 -06:00
Travis Ralston 721be47eb1 Describe how get_missing_events actually works
The original text wasn't far off, except for being wrong about what the fields actually do. This commit also adds a bit of clarity for how the server is expected to behave.
2018-08-08 08:39:59 -06:00
Travis Ralston 0a7e670715 Document how typing notifications work over federation
Relevant synapse code: d69decd5c7/synapse/handlers/typing.py (L221-L230)
2018-08-08 08:28:52 -06:00
Travis Ralston e03bfbc47b Document how read receipts work over federation
Federation format: d69decd5c7/synapse/handlers/receipts.py (L153-L166)

Population of the fields that the above uses to construct the EDU: d69decd5c7/synapse/handlers/receipts.py (L48-L56)
2018-08-08 08:27:22 -06:00
Travis Ralston 05a2427c73 Document how presence EDUs work between servers
It's worth noting that Synapse does not make use of the `poll` or `unpoll` fields, and therefore the wording has been updated to permit servers to reject users. In the case of synapse, it would automatically reject everyone in the list by nature of ignoring it.
2018-08-08 08:24:09 -06:00
Travis Ralston a77975ba68
Merge pull request #1450 from turt2live/travis/s2s/inviting-rooms
Improve documentation for how non-third party invites work
2018-08-08 08:19:50 -06:00
Travis Ralston 0f8954d839
Merge pull request #1463 from turt2live/travis/s2s/pdus-and-edus
Improve documentation around EDUs and PDUs
2018-08-08 08:02:37 -06:00
Travis Ralston 57eeddd849 Remove unused origin and destination on EDUs 2018-08-08 07:43:22 -06:00
Travis Ralston dcae88c290 Document OpenID in the server-server API
Part of https://github.com/matrix-org/matrix-doc/issues/857

Reference: d69decd5c7/synapse/federation/transport/server.py (L543-L557)
2018-08-07 22:13:21 -06:00
Travis Ralston cfdbee5fc2 EDU origin and destinations aren't required 2018-08-07 14:21:01 -06:00
Travis Ralston 7ada91787a age_ts isn't real 2018-08-07 14:20:46 -06:00
Travis Ralston 521dcdd5d5 Merge remote-tracking branch 'matrix-org/master' into travis/s2s/backfill 2018-08-07 08:54:25 -06:00
Travis Ralston 35f15ba3d8
Merge pull request #1477 from turt2live/travis/s2s/public-rooms
Document the /publicRooms endpoint for federation
2018-08-07 08:31:10 -06:00
Travis Ralston 8724ed99ad
Merge pull request #1480 from turt2live/travis/s2s/swagger-consumes-json
Specify which federation swagger APIs consume JSON
2018-08-07 08:30:34 -06:00
Travis Ralston e10770ae8b
Merge pull request #1475 from turt2live/travis/s2s/event-auth
Document /event_auth and /query_auth
2018-08-07 08:30:22 -06:00
Travis Ralston ef9d766dc3 Remove irrelevant TODO
We fixed the EDU, so we don't need this comment.
2018-08-03 14:51:46 -06:00
Travis Ralston 2e6d6e2790 Specify which swagger APIs consume JSON 2018-08-03 14:01:33 -06:00
Travis Ralston 8dd63388e0 invites consume JSON 2018-08-03 13:58:27 -06:00
Travis Ralston 13a2b54bf9 query_auth consumes JSON 2018-08-03 13:57:43 -06:00
Travis Ralston 6ac25d167c get_missing_events consumes JSON 2018-08-03 13:57:13 -06:00
Travis Ralston 2ac80d38d7 Document the /publicRooms endpoint for federation
This intentionally doesn't document the third party network aspect of the endpoint. This is scheduled for a later area for dealing with third party network/IDs and is reported as https://github.com/matrix-org/matrix-doc/issues/1476

The client-server response has been broken out to a shared file: both the client-server and server-server /publicRoom endpoints return the same thing, with slightly different inputs.

The inputs (and behaviour) are based upon the docstring here: 43ecfe0b10/synapse/federation/transport/server.py (L583-L612)
2018-08-03 11:23:44 -06:00
Travis Ralston 73958ecbff Document /event_auth and /query_auth
/event_auth is a fairly easy endpoint to determine the use case of. /query_auth is a little harder to investigate and has a fairly interesting purpose: it appears to be used for the sending server to admit defeat and shop around for the right auth chain, correcting it's own perspective as it goes.

/query_auth is based off the following research points in synapse:
* 43ecfe0b10/synapse/handlers/federation.py (L1947-L1990)
* 43ecfe0b10/synapse/handlers/federation.py (L2049-L2187)
* 43ecfe0b10/synapse/handlers/federation.py (L1716-L1761)
* 43ecfe0b10/synapse/federation/federation_server.py (L393-L446)
* https://github.com/matrix-org/synapse/blob/master/synapse/federation/transport/server.py#L482-L487
2018-08-03 09:27:19 -06:00
Travis Ralston 6b67d501e4
Merge branch 'master' into travis/s2s/query 2018-08-03 08:55:21 -06:00
Travis Ralston 3a9fb11c9b
Merge branch 'master' into travis/s2s/backfill 2018-08-03 08:54:40 -06:00
Travis Ralston 1578da453b
Merge branch 'master' into travis/s2s/get-event 2018-08-03 08:01:43 -06:00
Travis Ralston 86d7f42173
Merge pull request #1455 from turt2live/travis/s2s/leaving-rooms
Document how leaving rooms/rejecting invites over federation works
2018-08-03 08:00:56 -06:00
Travis Ralston d48f1e1713
Merge pull request #1461 from turt2live/travis/s2s/transactions
Improve documentation on how Transactions work
2018-08-03 07:38:45 -06:00
Travis Ralston cda88f3b3d Document /get_missing_events
Fixes https://github.com/matrix-org/matrix-doc/issues/1385
2018-08-02 23:18:08 -06:00
Travis Ralston e766606f24 join -> leave 2018-08-02 18:54:12 -06:00
Travis Ralston 0b313dbdd9 Don't explain what a 400 Bad Request is 2018-08-02 18:47:17 -06:00
Travis Ralston 05bb7e1050 Spelling and word choice 2018-08-02 18:45:59 -06:00
Travis Ralston 53d4003d3a manual merge of master into travis/s2s/query 2018-08-02 16:48:32 -06:00
Travis Ralston 48972addbf
Merge pull request #1428 from turt2live/travis/s2s/joining-rooms
Improve the documentation for joining rooms
2018-08-02 16:44:31 -06:00
Travis Ralston 5596243add origin is required 2018-08-02 16:43:24 -06:00
Travis Ralston 8b7bc60367 list -> array 2018-08-02 16:42:03 -06:00
Travis Ralston 9d474bb819 Document event retrieval endpoints in more detail
This also adds a previously-undocumented endpoint: /state_ids

Backfill is technically not part of this section, however it is being left untouched to make the merge with #1469 easier (which moves it out of the file).

Reference material:
* Some calls to synapse on these endpoints with a relatively simple private room.
2018-08-02 12:44:54 -06:00
Travis Ralston 4b1955f395 Clarify what the auth_events on a PDU are 2018-08-02 12:06:43 -06:00
Travis Ralston 5aef545128 Improve documentation for backfilling rooms
There's not a whole lot to improve here - most of the changes are about reorganization and minor clarifications.
2018-08-01 13:31:23 -06:00
Travis Ralston d0e8df8f3f prev_content is an object 2018-07-31 14:02:04 -06:00
Travis Ralston 5027a9a59a Improve documentation around EDUs and PDUs
Clarify fields, improve examples, and make the tables in the spec be generated rather than duplicated.
2018-07-31 13:58:23 -06:00
Travis Ralston 7679b4f1d1 Improve documentation on how Transactions work
The response is based upon various sections of the Synapse code in how it generates a response.

There are no new fields added to the transaction. Originally, `previous_ids` and `pdu_failures` were to be documented however neither of these are used in the real world.
2018-07-30 16:58:13 -06:00
Travis Ralston 73b0a03b9b Remove more padding 2018-07-27 08:39:15 -06:00
Travis Ralston cafd1a9ab3 Use more modern timestamps 2018-07-26 16:46:33 -06:00
Travis Ralston e27f4a69a0 Key versions must be [0-9a-zA-Z_] 2018-07-26 16:46:13 -06:00
Travis Ralston bdccfca726 Timestamps should be in milliseconds 2018-07-26 16:43:43 -06:00
Travis Ralston cad1db2a14 Unpadded means unpadded 2018-07-26 16:43:16 -06:00
Travis Ralston 9dbb627d7b Undo accidental changes to the operation ID 2018-07-26 16:42:40 -06:00
Travis Ralston 2f71703427 Deprecate key ID querying 2018-07-26 16:42:21 -06:00
Travis Ralston 9fdd8a6f96 Document how leaving rooms/rejecting invites over federation works
Fixes https://github.com/matrix-org/matrix-doc/issues/1401

This is very similar to the joining rooms handshake, and much of it is a near copy/paste of the make_join and send_join API. The major difference is the send_leave API doesn't return anything.

References:
* Handling of make_leave: d69decd5c7/synapse/handlers/federation.py (L1285-L1310)
* send_leave route: d69decd5c7/synapse/federation/transport/client.py (L267)
* make_leave route: d69decd5c7/synapse/federation/transport/server.py (L396)
* send_leave returning nothing: d69decd5c7/synapse/handlers/federation.py (L1346)
2018-07-26 14:59:43 -06:00
Travis Ralston fcaa299f81 Include information on how invite_room_state works
This is completely optional, and the events included are up to the sender. 

Sources:
* Structure: d69decd5c7/synapse/handlers/message.py (L896-L904)
* What events are recommended: d69decd5c7/synapse/config/api.py (L30-L40)
2018-07-26 08:44:10 -06:00
Travis Ralston f873bae0cc Improve documentation for how non-third party invites work
The details are fairly straightforward. An `event` has been added to the response body because that's what Synapse returns, despite the spec saying otherwise until now: d69decd5c7/synapse/federation/federation_server.py (L339)
2018-07-26 08:44:10 -06:00
Travis Ralston c2f1c6e78d Improve the joining rooms handshake documentation
There isn't a whole lot to this section that needed work. The section overall lost the table schema in favour of having the endpoints close by.

The directory query is improved in https://github.com/matrix-org/matrix-doc/pull/1443
2018-07-26 08:43:08 -06:00
Travis Ralston 8e97b0ca81 Improve the server key exchange portion of the s2s specification
Most of the text has been shuffled into the swagger definitions to bring it closer to where it matters.

This also attempts to clarify what is out in the wild. Most importantly, the first version of the key exchange is outright removed from the specification. Other research points/questions are:

* What is a "Key ID"?
  * 1241156c82/synapse/rest/key/v2/local_key_resource.py (L81-L83)
  * 1241156c82/synapse/rest/key/v2/local_key_resource.py (L88-L91)
* Returning a cached response if the server throws a 400, 500, or otherwise not-offline status code
  * 1241156c82/synapse/rest/key/v2/remote_key_resource.py (L227-L229)
* `minimum_valid_until_ts` default
  * This branch of the ladder: 1241156c82/synapse/rest/key/v2/remote_key_resource.py (L192)
* Returning empty arrays when querying offline/no servers
  * Queried by hand against matrix.org as a notary server with a fake domain name to query
* Returning all keys even when querying for specific keys
  * Queried by hand using matrix.org as a notary server against a server publishing multiple keys.

The examples and descriptions were also improved as part of this commit.
2018-07-26 08:41:00 -06:00
Travis Ralston d914c402e2 Improve the profile query to have more sane responses
This is a mix of Synapse and Dendrite behaviour, mostly Dendrite. Synapse returns `null` for field values that aren't set, however Dendrite just doesn't return them and instead opts for an empty object.

Further, synapse is lacking in error codes in this area. Dendrite does some additional validation on this API which introduces more errors for bad requests, instead of defaulting to empty objects/200 OK responses.

Likewise, Dendrite returns a 404 when the user is not found while Synapse returns 200 OK/empty object.
2018-07-26 08:40:39 -06:00
Travis Ralston 0ddf578b61 Combine all queries into their own section
This removes the Directory and Profile sections, instead opting to document them as Queries. 

The behaviour of profile queries is based on Synapse's behaviour. A few issues have been opened to improve the behaviour:
* https://github.com/matrix-org/matrix-doc/issues/1434
* https://github.com/matrix-org/matrix-doc/issues/1435
* https://github.com/matrix-org/matrix-doc/issues/1436
* https://github.com/matrix-org/matrix-doc/issues/1437

This fixes https://github.com/matrix-org/matrix-doc/issues/1404
2018-07-26 08:40:39 -06:00
Travis Ralston b0744aa1e9
Merge pull request #1413 from turt2live/travis/s2s/join-swagger
Convert joins/invites to swagger
2018-07-26 08:39:26 -06:00
Travis Ralston af0629a520 Full stop 2018-07-26 08:36:12 -06:00
Travis Ralston 9f399a08fe Full stops
I'm never going to remember these
2018-07-24 14:41:42 -06:00
Travis Ralston 0d1b82a601 Add the event_id to unsigned PDUs
This went missing in the swagger conversion. The example already has an event_id.
2018-07-24 14:40:32 -06:00
Travis Ralston eaf175056f Full stops 2018-07-24 10:58:15 -06:00
Travis Ralston 7314405904 Update comment 2018-07-24 10:58:15 -06:00
Travis Ralston 45ec8269e6 Fill out the required fields in all the examples 2018-07-24 10:58:15 -06:00
Travis Ralston 9c1c541a38 Remove extra "required" declarations
"required" is something that is handled as an array, and these are invalid. The `type` in both cases is covered by a required array elsewhere
2018-07-24 10:58:15 -06:00
Travis Ralston 004998b98f Convert invites to swagger
The whole section reads like a description for the endpoint, and has been replaced by the swagger definition now (rather than at a later stage). All the same information should be kept.
2018-07-24 10:58:15 -06:00
Travis Ralston f09c4fd286 Convert joins to swagger 2018-07-24 10:58:15 -06:00
Travis Ralston cb4fcd1d09 Merge remote-tracking branch 'matrix-org/master' into travis/s2s/transactions-swagger 2018-07-24 09:15:36 -06:00
Travis Ralston 88beaf4ad8 Completely remove /pull
It's not been in use for years - we can safely let it disappear
2018-07-24 09:13:46 -06:00
Travis Ralston 21c4af70a9 Fix schema definitions (spelling, attributes) 2018-07-24 09:13:15 -06:00
Travis Ralston 2aafde4549
Merge pull request #1419 from turt2live/travis/s2s/3pinvites-swagger
Convert third party invite exchange to swagger
2018-07-23 10:33:00 -06:00
Travis Ralston 89384c96c1 Full stops, language. 2018-07-18 11:06:23 -06:00
Travis Ralston e226b60c7f Merge remote-tracking branch 'matrix-org/master' into travis/s2s/transactions-swagger 2018-07-18 10:59:39 -06:00
Travis Ralston bafdcf3640 Full stops, spelling, and operation IDs. 2018-07-18 10:37:56 -06:00
Travis Ralston 7cb918407d Merge remote-tracking branch 'matrix-org/master' into travis/s2s/keys-swagger 2018-07-18 10:32:46 -06:00
Travis Ralston 272f3d8432 Fix documentation link 2018-07-13 15:49:49 -06:00
Travis Ralston cf93c88337 Convert third party invite exchange to swagger 2018-07-13 15:44:33 -06:00
Travis Ralston e5da1e1741 Improve upon the transaction schema and examples
Reduces data duplication and makes the objects more reusable for other areas of the spec
2018-07-12 21:34:52 -06:00
Travis Ralston 51faf8ed2e Convert the general query API to swagger
Includes "moving" the directory query API into the same area. This will make more sense once the other query types are specified.
2018-07-12 13:46:42 -06:00
Travis Ralston 374ec00046 Convert things that mention "Transaction" to swagger
There's two kinds of transactions currently: one with EDUs and one without. The one with EDUs is only used on /send, however the schema is still somewhat worth splitting out for simplicity.

The examples are brought apart to make them slightly more reusable for when they get dumped into the relevant sections of the spec (see TODO in server_server_api.rst)

Further, the Transactions stuff introduces tuples to the spec. The units.py has been updated to support this.
2018-07-11 16:52:27 -06:00
Travis Ralston 3e13ec2841 Fix required properties in POST /query 2018-07-11 13:43:15 -06:00
Travis Ralston 96889f16e9 Split out and fix the /server and /query key APIs 2018-07-11 13:20:44 -06:00
Travis Ralston bd2c0b7c98 Convert server keys to swagger 2018-07-11 13:09:19 -06:00
user 5ab5fe08d1 Small grammatical and stylistic fixes 2018-06-17 15:49:39 +01:00
Maxime Dor 9d2e18cca1 Adapt paths as per feedback 2017-11-15 18:46:27 +01:00
Maxime Dor d1e64daa10 Fix yaml title for directory api 2017-11-15 18:43:16 +01:00
Maxime Dor 28c09aed62 Properly mark required response keys to pass tests 2017-11-15 13:57:52 +01:00
Maxime Dor 8a6103798e Fix for tests 2017-11-15 13:54:55 +01:00
Maxime Dor bb50ec2e88 Document directory query endpoint 2017-11-15 13:40:55 +01:00
Maxime Dor 1045bc721d Document federation version endpoint 2017-11-15 04:16:30 +01:00