mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-04-03 09:44:10 +02:00
Add federation and reword a bit.
This commit is contained in:
parent
8082b2f813
commit
4933ecd176
|
|
@ -79,7 +79,8 @@ recommends including the `m.room.create` event as one of the stripped state even
|
||||||
This proposal includes a few aspects which are dealt with separately:
|
This proposal includes a few aspects which are dealt with separately:
|
||||||
|
|
||||||
1. Generalizing when a user is allowed to view the stripped state of a room.
|
1. Generalizing when a user is allowed to view the stripped state of a room.
|
||||||
2. A consistent recommendation for which events to include in the stripped state.
|
2. A consistent definition of stripped state and a recommendation for which
|
||||||
|
events to include in the stripped state.
|
||||||
3. Providing a dedicated API for accessing the stripped state of the room.
|
3. Providing a dedicated API for accessing the stripped state of the room.
|
||||||
|
|
||||||
### Accessing the stripped state of a room
|
### Accessing the stripped state of a room
|
||||||
|
|
@ -102,12 +103,21 @@ should consider this MSC, for example:
|
||||||
proposes allowing users to join a room based on their membership in a space (as defined in
|
proposes allowing users to join a room based on their membership in a space (as defined in
|
||||||
[MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772)).
|
[MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772)).
|
||||||
|
|
||||||
### Events to include in the stripped state
|
### Stripped state definitions and recommended events
|
||||||
|
|
||||||
It is also proposed to create a single definition for what stripped state events
|
It is also proposed to create a single definition of what the stripped state of
|
||||||
should be provided to be potential joiners. Thus, it is recommended (although not
|
a room is and for what events should be included in the stripped state to be
|
||||||
required<sup id="a0">[0](#f0)</sup>) that homeserver implementations include the
|
potential joiners.
|
||||||
following as stripped state events:
|
|
||||||
|
The stripped state of a room is a list of simplified state events to help a
|
||||||
|
potential joiner identify the room. These state events may only have the
|
||||||
|
`sender`, `type`, `state_key` and `content` keys present. These events do not
|
||||||
|
replace any state that the client already has for the room, for example if the
|
||||||
|
client has archived the room.
|
||||||
|
|
||||||
|
It is recommended (although not required<sup id="a0">[0](#f0)</sup>) that
|
||||||
|
homeserver implementations include the following events as part of the stripped
|
||||||
|
state of a room:
|
||||||
|
|
||||||
* Create event (`m.room.create`)<sup id="a1">[1](#f1)</sup>
|
* Create event (`m.room.create`)<sup id="a1">[1](#f1)</sup>
|
||||||
* Join rules (`m.room.join_rules`)
|
* Join rules (`m.room.join_rules`)
|
||||||
|
|
@ -119,7 +129,9 @@ following as stripped state events:
|
||||||
|
|
||||||
### Stripped state API
|
### Stripped state API
|
||||||
|
|
||||||
`GET /_matrix/client/r0/rooms/{roomId}/stripped_state`
|
#### Client-server API
|
||||||
|
|
||||||
|
`GET /_matrix/client/r0/rooms/{roomIdOrAlias}/stripped_state`
|
||||||
|
|
||||||
A dedicated API is provided to query for the stripped state of a room. As
|
A dedicated API is provided to query for the stripped state of a room. As
|
||||||
described above, any potential joiner may access the stripped state of a room
|
described above, any potential joiner may access the stripped state of a room
|
||||||
|
|
@ -128,19 +140,26 @@ may access the stripped state, as it is a strict subset of the state).
|
||||||
|
|
||||||
This API is rate-limited and does not require authentication.
|
This API is rate-limited and does not require authentication.
|
||||||
|
|
||||||
The request format follows [the `/state`](https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-rooms-roomid-state)
|
The request format follows [the `/state` endpoint](https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-rooms-roomid-state),
|
||||||
endpoint.
|
but with the addition of handling a `server_name` query parameter (as
|
||||||
|
specified for [the `/join/{roomIdOrAlias}` endpoint](https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-join-roomidoralias)).
|
||||||
|
|
||||||
The response body includes an array of `StrippedState`, as
|
The response body includes an array of `StrippedState`, as
|
||||||
[described in the `/sync` response](https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-sync).
|
[described in the `/sync` response](https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-sync).
|
||||||
|
|
||||||
#### Example request:
|
If the homeserver does not know the state of the requested room it should use
|
||||||
|
the corresponding federation API to request the stripped state from another
|
||||||
|
homeserver.
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
##### Example request:
|
||||||
|
|
||||||
`GET /_matrix/client/r0/rooms/%21636q39766251%3Aexample.com/stripped_state HTTP/1.1`
|
`GET /_matrix/client/r0/rooms/%21636q39766251%3Aexample.com/stripped_state HTTP/1.1`
|
||||||
|
|
||||||
#### Responses:
|
##### Responses:
|
||||||
|
|
||||||
##### Status code 200:
|
###### Status code 200:
|
||||||
|
|
||||||
The current stripped state of the room
|
The current stripped state of the room
|
||||||
|
|
||||||
|
|
@ -174,10 +193,33 @@ The current stripped state of the room
|
||||||
Note that this is the same example as [the `/state` endpoint](https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-rooms-roomid-state),
|
Note that this is the same example as [the `/state` endpoint](https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-rooms-roomid-state),
|
||||||
but limited to what would be returned as stripped state.
|
but limited to what would be returned as stripped state.
|
||||||
|
|
||||||
##### Status code 403:
|
###### Status code 403:
|
||||||
|
|
||||||
You are not a member of the room, a potential joiner, and the room is not publicly viewable.
|
You are not a member of the room, a potential joiner, and the room is not publicly viewable.
|
||||||
|
|
||||||
|
#### Server-server API
|
||||||
|
|
||||||
|
`GET /_matrix/federation/v1/stripped_state/{roomId}`
|
||||||
|
|
||||||
|
Retrieve the stripped state of a room, this is essentially identical to the
|
||||||
|
client-server API, but will not reach out over federation.
|
||||||
|
|
||||||
|
Path parameters:
|
||||||
|
|
||||||
|
* `roomId` - **Required.** The room ID to get state for.
|
||||||
|
|
||||||
|
Response format:
|
||||||
|
|
||||||
|
* `stripped_state` - `[StrippedState]` A list of simplified events to help identify the room.
|
||||||
|
|
||||||
|
The form of `StrippedState` is as defined in
|
||||||
|
[the `/invite/{roomId}/{eventId}` endpoint](https://matrix.org/docs/spec/server_server/latest#put-matrix-federation-v2-invite-roomid-eventid).
|
||||||
|
|
||||||
|
The stripped state should be returned to the requesting server if the host has
|
||||||
|
a potential joiner, e.g. if the room has `join_rules` set to `public` or any
|
||||||
|
user on the request server is in possession of an invite to the room. The
|
||||||
|
requesting server is responsible for filtering the returned data to the client.
|
||||||
|
|
||||||
## Potential issues
|
## Potential issues
|
||||||
|
|
||||||
This is a generalization of current behavior and shouldn't introduce any new issues.
|
This is a generalization of current behavior and shouldn't introduce any new issues.
|
||||||
|
|
@ -222,7 +264,10 @@ for potential joiners due to membership in a space.
|
||||||
|
|
||||||
## Unstable prefix
|
## Unstable prefix
|
||||||
|
|
||||||
N/A
|
| Stable Endpoint | Unstable Endpoint |
|
||||||
|
|---|---|
|
||||||
|
| `/_matrix/client/r0/rooms/{roomIdOrAlias}/stripped_state` | `/_matrix/client/unstable/org.matrix.msc3173/rooms/{roomIdOrAlias}/stripped_state` |
|
||||||
|
| `/_matrix/federation/v1/stripped_state/{roomId}` | `/_matrix/federation/unstable/org.matrix.msc3173/stripped_state/{roomId}` |
|
||||||
|
|
||||||
## Footnotes
|
## Footnotes
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue