diff options
author | Kate <26026535+provokateurin@users.noreply.github.com> | 2023-05-24 17:45:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-24 17:45:12 +0200 |
commit | 115689f1679c48cb8f6ac84beb261fd5d5799038 (patch) | |
tree | cace0f28b4b8541f56e9cdc276a4d2f7eca462ba /apps/theming | |
parent | e6038268d8e79e3c78f03ea73aa3e4df6bea26af (diff) | |
parent | 4218f719eac246441dbe0b323635fb653ebcd482 (diff) | |
download | nextcloud-server-115689f1679c48cb8f6ac84beb261fd5d5799038.tar.gz nextcloud-server-115689f1679c48cb8f6ac84beb261fd5d5799038.zip |
Merge pull request #38438 from nextcloud/feature/openapi/specs
Add OpenAPI specs
Diffstat (limited to 'apps/theming')
-rw-r--r-- | apps/theming/openapi.json | 1206 |
1 files changed, 1206 insertions, 0 deletions
diff --git a/apps/theming/openapi.json b/apps/theming/openapi.json new file mode 100644 index 00000000000..298ec5722d5 --- /dev/null +++ b/apps/theming/openapi.json @@ -0,0 +1,1206 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "theming", + "version": "0.0.1", + "description": "Adjust the Nextcloud theme", + "license": { + "name": "agpl" + } + }, + "components": { + "securitySchemes": { + "basic_auth": { + "type": "http", + "scheme": "basic" + }, + "bearer_auth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Background": { + "type": "object", + "required": [ + "backgroundImage", + "backgroundColor", + "version" + ], + "properties": { + "backgroundImage": { + "type": "string", + "nullable": true + }, + "backgroundColor": { + "type": "string" + }, + "version": { + "type": "integer", + "format": "int64" + } + } + }, + "OCSMeta": { + "type": "object", + "required": [ + "status", + "statuscode" + ], + "properties": { + "status": { + "type": "string" + }, + "statuscode": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "totalitems": { + "type": "string" + }, + "itemsperpage": { + "type": "string" + } + } + }, + "PublicCapabilities": { + "type": "object", + "required": [ + "theming" + ], + "properties": { + "theming": { + "type": "object", + "required": [ + "name", + "url", + "slogan", + "color", + "color-text", + "color-element", + "color-element-bright", + "color-element-dark", + "logo", + "background", + "background-plain", + "background-default", + "logoheader", + "favicon" + ], + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "slogan": { + "type": "string" + }, + "color": { + "type": "string" + }, + "color-text": { + "type": "string" + }, + "color-element": { + "type": "string" + }, + "color-element-bright": { + "type": "string" + }, + "color-element-dark": { + "type": "string" + }, + "logo": { + "type": "string" + }, + "background": { + "type": "string" + }, + "background-plain": { + "type": "boolean" + }, + "background-default": { + "type": "boolean" + }, + "logoheader": { + "type": "string" + }, + "favicon": { + "type": "string" + } + } + } + } + } + } + }, + "paths": { + "/index.php/apps/theming/theme/{themeId}.css": { + "get": { + "operationId": "theming-get-theme-stylesheet", + "summary": "Get the CSS stylesheet for a theme", + "tags": [ + "theming" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "plain", + "in": "query", + "description": "Let the browser decide the CSS priority", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "name": "withCustomCss", + "in": "query", + "description": "Include custom CSS", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "name": "themeId", + "in": "path", + "description": "ID of the theme", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Stylesheet returned", + "headers": { + "Content-Disposition": { + "schema": { + "type": "string" + } + } + }, + "content": { + "text/css": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Theme not found", + "content": { + "text/html": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/index.php/apps/theming/image/{key}": { + "get": { + "operationId": "theming-get-image", + "summary": "Get an image", + "tags": [ + "theming" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "useSvg", + "in": "query", + "description": "Return image as SVG", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "key", + "in": "path", + "description": "Key of the image", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Image returned", + "headers": { + "Content-Disposition": { + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Image not found", + "content": { + "text/html": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/index.php/apps/theming/manifest/{app}": { + "get": { + "operationId": "theming-get-manifest", + "summary": "Get the manifest for an app", + "tags": [ + "theming" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "app", + "in": "path", + "description": "ID of the app", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "name", + "short_name", + "start_url", + "theme_color", + "background_color", + "description", + "icons", + "display" + ], + "properties": { + "name": { + "type": "string" + }, + "short_name": { + "type": "string" + }, + "start_url": { + "type": "string" + }, + "theme_color": { + "type": "string" + }, + "background_color": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icons": { + "type": "array", + "items": { + "type": "object", + "required": [ + "src", + "type", + "sizes" + ], + "properties": { + "src": { + "type": "string" + }, + "type": { + "type": "string" + }, + "sizes": { + "type": "string" + } + } + } + }, + "display": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/index.php/apps/theming/favicon/{app}": { + "get": { + "operationId": "icon-get-favicon", + "summary": "Return a 32x32 favicon as png", + "tags": [ + "icon" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "app", + "in": "path", + "description": "ID of the app", + "required": true, + "schema": { + "type": "string", + "default": "core" + } + } + ], + "responses": { + "200": { + "description": "Favicon returned", + "headers": { + "Content-Disposition": { + "schema": { + "type": "string" + } + } + }, + "content": { + "image/x-icon": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Favicon not found", + "content": { + "text/html": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/index.php/apps/theming/icon/{app}": { + "get": { + "operationId": "icon-get-touch-icon", + "summary": "Return a 512x512 icon for touch devices", + "tags": [ + "icon" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "app", + "in": "path", + "description": "ID of the app", + "required": true, + "schema": { + "type": "string", + "default": "core" + } + } + ], + "responses": { + "200": { + "description": "Touch icon returned", + "headers": { + "Content-Disposition": { + "schema": { + "type": "string" + } + } + }, + "content": { + "image/png": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "image/x-icon": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Touch icon not found", + "content": { + "text/html": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/index.php/apps/theming/img/{app}/{image}": { + "get": { + "operationId": "icon-get-themed-icon", + "summary": "Get a themed icon", + "tags": [ + "icon" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "app", + "in": "path", + "description": "ID of the app", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "image", + "in": "path", + "description": "image file name (svg required)", + "required": true, + "schema": { + "type": "string", + "pattern": "^.+$" + } + } + ], + "responses": { + "200": { + "description": "Themed icon returned", + "headers": { + "Content-Disposition": { + "schema": { + "type": "string" + } + } + }, + "content": { + "image/svg+xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Themed icon not found", + "content": { + "text/html": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/index.php/apps/theming/background": { + "get": { + "operationId": "user_theme-get-background", + "summary": "Get the background image", + "tags": [ + "user_theme" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "Background image returned", + "headers": { + "Content-Disposition": { + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + } + }, + "404": { + "description": "Background image not found", + "content": { + "text/html": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "/index.php/apps/theming/background/{type}": { + "post": { + "operationId": "user_theme-set-background", + "summary": "Set the background", + "tags": [ + "user_theme" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "value", + "in": "query", + "description": "Path of the background image", + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "color", + "in": "query", + "description": "Color for the background", + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "type", + "in": "path", + "description": "Type of background", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "Background set 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/Background" + } + } + } + } + } + } + } + }, + "400": { + "description": "Setting background is not possible", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/index.php/apps/theming/background/custom": { + "delete": { + "operationId": "user_theme-delete-background", + "summary": "Delete the background", + "tags": [ + "user_theme" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "", + "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/Background" + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/apps/theming/api/v1/theme/{themeId}/enable": { + "put": { + "operationId": "user_theme-enable-theme", + "summary": "Enable theme", + "tags": [ + "user_theme" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "themeId", + "in": "path", + "description": "the theme ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "Theme enabled successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + } + } + }, + "400": { + "description": "Enabling theme is not possible", + "content": { + "text/plain": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + }, + "500": { + "description": "", + "content": { + "text/plain": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/apps/theming/api/v1/theme/{themeId}": { + "delete": { + "operationId": "user_theme-disable-theme", + "summary": "Disable theme", + "tags": [ + "user_theme" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "themeId", + "in": "path", + "description": "the theme ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "Theme disabled successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + } + } + }, + "400": { + "description": "Disabling theme is not possible", + "content": { + "text/plain": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + }, + "500": { + "description": "", + "content": { + "text/plain": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + }, + "tags": [ + { + "name": "theming", + "description": "Class ThemingController\nhandle ajax requests to update the theme" + } + ] +}
\ No newline at end of file |