element-hq / element-hq/element-meta

Key backup restore API lacks sensible pagination

Open
#2,176 0 comments 0 reactions 0 assignees View on GitHub
A-E2EE A-E2EE-Key-Backup
Dominant language
No language data
Stars
112
Forks
25
Avg merge
6h 6m
Merged PRs (30d)
4

Description

The existing key backup restore API offers three ways to fetch backups:

* You can get [the full backup at once](https://spec.matrix.org/v1.8/client-server-api/#get_matrixclientv3room_keyskeys), which is slow and impractical for huge backups (several 10s of minutes for big backups).
* It allows queries [per session](https://spec.matrix.org/v1.8/client-server-api/#get_matrixclientv3room_keyskeysroomidsessionid) and in this case will require a lot of requests to get history.
* Finally it’s possible to get all [keys for a given room](https://spec.matrix.org/v1.8/client-server-api/#get_matrixclientv3room_keyskeysroomidsessionid) but with no particular order. This can still take a long time and will retrieve old keys for history that is not even downloaded on the client.

A better API should provide access to keys for a given room with pagination, allowing a new login to decrypt recent history very quickly. This is particularly useful when using next gen clients that will do a lot of smart spidering to just bottleneck on the download of keys.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the linked Matrix client-server API sections for full, per-session, and per-room key-backup restore requests. Compare their retrieval and ordering behavior, then define the pagination requirements and verify that the proposed API can prioritize recent room history; the issue provides no repository files or tests to run.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.