{ "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": { "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-text", "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-text": { "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": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "plain": { "type": "boolean", "default": false, "description": "Let the browser decide the CSS priority" }, "withCustomCss": { "type": "boolean", "default": false, "description": "Include custom CSS" } } } } } }, "parameters": [ { "name": "themeId", "in": "path", "description": "ID of the theme", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Stylesheet returned", "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": [] } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "useSvg": { "type": "boolean", "default": true, "description": "Return image as SVG" } } } } } }, "parameters": [ { "name": "key", "in": "path", "description": "Key of the image", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Image returned", "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", "default": "core" } } ], "responses": { "200": { "description": "Manifest returned", "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", "minLength": 1 }, "type": { "type": "string" }, "sizes": { "type": "string" } } } }, "display": { "type": "string" } } } } } }, "404": { "description": "App not found", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/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", "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", "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", "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": [] } ], "responses": { "200": { "description": "Background image returned", "content": { "*/*": { "schema": { "type": "string", "format": "binary" } } } }, "404": { "description": "Background image not found", "content": { "text/html": { "schema": { "type": "string" } } } } } } }, "/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", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "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": {} } } } } } } }, "400": { "description": "Enabling theme 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": {} } } } } } } }, "500": { "description": "", "content": { "text/plain": { "schema": { "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", "description": "Required to be true for the API request to pass", "required": true, "schema": { "type": "boolean", "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": {} } } } } } } }, "400": { "description": "Disabling theme 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": {} } } } } } } }, "500": { "description": "", "content": { "text/plain": { "schema": { "type": "string" } } } } } } } }, "tags": [ { "name": "theming", "description": "Class ThemingController\nhandle ajax requests to update the theme" } ] }