docs-matrix-spec/content/rooms/v2.md
Kévin Commaille 60339adb2d
Refactor PDU definitions to reduce duplication (#2070)
First of all, all PDU definitions were based on the v1 PDU definition with a few fields overwritten to change the format with needed.
While that works when rendering the spec, this is semantically incorrect because it means that the objects must match both schemas, which is impossible.

So now we make a base with only the common fields, and we add the others as needed by the room version.
Note that there is no more "unsigned PDU" definition since it is not used directly, and hashes and signatures are the same across all versions.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-03-04 17:08:42 +00:00

66 lines
1.5 KiB
Markdown

---
title: Room Version 2
type: docs
weight: 20
version: 2
---
This room version builds on [version 1](/rooms/v1) with an improved
state resolution algorithm.
## Client considerations
There are no client considerations introduced in this room version. Clients
which implement the redaction algorithm locally should refer to the
[redactions](#redactions) section below for a full overview of the algorithm.
## 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 details contained here, and can safely ignore their
presence.
{{% /boxes/warning %}}
Room version 2 uses the base components of [room version 1](/rooms/v1),
changing only the state resolution algorithm.
### State resolution
{{% added-in v=2 %}}
{{% rver-fragment name="v2-state-res" %}}
## Unchanged from v1
The following sections have not been modified since v1, but are included for
completeness.
### Redactions
{{% rver-fragment name="v1-redactions" %}}
### Event IDs
{{% rver-fragment name="v1-event-ids" %}}
### Event format
Events in rooms of this version have the following structure:
{{% definition path="api/server-server/definitions/pdu_v1" %}}
#### Deprecated event content schemas
{{% rver-fragment name="v1-deprecated-formatting-off-spec" %}}
{{% rver-fragment name="v1-stringy-power-levels" %}}
### Authorization rules
{{% rver-fragment name="v1-auth-rules" %}}
### Canonical JSON
{{% rver-fragment name="v1-canonical-json" %}}