Fully specify room versions (#3432)
* Fully specify room versions * Misc typo clarifications * Try to clarify redactions a bit * Update content/client-server-api/_index.md Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> * Update content/rooms/v6.md Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> * Update content/rooms/v6.md Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> * Better describe client considerations * Doc template params * Move redaction "new stuff" to v3 * Remove unhelpful sentences about "here follows unchanged stuff" * Simplify event signing text * Clean up handling redactions sections * Move v4's event schema to unchanged section * Update content/rooms/v4.md Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
This commit is contained in:
parent
b873ba984c
commit
241e01c332
19 changed files with 1082 additions and 439 deletions
|
@ -20,6 +20,10 @@ Clients should expect to see event IDs changed from the format of
|
|||
`$acR1l0raoZnm60CBwAVgqbZqoO/mYU81xysh1u7XcJk` (note the lack of domain
|
||||
and the potentially problematic slash).
|
||||
|
||||
Though unchanged in this room version, clients which implement the
|
||||
redaction algorithm locally should refer to the [redactions](#redactions)
|
||||
section below for a full overview.
|
||||
|
||||
## Server implementation components
|
||||
|
||||
{{% boxes/warning %}}
|
||||
|
@ -30,8 +34,8 @@ regarding client considerations is the resource that Client-Server API
|
|||
use cases should reference.
|
||||
{{% /boxes/warning %}}
|
||||
|
||||
Room version 3 uses the state resolution algorithm defined in [room
|
||||
version 2](/rooms/v2), and the event format defined here.
|
||||
Room version 3 uses the event format described here in addition to
|
||||
all the remaining behaviour described by [room version 2](/rooms/v2).
|
||||
|
||||
### Event IDs
|
||||
|
||||
|
@ -77,24 +81,34 @@ room version during a request.
|
|||
|
||||
### Authorization rules for events
|
||||
|
||||
The authorization rules for a given event have changed in this room
|
||||
version due to the change in event format:
|
||||
{{% added-in this=true %}} `m.room.redaction` events are no longer
|
||||
explicitly part of the auth rules. They are still subject to the
|
||||
minimum power level rules, but should always fall into "11. Otherwise,
|
||||
allow". Instead of being authorized at the time of receipt, they are
|
||||
authorized at a later stage: see the [Handling Redactions](#handling-redactions)
|
||||
section below for more information.
|
||||
|
||||
- The event no longer needs to be signed by the domain of the event ID
|
||||
(as there is no domain in the event ID), but still needs to be
|
||||
signed by the sender's domain.
|
||||
- In past room versions, redactions were only permitted to enter the
|
||||
DAG if the sender's domain matched the domain in the event ID being
|
||||
redacted, or the sender had appropriate permissions per the power
|
||||
levels. Due to servers now not being able to determine where an
|
||||
event came from during event authorization, redaction events are
|
||||
always accepted (provided the event is allowed by `events` and
|
||||
`events_default` in the power levels). However, servers should not
|
||||
apply or send redactions to clients until both the redaction event
|
||||
and original event have been seen, and are valid. Servers should
|
||||
only apply redactions to events where the sender's domains match, or
|
||||
the sender of the redaction has the appropriate permissions per the
|
||||
power levels.
|
||||
<!-- set withVersioning=true so we get all the "new in this version" stuff -->
|
||||
{{% rver-fragment name="v3-auth-rules" withVersioning=true %}}
|
||||
|
||||
The remaining rules are the same as [room version
|
||||
1](/rooms/v1#authorization-rules).
|
||||
### Handling redactions
|
||||
|
||||
<!-- set withVersioning=true so we get all the "new in this version" stuff -->
|
||||
{{% rver-fragment name="v3-handling-redactions" withVersioning=true %}}
|
||||
|
||||
## Unchanged from v2
|
||||
|
||||
The following sections have not been modified since v2, but are included for
|
||||
completeness.
|
||||
|
||||
### State resolution
|
||||
|
||||
{{% rver-fragment name="v2-state-res" %}}
|
||||
|
||||
### Canonical JSON
|
||||
|
||||
{{% rver-fragment name="v1-canonical-json" %}}
|
||||
|
||||
### Redactions
|
||||
|
||||
{{% rver-fragment name="v1-redactions" %}}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue