remove references to presence lists
This commit is contained in:
parent
9f443225ac
commit
bf2b6e6daa
4 changed files with 7 additions and 134 deletions
|
@ -136,103 +136,3 @@ paths:
|
||||||
"$ref": "definitions/errors/error.yaml"
|
"$ref": "definitions/errors/error.yaml"
|
||||||
tags:
|
tags:
|
||||||
- Presence
|
- Presence
|
||||||
"/presence/list/{userId}":
|
|
||||||
post:
|
|
||||||
summary: Add or remove users from this presence list.
|
|
||||||
description: |-
|
|
||||||
Adds or removes users from this presence list.
|
|
||||||
operationId: modifyPresenceList
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose presence list is being modified.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: body
|
|
||||||
name: presence_diff
|
|
||||||
description: The modifications to make to this presence list.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"invite": [
|
|
||||||
"@bob:matrix.org"
|
|
||||||
],
|
|
||||||
"drop": [
|
|
||||||
"@alice:matrix.org"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
invite:
|
|
||||||
type: array
|
|
||||||
description: A list of user IDs to add to the list.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: A list of user IDs.
|
|
||||||
drop:
|
|
||||||
type: array
|
|
||||||
description: A list of user IDs to remove from the list.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: A list of user IDs.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The list was updated.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Presence
|
|
||||||
get:
|
|
||||||
summary: Get presence events for this presence list.
|
|
||||||
description: |-
|
|
||||||
Retrieve a list of presence events for every user on this list.
|
|
||||||
operationId: getPresenceForList
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose presence list should be retrieved.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of presence events for this list.
|
|
||||||
examples:
|
|
||||||
application/json: [
|
|
||||||
{
|
|
||||||
"content": {
|
|
||||||
"last_active_ago": 395,
|
|
||||||
"presence": "offline",
|
|
||||||
"user_id": "@alice:matrix.org"
|
|
||||||
},
|
|
||||||
"type": "m.presence"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"content": {
|
|
||||||
"last_active_ago": 16874,
|
|
||||||
"presence": "online",
|
|
||||||
"user_id": "@marisa:matrix.org",
|
|
||||||
"currently_active": true
|
|
||||||
},
|
|
||||||
"type": "m.presence"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
schema:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: PresenceEvent
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/event.yaml"
|
|
||||||
tags:
|
|
||||||
- Presence
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ description: |-
|
||||||
|
|
||||||
# FIXME: It's very unclear why we have this API surface for synchronising
|
# FIXME: It's very unclear why we have this API surface for synchronising
|
||||||
# device lists, rather than just using a room (which could also be used for
|
# device lists, rather than just using a room (which could also be used for
|
||||||
# presence lists, profile info, etc). But documenting what we have for now...
|
# profile info, etc). But documenting what we have for now...
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: ../edu.yaml
|
- $ref: ../edu.yaml
|
||||||
|
|
|
@ -26,14 +26,8 @@ Each user has the concept of presence information. This encodes:
|
||||||
|
|
||||||
This information is collated from both per-device (``online``, ``idle``,
|
This information is collated from both per-device (``online``, ``idle``,
|
||||||
``last_active``) and per-user (status) data, aggregated by the user's homeserver
|
``last_active``) and per-user (status) data, aggregated by the user's homeserver
|
||||||
and transmitted as an ``m.presence`` event. This is one of the few events which
|
and transmitted as an ``m.presence`` event. Presence event are sent to
|
||||||
are sent *outside the context of a room*. Presence events are sent to all users
|
interested parties where users share a room membership.
|
||||||
who subscribe to this user's presence through a presence list or by sharing
|
|
||||||
membership of a room.
|
|
||||||
|
|
||||||
A presence list is a list of user IDs whose presence the user wants to follow.
|
|
||||||
To be added to this list, the user being added must be invited by the list owner
|
|
||||||
who must accept the invitation.
|
|
||||||
|
|
||||||
User's presence state is represented by the ``presence`` key, which is an enum
|
User's presence state is represented by the ``presence`` key, which is an enum
|
||||||
of one of the following:
|
of one of the following:
|
||||||
|
@ -53,17 +47,10 @@ Events
|
||||||
Client behaviour
|
Client behaviour
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
Clients can manually set/get their presence/presence list using the HTTP APIs
|
Clients can manually set/get their presence using the HTTP APIs listed below.
|
||||||
listed below.
|
|
||||||
|
|
||||||
{{presence_cs_http_api}}
|
{{presence_cs_http_api}}
|
||||||
|
|
||||||
Server behaviour
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Each user's homeserver stores a "presence list" per user. Once a user accepts
|
|
||||||
a presence list, both user's HSes must track the subscription.
|
|
||||||
|
|
||||||
Last active ago
|
Last active ago
|
||||||
~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~
|
||||||
The server maintains a timestamp of the last time it saw a pro-active event from
|
The server maintains a timestamp of the last time it saw a pro-active event from
|
||||||
|
|
|
@ -1012,15 +1012,8 @@ The server API for presence is based entirely on exchange of the following
|
||||||
EDUs. There are no PDUs or Federation Queries involved.
|
EDUs. There are no PDUs or Federation Queries involved.
|
||||||
|
|
||||||
Servers should only send presence updates for users that the receiving server
|
Servers should only send presence updates for users that the receiving server
|
||||||
would be interested in. This can include the receiving server sharing a room
|
would be interested in. Such as the receiving server sharing a room
|
||||||
with a given user, or a user on the receiving server has added one of the
|
with a given user.
|
||||||
sending server's users to their presence list.
|
|
||||||
|
|
||||||
Clients may define lists of users that they are interested in via "Presence
|
|
||||||
Lists" through the `Client-Server API`_. When users are added to a presence
|
|
||||||
list, a ``m.presence_invite`` EDU is sent to them. The user may then accept
|
|
||||||
or deny their involvement in the list by sending either an ``m.presence_accept``
|
|
||||||
or ``m.presence_deny`` EDU back.
|
|
||||||
|
|
||||||
.. TODO-doc
|
.. TODO-doc
|
||||||
- Explain the timing-based round-trip reduction mechanism for presence
|
- Explain the timing-based round-trip reduction mechanism for presence
|
||||||
|
@ -1030,13 +1023,6 @@ or ``m.presence_deny`` EDU back.
|
||||||
|
|
||||||
{{definition_ss_event_schemas_m_presence}}
|
{{definition_ss_event_schemas_m_presence}}
|
||||||
|
|
||||||
{{definition_ss_event_schemas_m_presence_invite}}
|
|
||||||
|
|
||||||
{{definition_ss_event_schemas_m_presence_accept}}
|
|
||||||
|
|
||||||
{{definition_ss_event_schemas_m_presence_deny}}
|
|
||||||
|
|
||||||
|
|
||||||
Receipts
|
Receipts
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -1114,7 +1100,7 @@ which should be used to correlate with subsequent ``m.device_list_update`` EDUs.
|
||||||
|
|
||||||
.. TODO: this whole thing desperately feels like it should just be state in a room,
|
.. TODO: this whole thing desperately feels like it should just be state in a room,
|
||||||
rather than inventing a whole different DAG. The same room could be used for
|
rather than inventing a whole different DAG. The same room could be used for
|
||||||
profiles, presence lists, etc.
|
profiles etc.
|
||||||
|
|
||||||
{{user_devices_ss_http_api}}
|
{{user_devices_ss_http_api}}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue