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

1.5 KiB

title type weight version
Room Version 2 docs 20 2

This room version builds on version 1 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 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, 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" %}}