pull/4367/merge
Johannes Marbach 1 week ago committed by GitHub
commit b1c480c865
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -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…
Cancel
Save