Add summary block with high-level view of the proposed APIs.

pull/977/head
Kegan Dougal 10 years ago
parent 3996007449
commit 14624607bb

@ -1,30 +1,77 @@
Instant Messaging
=================
This contains the formal proposal for Matrix Client-Server API v2. This API would
completely replace v1. It is a general API, not specific to any particular
protocol e.g. HTTP. It contains the following APIs:
- Filtering API
- Global initial sync API
- Event stream API
- Room creation API
- Room joining API
- Scrollback API
- Contextual windowing API
- Action APIs:
- Inviting
- Rejecting invites
- Leaving
- Kicking
- Banning
- Sending message events
- Sending state events
- Deleting state events
- Presence API
- Typing API
- Capabilities API
- ``TODO`` Room Directory API
- ``TODO`` Public room list API
- ``TODO`` User Profile API
The following APIs will remain unchanged from v1:
- Registration API
- Login API
- Content repository API
It also contains information on changes to events, including:
- Relates to
- Updates
- State key restrictions
- Event type rule setting
Notes
-----
TODO
----
- Pagination: Would be nice to have "and X more". It will probably be Google-style estimates given
we can't know the exact number over federation, but as a purely informational display thing it would
be nice.
- HTTP Ordering: Blocking requests with higher seqnums is troublesome if there is a max # of concurrent
connections a client can have open.
- Session expiry: Do we really have to fonx the request if it was done with an old session ID?
~~~~
- Pagination: Would be nice to have "and X more". It will probably be
Google-style estimates given we can't know the exact number over federation,
but as a purely informational display thing it would be nice.
- HTTP Ordering: Blocking requests with higher seqnums is troublesome if there
is a max # of concurrent connections a client can have open.
- Session expiry: Do we really have to fonx the request if it was done with an
old session ID?
- Server capabilities: Keep hashing step for consistency or not? Extra request.
- Client capabilities: List of hashes f.e device vs union of hashes on all devices?
- Client capabilities: Clients which are offline but can be pushed should have their capabilities visible.
- Client capabilities: List of hashes f.e device vs union of hashes on all
devices?
- Client capabilities: Clients which are offline but can be pushed should have
their capabilities visible.
How to manage unregistering them e.g. if they uninstall the app?
- What do server-generated events look like?
- What do read-up-to markers look like?
- Offline mode? How does that work with sessions?
- Per device presence
- Receiving events for unknown rooms. How do you handle this?
- Linking the termination of typing events to the message itself, so you don't need to send
- Linking the termination of typing events to the message itself, so you don't
need to send
two events and don't get flicker.
- Filtering: Blacklist (negative) filters? E.g. "don't give me ``event.type.here`` events
- Filtering: Blacklist (negative) filters? E.g. "don't give me
``event.type.here`` events
- Public room list API
Summary
-------
Summary of changes from v1
~~~~~~~~~~~~~~~~~~~~~~~~~~
Included:
- Event filtering (type/room/users, federation-style events)
- Incremental syncing
@ -44,7 +91,8 @@ Excluded:
- PATCHing power levels
- Handling "duplicate" events in state/messages key on initial sync.
- Multiple devices (other than VoIP)
- Room directory lists (aka public room list, paginating, permissions on editing the list, etc)
- Room directory lists (aka public room list, paginating, permissions on
editing the list, etc)
Filter API
----------
@ -201,10 +249,14 @@ Outputs:
What data flows does it address:
- Chat Screen: Scrolling back (infinite scrolling)
Contextual messages
-------------------
Contextual windowing
--------------------
This refers to showing a "window" of message events around a given message
event. The window provides the "context" for the given message event.
Inputs:
- Event ID of the message to get the surrounding context for (this specifies the room to get messages in).
- Event ID of the message to get the surrounding context for (this specifies
the room to get messages in).
- Number of messages before/after this message to obtain.
- Filter to apply.
Outputs:

Loading…
Cancel
Save