Define finalised events for /sync & /transactions

Also define a sync filter
toger5/expiring-events-keep-alive
Andrew Ferrazzutti 1 year ago
parent 72a808e620
commit d1a37f06fd

@ -14,6 +14,8 @@ time and then distributing it as normal via federation.
- [Scheduling a delayed event](#scheduling-a-delayed-event) - [Scheduling a delayed event](#scheduling-a-delayed-event)
- [Managing delayed events](#managing-delayed-events) - [Managing delayed events](#managing-delayed-events)
- [Getting delayed events](#getting-delayed-events) - [Getting delayed events](#getting-delayed-events)
- [On demand](#on-demand)
- [On push](#on-push)
- [Homeserver implementation details](#homeserver-implementation-details) - [Homeserver implementation details](#homeserver-implementation-details)
- [Power levels are evaluated at the point of sending](#power-levels-are-evaluated-at-the-point-of-sending) - [Power levels are evaluated at the point of sending](#power-levels-are-evaluated-at-the-point-of-sending)
- [Delayed state events are cancelled by a more recent state event](#delayed-state-events-are-cancelled-by-a-more-recent-state-event) - [Delayed state events are cancelled by a more recent state event](#delayed-state-events-are-cancelled-by-a-more-recent-state-event)
@ -185,6 +187,8 @@ Where the `action` is `send`, the homeserver **should** apply rate limiting to p
### Getting delayed events ### Getting delayed events
#### On demand
New authenticated client-server API endpoints `GET /_matrix/client/v1/delayed_events/scheduled` and New authenticated client-server API endpoints `GET /_matrix/client/v1/delayed_events/scheduled` and
`GET /_matrix/client/v1/delayed_events/finalised` allows clients to get a list of `GET /_matrix/client/v1/delayed_events/finalised` allows clients to get a list of
all the delayed events owned by the requesting user that have been scheduled to send, have been sent, or failed to be sent. all the delayed events owned by the requesting user that have been scheduled to send, have been sent, or failed to be sent.
@ -276,6 +280,26 @@ This can be used by clients to display events that have been scheduled to be sen
For use cases where the existence of a delayed event is also of interest for other room members For use cases where the existence of a delayed event is also of interest for other room members
(e.g. self-destructing messages), it is recommended to include this information in the original/affected event itself. (e.g. self-destructing messages), it is recommended to include this information in the original/affected event itself.
#### On push
A new optional key, `finalised_events`, is added to the response body of `/sync`. The shape of its
value is equivalent to that of the response body of `GET /_matrix/client/v1/delayed_events/finalised`.
It is an array of the syncing user's delayed events that were sent or failed to be sent after the
`since` timestamp parameter of the associated `/sync` request, or all of them for full `/sync`s.
When no such delayed events exist, the `finalised_events` key is absent from the `/sync` response.
A new key, `finalised_events`, is defined for `POST /_matrix/client/v3/user/{userId}/filter`.
Its value is a boolean which, if set to `false`, causes an associated `/sync` response to exclude
any `finalised_events` key it may have otherwise included.
The only delayed events included in `finalised_events` are ones that have been retained by the homeserver,
as per the same retention policies as for the `GET /_matrix/client/v1/delayed_events/finalised` endpoint.
Additionally, a homeserver may discard finalised delayed events that have been returned by a `/sync` response.
The `finalised_events` key is added to the request bodies of the appservice API `/transactions` endpoint.
It has the same content as the key for `/sync`, and contains all of the target appservice's delayed events
that were sent or failed to be sent since the previous transaction.
### Homeserver implementation details ### Homeserver implementation details
#### Power levels are evaluated at the point of sending #### Power levels are evaluated at the point of sending
@ -726,6 +750,8 @@ Whilst the MSC is in the proposal stage, the following should be used:
the `POST /_matrix/client/v1/delayed_events/{delay_id}` endpoint. the `POST /_matrix/client/v1/delayed_events/{delay_id}` endpoint.
- `GET /_matrix/client/unstable/org.matrix.msc4140/delayed_events` should be used instead of - `GET /_matrix/client/unstable/org.matrix.msc4140/delayed_events` should be used instead of
the `GET /_matrix/client/v1/delayed_events` endpoint. the `GET /_matrix/client/v1/delayed_events` endpoint.
- `org.matrix.msc4140.finalised_events` should be used as keys of `/sync`, `/transactions`, and
`/filter` instead of `finalised_events`.
- The `M_UNKNOWN` `errcode` should be used instead of `M_MAX_DELAY_EXCEEDED` as follows: - The `M_UNKNOWN` `errcode` should be used instead of `M_MAX_DELAY_EXCEEDED` as follows:
```json ```json

Loading…
Cancel
Save