Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSC1753: client-server capabilities API #1753

Merged
merged 7 commits into from
Jan 9, 2019
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions proposals/1753-capabilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,49 @@ query and the response.
Clients will need to be aware of servers which do not support the new endpoint,
and fall back to their current behaviour if they receive a 404 response.

### Suitable applications

In general, capabilities advertised via this endpoiunt should depend in some
way on the state of the user or server - in other words, they will inherently
richvdh marked this conversation as resolved.
Show resolved Hide resolved
"optional" features in the API.

This endpoint should *not* be used to advertise support for experimental or
unstable features, which is better done via `/client/r0/versions` (see
richvdh marked this conversation as resolved.
Show resolved Hide resolved
[MSC1497](https://github.com/matrix-org/matrix-doc/issues/1497)).

Examples of features which might reasonably be advertised here include:

* Whether the server supports user presence.

* Whether the server supports other optional features. The following could be
made optional via this mechanism:
* Room directory
* URL previews

* Policy restricitions, such as:
* Whether certain types of content are permitted on this server.
* The number of rooms you are allowed in.
* Configured ratelimits.


Features which might be better advertised elsewhere include:

* Support for e2e key backups
([MSC1219](https://github.com/matrix-org/matrix-doc/issues/1219)) - list in
`/client/r0/versions`.
richvdh marked this conversation as resolved.
Show resolved Hide resolved

* Support for lazy-loading of room members - list in `/client/r0/versions`.
richvdh marked this conversation as resolved.
Show resolved Hide resolved

* Media size limits - list in `/media/r0/config`, because the media server may
be a separate process.

* Optional transports/encodings for the CS API - probably better handled via
HTTP headers etc.

* Variations in room state resolution - this is implied via the room version
(which is in the `m.room.create` event).


## Tradeoffs
richvdh marked this conversation as resolved.
Show resolved Hide resolved

One alternative would be to provide specific ways of establishing support for
Expand Down