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

This room version builds on [version 6](/rooms/v6) to introduce knocking
as a possible join rule and membership state.

## Client considerations

This is the first room version to support knocking completely. As such,
users will not be able to knock on rooms which are not based off v7.

## 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 7 adds new authorization rules for events to support knocking.
[Room version 6](/rooms/v6) has details of other authorization rule changes,
as do the versions v6 is based upon.

For checks perfomed upon `m.room.member` events, the following conditions
are added in context:

    If type is `m.room.member`:

    ...

      * If `membership` is `ban`:

        ...

      * If `membership` is `knock`:

        i. If the `join_rule` is anything other than `knock`, reject.

        ii. If `sender` does not match `state_key`, reject.

        iii. If the `sender`'s current membership is not `ban`, `invite`, or `join`, allow.

        iv. Otherwise, reject.

    ...

The remaining rules are the same as in [room version 6](/rooms/v6#authorization-rules-for-events).
