{ "openapi": "3.0.3", "info": { "title": "user_status", "version": "0.0.1", "description": "User status", "license": { "name": "agpl" } }, "components": { "securitySchemes": { "basic_auth": { "type": "http", "scheme": "basic" }, "bearer_auth": { "type": "http", "scheme": "bearer" } }, "schemas": { "Capabilities": { "type": "object", "required": [ "user_status" ], "properties": { "user_status": { "type": "object", "required": [ "enabled", "restore", "supports_emoji" ], "properties": { "enabled": { "type": "boolean" }, "restore": { "type": "boolean" }, "supports_emoji": { "type": "boolean" } } } } }, "ClearAt": { "type": "object", "required": [ "type", "time" ], "properties": { "type": { "type": "string", "enum": [ "period", "end-of" ] }, "time": { "anyOf": [ { "type": "integer", "format": "int64" }, { "$ref": "#/components/schemas/ClearAtTimeType" } ] } } }, "ClearAtTimeType": { "type": "string", "enum": [ "day", "week" ] }, "OCSMeta": { "type": "object", "required": [ "status", "statuscode" ], "properties": { "status": { "type": "string" }, "statuscode": { "type": "integer" }, "message": { "type": "string" }, "totalitems": { "type": "string" }, "itemsperpage": { "type": "string" } } }, "Predefined": { "type": "object", "required": [ "id", "icon", "message", "clearAt", "visible" ], "properties": { "id": { "type": "string" }, "icon": { "type": "string" }, "message": { "type": "string" }, "clearAt": { "$ref": "#/components/schemas/ClearAt", "nullable": true }, "visible": { "type": "boolean", "nullable": true } } }, "Private": { "allOf": [ { "$ref": "#/components/schemas/Public" }, { "type": "object", "required": [ "messageId", "messageIsPredefined", "statusIsUserDefined" ], "properties": { "messageId": { "type": "string", "nullable": true }, "messageIsPredefined": { "type": "boolean" }, "statusIsUserDefined": { "type": "boolean" } } } ] }, "Public": { "type": "object", "required": [ "userId", "message", "icon", "clearAt", "status" ], "properties": { "userId": { "type": "string" }, "message": { "type": "string", "nullable": true }, "icon": { "type": "string", "nullable": true }, "clearAt": { "type": "integer", "format": "int64", "nullable": true }, "status": { "$ref": "#/components/schemas/Type" } } }, "Type": { "type": "string", "enum": [ "online", "away", "dnd", "busy", "offline", "invisible" ] } } }, "paths": { "/ocs/v2.php/apps/user_status/api/v1/heartbeat": { "put": { "operationId": "heartbeat-heartbeat", "summary": "Keep the status alive", "tags": [ "heartbeat" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string", "description": "Only online, away" } } } } } }, "parameters": [ { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Status successfully updated", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "$ref": "#/components/schemas/Private" } } } } } } } }, "400": { "description": "Invalid status to update", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } }, "500": { "description": "", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } }, "204": { "description": "User has no status to keep alive" } } } }, "/ocs/v2.php/apps/user_status/api/v1/predefined_statuses": { "get": { "operationId": "predefined_status-find-all", "summary": "Get all predefined messages", "tags": [ "predefined_status" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Predefined statuses returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Predefined" } } } } } } } } } } } }, "/ocs/v2.php/apps/user_status/api/v1/statuses": { "get": { "operationId": "statuses-find-all", "summary": "Find statuses of users", "tags": [ "statuses" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "limit", "in": "query", "description": "Maximum number of statuses to find", "schema": { "type": "integer", "format": "int64", "nullable": true } }, { "name": "offset", "in": "query", "description": "Offset for finding statuses", "schema": { "type": "integer", "format": "int64", "nullable": true, "minimum": 0 } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Statuses returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Public" } } } } } } } } } } } }, "/ocs/v2.php/apps/user_status/api/v1/statuses/{userId}": { "get": { "operationId": "statuses-find", "summary": "Find the status of a user", "tags": [ "statuses" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "userId", "in": "path", "description": "ID of the user", "required": true, "schema": { "type": "string" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Status returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "$ref": "#/components/schemas/Public" } } } } } } } }, "404": { "description": "The user was not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/user_status/api/v1/user_status": { "get": { "operationId": "user_status-get-status", "summary": "Get the status of the current user", "tags": [ "user_status" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "The status was found successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "$ref": "#/components/schemas/Private" } } } } } } } }, "404": { "description": "The user was not found", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/user_status/api/v1/user_status/status": { "put": { "operationId": "user_status-set-status", "summary": "Update the status type of the current user", "tags": [ "user_status" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "statusType" ], "properties": { "statusType": { "type": "string", "description": "The new status type" } } } } } }, "parameters": [ { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "The status was updated successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "$ref": "#/components/schemas/Private" } } } } } } } }, "400": { "description": "The status type is invalid", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/user_status/api/v1/user_status/message/predefined": { "put": { "operationId": "user_status-set-predefined-message", "summary": "Set the message to a predefined message for the current user", "tags": [ "user_status" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "messageId" ], "properties": { "messageId": { "type": "string", "description": "ID of the predefined message" }, "clearAt": { "type": "integer", "format": "int64", "nullable": true, "description": "When the message should be cleared" } } } } } }, "parameters": [ { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "The message was updated successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "$ref": "#/components/schemas/Private" } } } } } } } }, "400": { "description": "The clearAt or message-id is invalid", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/user_status/api/v1/user_status/message/custom": { "put": { "operationId": "user_status-set-custom-message", "summary": "Set the message to a custom message for the current user", "tags": [ "user_status" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "statusIcon": { "type": "string", "nullable": true, "description": "Icon of the status" }, "message": { "type": "string", "nullable": true, "description": "Message of the status" }, "clearAt": { "type": "integer", "format": "int64", "nullable": true, "description": "When the message should be cleared" } } } } } }, "parameters": [ { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "The message was updated successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "$ref": "#/components/schemas/Private" } } } } } } } }, "400": { "description": "The clearAt or icon is invalid or the message is too long", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/user_status/api/v1/user_status/message": { "delete": { "operationId": "user_status-clear-message", "summary": "Clear the message of the current user", "tags": [ "user_status" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Message cleared successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": {} } } } } } } } } } }, "/ocs/v2.php/apps/user_status/api/v1/user_status/revert/{messageId}": { "delete": { "operationId": "user_status-revert-status", "summary": "Revert the status to the previous status", "tags": [ "user_status" ], "security": [ { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "messageId", "in": "path", "description": "ID of the message to delete", "required": true, "schema": { "type": "string" } }, { "name": "OCS-APIRequest", "in": "header", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Status reverted", "content": { "application/json": { "schema": { "type": "object", "required": [ "ocs" ], "properties": { "ocs": { "type": "object", "required": [ "meta", "data" ], "properties": { "meta": { "$ref": "#/components/schemas/OCSMeta" }, "data": { "anyOf": [ { "$ref": "#/components/schemas/Private" }, { "type": "array", "maxItems": 0 } ] } } } } } } } } } } } }, "tags": [] }