--- title: Room Version 9 type: docs weight: 90 version: 9 --- This room version builds on [version 8](/rooms/v8) to add additional redaction rules that were unintentionally missed when incorporating v8. ## Client considerations See [room version 8](/rooms/v8) for specific details regarding the addition of restricted rooms. Clients which implement the redaction algorithm locally should refer to the [redactions](#redactions) section below for a full overview. ### Redactions {{< added-in v=9 >}} [`m.room.member`](/client-server-api#mroommember) events now keep `join_authorised_via_users_server` in addition to other keys in `content` when being redacted. {{% boxes/rationale %}} Without the `join_authorised_via_users_server` property, redacted join events can become invalid when verifying the auth chain of a given event, thus creating a split-brain scenario where the user is able to speak from one server's perspective but most others will continually reject their events. This can theoretically be worked around with a rejoin to the room, being careful not to use the faulty events as `prev_events`, though instead it is encouraged to use v9 rooms over v8 rooms to outright avoid the situation. [Issue #3373](https://github.com/matrix-org/matrix-doc/issues/3373) has further information. {{% /boxes/rationale %}} The full redaction algorithm follows. {{% rver-fragment name="v9-redactions" %}} ## 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 added a new `restricted` join rule to allow members of a room to join another room without invite. Room version 9 is based upon v8 with the following considerations. ### Redactions [See above](#redactions). ## Unchanged from v8 The following sections have not been modified since v8, 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" %}} ### Authorization rules {{% rver-fragment name="v8-auth-rules" %}} ### 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" %}}