aboutsummaryrefslogtreecommitdiffstats
path: root/apps/theming
diff options
context:
space:
mode:
Diffstat (limited to 'apps/theming')
-rw-r--r--apps/theming/openapi.json1206
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