---
title: Room Version 6
type: docs
weight: 60
---

This room version builds on [version 5](/rooms/v5) while changing various
authorization rules performed on events.

## Client considerations

The redaction algorithm has changed from [room version 1](/rooms/v1) to
remove all rules against events of type `m.room.aliases`. Room versions
2, 3, 4, and 5 all use v1's redaction algorithm. The algorithm is
otherwise unchanged.

## 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 6 makes the following alterations to algorithms described
in [room version 5](/rooms/v5).

### Redactions

As mentioned in the client considerations portion of this specification,
all special meaning has been removed for events of type
`m.room.aliases`. The algorithm is otherwise unchanged.

### Authorization rules for events

Like redactions, all rules relating specifically to events of type
`m.room.aliases` are removed. They must still pass authorization checks
relating to state events.

Additionally, the authorization rules for events of type
`m.room.power_levels` now include the content key `notifications`. This
new rule takes the place of the rule which checks the `events` and
`users` keys.

For completeness, the changes to the auth rules can be represented as
follows:

    ...

    -If type is `m.room.aliases`:
    -
    -   a. If event has no `state_key`, reject.
    -   b. If sender's domain doesn't matches `state_key`, reject.
    -   c. Otherwise, allow.

    ...

    If type is `m.room.power_levels`:

    ...

    -  * For each entry being added, changed or removed in both the `events` and `users` keys:
    +  * For each entry being added, changed or removed in the `events`, `users`, and `notifications` keys:

       i. If the current value is higher than the `sender`'s current power level, reject.

       ii. If the new value is higher than the `sender`'s current power level, reject.

    ...

The remaining rules are the same as in [room version
3](/rooms/v3#authorization-rules-for-events) (the last inherited room
version to specify the authorization rules).

### Canonical JSON

Servers MUST strictly enforce the JSON format specified in the
[appendices](/appendices#canonical-json). This translates to a
400 `M_BAD_JSON` error on most endpoints, or discarding of events over
federation. For example, the Federation API's `/send` endpoint would
discard the event whereas the Client Server API's `/send/{eventType}`
endpoint would return a `M_BAD_JSON` error.
