{
    "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": []
                    }
                ],
                "parameters": [
                    {
                        "name": "themeId",
                        "in": "path",
                        "description": "ID of the theme",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "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
                            ]
                        }
                    }
                ],
                "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": "key",
                        "in": "path",
                        "description": "Key of the image",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "useSvg",
                        "in": "query",
                        "description": "Return image as SVG",
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "enum": [
                                0,
                                1
                            ]
                        }
                    }
                ],
                "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"
        }
    ]
}