# Copyright 2016 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. swagger: '2.0' info: title: "Matrix Client-Server Presence API" version: "1.0.0" host: localhost:8008 schemes: - https - http basePath: /_matrix/client/%CLIENT_MAJOR_VERSION% consumes: - application/json produces: - application/json securityDefinitions: $ref: definitions/security.yaml paths: "/presence/{userId}/status": put: summary: Update this user's presence state. description: |- This API sets the given user's presence state. When setting the status, the activity time is updated to reflect that activity; the client does not need to specify the ``last_active_ago`` field. You cannot set the presence state of another user. security: - accessToken: [] parameters: - in: path type: string name: userId description: The user whose presence state to update. required: true x-example: "@alice:example.com" - in: body name: presenceState description: The updated presence state. required: true schema: type: object example: |- { "presence": "online", "status_msg": "I am here." } properties: presence: type: string enum: ["online", "offline", "unavailable"] description: The new presence state. status_msg: type: string description: "The status message to attach to this state." required: ["presence"] responses: 200: description: The new presence state was set. examples: application/json: |- {} schema: type: object # empty json object 429: description: This request was rate-limited. schema: "$ref": "definitions/error.yaml" tags: - Presence get: summary: Get this user's presence state. description: |- Get the given user's presence state. parameters: - in: path type: string name: userId description: The user whose presence state to get. required: true x-example: "@alice:example.com" responses: 200: description: The presence state for this user. examples: application/json: |- { "presence": "unavailable", "last_active_ago": 420845 } schema: type: object properties: presence: type: string enum: ["online", "offline", "unavailable"] description: This user's presence. last_active_ago: type: integer description: |- The length of time in milliseconds since an action was performed by this user. status_msg: type: [string, "null"] description: The state message for this user if one was set. currently_active: type: boolean description: "Whether the user is currently active" required: ["presence"] 404: description: |- There is no presence state for this user. This user may not exist or isn't exposing presence information to you. tags: - Presence "/presence/list/{userId}": post: summary: Add or remove users from this presence list. description: |- Adds or removes users from this presence list. 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/error.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. 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