3.5 KiB
| title | type | weight | version |
|---|---|---|---|
| Room Version 8 | docs | 80 | 8 |
This room version builds on version 7 to introduce a new join rule that allows members to join the room based on membership in another room.
{{% boxes/warning %}} This room version is known to have issues relating to redactions of member join events. Room version 9 should be preferred over v8 when creating rooms. {{% /boxes/warning %}}
Client considerations
Clients are encouraged to expose the option for the join rule in their user interface for supported room versions.
The new join rule, restricted, is described in the
Client-Server API.
Clients which implement the redaction algorithm locally should refer to the redactions section below for a full overview.
Redactions
{{% added-in v=8 %}} m.room.join_rules events now keep allow in addition to other
keys in content when being redacted.
{{% boxes/warning %}} Room version 9 adds additional cases of protected properties for behaviour related to restricted rooms (the functionality introduced in v8). v9 is preferred over v8 when creating new rooms. {{% /boxes/warning %}}
The full redaction algorithm follows.
Upon receipt of a redaction event, the server must strip off any keys not in the following list:
event_idtyperoom_idsenderstate_keycontenthashessignaturesdepthprev_eventsprev_stateauth_eventsoriginorigin_server_tsmembership
The content object must also be stripped of all keys, unless it is one of one of the following event types:
m.room.memberallows keymembership.m.room.createallows keycreator.m.room.join_rulesallows keysjoin_rule,allow.m.room.power_levelsallows keysban,events,events_default,kick,redact,state_default,users,users_default.m.room.history_visibilityallows keyhistory_visibility.
Server implementation components
{{% boxes/warning %}} The information contained in this section is strictly for server implementors. Applications which use the Client-Server API are generally unaffected by the intricacies contained here. The section above regarding client considerations is the resource that Client-Server API use cases should reference. {{% /boxes/warning %}}
Room version 8 adds a new join rule to allow members of a room to join another room without invite. Otherwise, the room version inherits all properties of Room version 7.
Authorization rules
{{< added-in v=8 >}} For checks performed upon m.room.member events, new
points for handling content.join_authorised_via_users_server are added (Rule 4.2
and 4.3.5).
{{% rver-fragment name="v8-auth-rules" %}}
Redactions
Unchanged from v7
The following sections have not been modified since v7, but are included for completeness.
Handling redactions
{{% rver-fragment name="v3-handling-redactions" %}}
Event IDs
{{% rver-fragment name="v4-event-ids" %}}
Event format
{{% rver-fragment name="v4-event-format" %}}
Deprecated event content schemas
{{% rver-fragment name="v1-deprecated-formatting-off-spec" %}}
{{% rver-fragment name="v1-stringy-power-levels" %}}
State resolution
{{% rver-fragment name="v2-state-res" %}}
Canonical JSON
{{% rver-fragment name="v6-canonical-json" %}}
Signing key validity period
{{% rver-fragment name="v5-signing-requirements" %}}