diff --git a/docs/client-server/swagger_matrix/api-docs-presence b/docs/client-server/swagger_matrix/api-docs-presence
new file mode 100644
index 0000000000..d52ce2164a
--- /dev/null
+++ b/docs/client-server/swagger_matrix/api-docs-presence
@@ -0,0 +1,164 @@
+{
+ "apiVersion": "1.0.0",
+ "swaggerVersion": "1.2",
+ "basePath": "http://localhost:8080/_matrix/client/api/v1",
+ "resourcePath": "/presence",
+ "produces": [
+ "application/json"
+ ],
+ "consumes": [
+ "application/json"
+ ],
+ "apis": [
+ {
+ "path": "/presence/{userId}/status",
+ "operations": [
+ {
+ "method": "PUT",
+ "summary": "Update this user's presence state.",
+ "notes": "This can only be done by the logged in user.",
+ "type": "void",
+ "nickname": "update_presence",
+ "parameters": [
+ {
+ "name": "body",
+ "description": "The new presence state",
+ "required": true,
+ "type": "PresenceUpdate",
+ "paramType": "body"
+ },
+ {
+ "name": "userId",
+ "description": "The user whose presence to set.",
+ "required": true,
+ "type": "string",
+ "paramType": "path"
+ }
+ ]
+ },
+ {
+ "method": "GET",
+ "summary": "Get this user's presence state.",
+ "notes": "Get this user's presence state.",
+ "type": "PresenceUpdate",
+ "nickname": "get_presence",
+ "parameters": [
+ {
+ "name": "userId",
+ "description": "The user whose presence to get.",
+ "required": true,
+ "type": "string",
+ "paramType": "path"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "path": "/presence/list/{userId}",
+ "operations": [
+ {
+ "method": "GET",
+ "summary": "Retrieve a list of presences for all of this user's friends.",
+ "notes": "",
+ "type": "array",
+ "items": {
+ "$ref": "Presence"
+ },
+ "nickname": "get_presence_list",
+ "parameters": [
+ {
+ "name": "userId",
+ "description": "The user whose presence list to get.",
+ "required": true,
+ "type": "string",
+ "paramType": "path"
+ }
+ ]
+ },
+ {
+ "method": "POST",
+ "summary": "Add or remove users from this presence list.",
+ "notes": "Add or remove users from this presence list.",
+ "type": "void",
+ "nickname": "modify_presence_list",
+ "parameters": [
+ {
+ "name": "userId",
+ "description": "The user whose presence list is being modified.",
+ "required": true,
+ "type": "string",
+ "paramType": "path"
+ },
+ {
+ "name": "body",
+ "description": "The modifications to make to this presence list.",
+ "required": true,
+ "type": "PresenceListModifications",
+ "paramType": "body"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "models": {
+ "PresenceUpdate": {
+ "id": "PresenceUpdate",
+ "properties": {
+ "state": {
+ "type": "string",
+ "description": "Enum: The presence state.",
+ "enum": [
+ "offline",
+ "unavailable",
+ "online",
+ "free_for_chat"
+ ]
+ },
+ "status_msg": {
+ "type": "string",
+ "description": "The user-defined message associated with this presence state."
+ }
+ },
+ "subTypes": [
+ "Presence"
+ ]
+ },
+ "Presence": {
+ "id": "Presence",
+ "properties": {
+ "mtime_age": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The last time this user's presence state changed, in milliseconds."
+ },
+ "user_id": {
+ "type": "string",
+ "description": "The fully qualified user ID"
+ }
+ }
+ },
+ "PresenceListModifications": {
+ "id": "PresenceListModifications",
+ "properties": {
+ "invite": {
+ "type": "array",
+ "description": "A list of user IDs to add to the list.",
+ "items": {
+ "type": "string",
+ "description": "A fully qualified user ID."
+ }
+ },
+ "drop": {
+ "type": "array",
+ "description": "A list of user IDs to remove from the list.",
+ "items": {
+ "type": "string",
+ "description": "A fully qualified user ID."
+ }
+ }
+ }
+ }
+ }
+}
|