Skip to content

Distinguish 'client' from 'federation' events - #3658

Merged
richvdh merged 11 commits into
mainfrom
rav/event_serialisation
Feb 1, 2022
Merged

Distinguish 'client' from 'federation' events#3658
richvdh merged 11 commits into
mainfrom
rav/event_serialisation

Conversation

@richvdh

@richvdh richvdh commented Jan 19, 2022

Copy link
Copy Markdown
Member

Fixes #3305
Fixes #3380

The idea here is to better distinguish between a 'raw' event (as we send over the wire), and the 'serialised' format, as sent in responses to the C-S api and in PUT /_matrix/app/v1/transactions/{txnId}.

It's made more complicated by the fact that there are two serialisation formats, one used by /sync and /notifications, and one by everything else (the difference being whether room_id is included).

In an ideal world, we wouldn't repeat SerialisedEvent every time it's used, and instead just link to the first reference, bit that's a job for another day.

Another job for another day is to get rid of things like sync_state_event.yaml (which is now used only in one place, so should be inlined.)

Preview: https://pr3658--matrix-org-previews.netlify.app

Comment on lines -21 to -48
sent. This field is generated by the local homeserver, and may be incorrect
if the local time on at least one of the two servers is out of sync, which can
cause the age to either be negative or greater than it actually is.
sent.
type: integer
redacted_because:
description: The event that redacted this event, if any.
title: Event
type: object
transaction_id:
description: |
The client-supplied transaction ID, for example, provided via
`PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId}`,
if the client being given the event is the same one which sent it.
type: string
prev_content:
description: |
The previous `content` for this event. This field is generated
by the local homeserver, and is only returned if the event is a state event,
and the client has permission to see the previous content.
x-changedInMatrixVersion:
1.2: |
Previously, this field was specified at the top level of returned
events rather than in `unsigned` (with the exception of the [`GET
.../notifications`](/client-server-api/#get_matrixclientv3notifications)
endpoint), though in practice no known server implementations honoured
this.
title: EventContent
type: object

@richvdh richvdh Jan 19, 2022

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all this stuff has moved into the definition for client_event, because it's not sent over the federation API, so IMHO doesn't belong in the core event schema.

@richvdh
richvdh marked this pull request as draft January 19, 2022 12:15
@richvdh

richvdh commented Jan 19, 2022

Copy link
Copy Markdown
Member Author

looks like I need to figure out why the validator is failing.

@richvdh
richvdh force-pushed the rav/event_serialisation branch from 1b1633f to ec18c98 Compare January 25, 2022 15:05
@richvdh
richvdh marked this pull request as ready for review January 25, 2022 15:06
@richvdh
richvdh requested a review from a team January 25, 2022 15:06

@turt2live turt2live left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

generally the changes seem fine - mostly just relatively minor concerns and taking the opportunity to fix some other small pet peeves while we're in the area.

Comment thread changelogs/client_server/newsfragments/3658.clarification Outdated
Comment thread content/client-server-api/_index.md Outdated
Comment thread data/api/client-server/definitions/serialised_event.yaml Outdated
Comment thread data/api/client-server/definitions/serialised_event_without_room_id.yaml Outdated
Comment thread data/api/client-server/definitions/serialised_event_without_room_id.yaml Outdated
Comment thread data/api/client-server/definitions/serialised_event_without_room_id.yaml Outdated
Comment thread data/api/client-server/definitions/serialised_event_without_room_id.yaml Outdated
Comment thread data/event-schemas/schema/core-event-schema/unsigned_prop.yaml
Comment thread changelogs/client_server/newsfragments/3658.clarification Outdated
@richvdh richvdh changed the title Distinguish 'serialised' from 'raw' events Distinguish 'client' from 'federation' events Jan 31, 2022
@richvdh
richvdh requested a review from turt2live January 31, 2022 00:28

@turt2live turt2live left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clarification of /messages response format Documentation for the differences between "federation" and "client" event format

2 participants