Merge d4c5696855 into e9f0f31d27
commit
b1c480c865
@ -0,0 +1,83 @@
|
|||||||
|
# MSC4367: `via` routes in the published room directory
|
||||||
|
|
||||||
|
The [published room directory] allows clients to discover rooms on their own or other homeservers.
|
||||||
|
Naturally, clients will want to join rooms found in the directory which requires knowledge of a
|
||||||
|
resident server to facilitate the join. The spec doesn't make it clear how to find such a server,
|
||||||
|
however.
|
||||||
|
|
||||||
|
To begin with, it is unclear whether the endpoints for listing a server's directory may return rooms
|
||||||
|
that the server is not joined to. One example where including such rooms is desirable are
|
||||||
|
directory-only servers like [matrixrooms.info].
|
||||||
|
|
||||||
|
Additionally, there is no recommendation on what `via` parameter clients should use when attempting
|
||||||
|
to join rooms found in the directory. As a result, clients can end up browsing published rooms
|
||||||
|
without being able to join them.[^1]
|
||||||
|
|
||||||
|
This proposal addresses the situation by adding `via` values in the room directory responses.
|
||||||
|
|
||||||
|
## Proposal
|
||||||
|
|
||||||
|
Servers MAY include rooms that they are not joined to in responses returned by the following
|
||||||
|
endpoints:
|
||||||
|
|
||||||
|
- [`GET /_matrix/client/v3/publicRooms`]
|
||||||
|
- [`POST /_matrix/client/v3/publicRooms`]
|
||||||
|
- [`GET /_matrix/federation/v1/publicRooms`]
|
||||||
|
- [`POST /_matrix/federation/v1/publicRooms`]
|
||||||
|
|
||||||
|
To help clients join such rooms, a new required property `via` is added on the `PublishedRoomsChunk`
|
||||||
|
returned by the above endpoints.
|
||||||
|
|
||||||
|
``` json5
|
||||||
|
{
|
||||||
|
"chunk": [
|
||||||
|
{
|
||||||
|
"avatar_url": "mxc://bleecker.street/CHEDDARandBRIE",
|
||||||
|
"room_id": "!ol19s:bleecker.street",
|
||||||
|
"via": [ "bleecker.street" ],
|
||||||
|
...
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Servers MUST populate `via` with at least one resident server of the room or, if they cannot
|
||||||
|
determine any, omit the room from their response.
|
||||||
|
|
||||||
|
Clients SHOULD include the values provided in `via` when subsequently joining rooms with
|
||||||
|
[`POST /_matrix/client/v3/join/{roomIdOrAlias}`].
|
||||||
|
|
||||||
|
Together, the changes above increase the chances that clients can actually join rooms found in the
|
||||||
|
directory.
|
||||||
|
|
||||||
|
## Potential issues
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
|
||||||
|
[MSC4366] deals with the same problem by forbidding unroutable rooms from the local directory. This
|
||||||
|
is only a partial solution, however.
|
||||||
|
|
||||||
|
## Security considerations
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Unstable prefix
|
||||||
|
|
||||||
|
While this MSC is not considered stable, `via` should be referred to as `org.matrix.msc4367.via`.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
[^1]: These issues were initially raised in <https://github.com/matrix-org/matrix-spec/issues/1375>.
|
||||||
|
|
||||||
|
[published room directory]: https://spec.matrix.org/v1.16/client-server-api/#published-room-directory
|
||||||
|
[matrixrooms.info]: https://matrixrooms.info/
|
||||||
|
[`GET /_matrix/client/v3/publicRooms`]: https://spec.matrix.org/v1.16/client-server-api/#get_matrixclientv3publicrooms
|
||||||
|
[`POST /_matrix/client/v3/publicRooms`]: https://spec.matrix.org/v1.16/client-server-api/#post_matrixclientv3publicrooms
|
||||||
|
[`GET /_matrix/federation/v1/publicRooms`]: https://spec.matrix.org/v1.16/server-server-api/#get_matrixfederationv1publicrooms
|
||||||
|
[`POST /_matrix/federation/v1/publicRooms`]: https://spec.matrix.org/v1.16/server-server-api/#post_matrixfederationv1publicrooms
|
||||||
|
[`POST /_matrix/client/v3/join/{roomIdOrAlias}`]: https://spec.matrix.org/v1.16/client-server-api/#post_matrixclientv3joinroomidoralias
|
||||||
|
[MSC4366]: https://github.com/matrix-org/matrix-spec-proposals/pull/4366
|
||||||
Loading…
Reference in New Issue