You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nextcloud/apps/theming/openapi.json

845 lines
31 KiB
JSON

{
"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-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,
"enum": [
0,
1
]
}
},
{
"name": "withCustomCss",
"in": "query",
"description": "Include custom CSS",
"schema": {
"type": "integer",
"default": 0,
"enum": [
0,
1
]
}
},
{
"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,
"enum": [
0,
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",
"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"
}
]
}