You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
954 lines
34 KiB
954 lines
34 KiB
{ |
|
"openapi": "3.1.0", |
|
"info": { |
|
"title": "theming", |
|
"version": "0.0.1", |
|
"description": "Adjust the Nextcloud theme", |
|
"license": { |
|
"name": "agpl", |
|
"identifier": "AGPL-3.0-only" |
|
} |
|
}, |
|
"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", |
|
"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", |
|
"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", |
|
"minLength": 1 |
|
}, |
|
"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", |
|
"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" |
|
} |
|
} |
|
} |
|
}, |
|
"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": [] |
|
} |
|
], |
|
"parameters": [ |
|
{ |
|
"name": "OCS-APIRequest", |
|
"in": "header", |
|
"required": true, |
|
"schema": { |
|
"type": "string", |
|
"default": "true" |
|
} |
|
} |
|
], |
|
"responses": { |
|
"200": { |
|
"description": "Background image returned", |
|
"content": { |
|
"*/*": { |
|
"schema": { |
|
"type": "string", |
|
"format": "binary" |
|
} |
|
} |
|
} |
|
}, |
|
"404": { |
|
"description": "Background image not found", |
|
"content": { |
|
"text/html": { |
|
"schema": { |
|
"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": { |
|
"$ref": "#/components/schemas/Background" |
|
} |
|
} |
|
} |
|
}, |
|
"400": { |
|
"description": "Setting background is not possible", |
|
"content": { |
|
"application/json": { |
|
"schema": { |
|
"type": "object", |
|
"required": [ |
|
"error" |
|
], |
|
"properties": { |
|
"error": { |
|
"type": "string" |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}, |
|
"500": { |
|
"description": "", |
|
"content": { |
|
"application/json": { |
|
"schema": { |
|
"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": { |
|
"$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": {} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}, |
|
"400": { |
|
"description": "Enabling theme is not possible", |
|
"content": { |
|
"text/plain": { |
|
"schema": { |
|
"type": "string" |
|
} |
|
} |
|
} |
|
}, |
|
"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", |
|
"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": {} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}, |
|
"400": { |
|
"description": "Disabling theme is not possible", |
|
"content": { |
|
"text/plain": { |
|
"schema": { |
|
"type": "string" |
|
} |
|
} |
|
} |
|
}, |
|
"500": { |
|
"description": "", |
|
"content": { |
|
"text/plain": { |
|
"schema": { |
|
"type": "string" |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}, |
|
"tags": [ |
|
{ |
|
"name": "theming", |
|
"description": "Class ThemingController\nhandle ajax requests to update the theme" |
|
} |
|
] |
|
} |