{ "openapi": "3.1.0", "paths": { "/api/user-context": { "get": { "operationId": "userContext", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserContextDto" } } } } }, "tags": [ "App" ] } }, "/api/app-context": { "get": { "operationId": "appContext", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppContextDto" } } } } }, "tags": [ "App" ] } }, "/api/user-settings": { "patch": { "operationId": "updateUserSettings", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserSettingsBody" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "App" ] } }, "/api/acknowledge-welcome": { "patch": { "operationId": "acknowledgeWelcome", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AcknowledgeWelcomeBody" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "App" ] } }, "/api/system/load": { "get": { "operationId": "systemLoad", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoadDto" } } } } }, "tags": [ "System" ] } }, "/api/system/certificate": { "get": { "operationId": "downloadLocalCertificate", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "System" ] } }, "/api/i18n/locales/{ns}/{lng}.json": { "get": { "operationId": "getTranslation", "parameters": [ { "name": "ns", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "lng", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": [ "I18n" ] } }, "/api/auth/login": { "post": { "operationId": "login", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginDto" } } } } }, "tags": [ "Auth" ] } }, "/api/auth/verify-totp": { "post": { "operationId": "verifyTotp", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyTotpBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginDto" } } } } }, "tags": [ "Auth" ] } }, "/api/auth/register": { "post": { "operationId": "register", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegisterBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegisterDto" } } } } }, "tags": [ "Auth" ] } }, "/api/auth/logout": { "post": { "operationId": "logout", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Auth" ] } }, "/api/auth/username": { "patch": { "operationId": "changeUsername", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChangeUsernameBody" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "Auth" ] } }, "/api/auth/password": { "patch": { "operationId": "changePassword", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChangePasswordBody" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "Auth" ] } }, "/api/auth/totp/get-uri": { "patch": { "operationId": "getTotpUri", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTotpUriBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTotpUriDto" } } } } }, "tags": [ "Auth" ] } }, "/api/auth/totp/setup": { "patch": { "operationId": "setupTotp", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetupTotpBody" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "Auth" ] } }, "/api/auth/totp/disable": { "patch": { "operationId": "disableTotp", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DisableTotpBody" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "Auth" ] } }, "/api/auth/reset-password": { "post": { "operationId": "resetPassword", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResetPasswordBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResetPasswordDto" } } } } }, "tags": [ "Auth" ] } }, "/api/auth/traefik": { "get": { "operationId": "traefik", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Auth" ] } }, "/api/apps/installed": { "get": { "operationId": "getInstalledApps", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MyAppsDto" } } } } }, "tags": [ "Apps" ] } }, "/api/apps/guest": { "get": { "operationId": "getGuestApps", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GuestAppsDto" } } } } }, "tags": [ "Apps" ] } }, "/api/apps/random-port": { "post": { "operationId": "getRandomPort", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRandomPortDto" } } } } }, "tags": [ "Apps" ] } }, "/api/apps/{urn}": { "get": { "operationId": "getApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAppDto" } } } } }, "tags": [ "Apps" ] } }, "/api/apps/{urn}/compose-diff": { "get": { "operationId": "getAppComposeDiff", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetComposeDiffDto" } } } } }, "tags": [ "Apps" ] } }, "/api/apps/{urn}/config-diff": { "get": { "operationId": "getAppConfigDiff", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetConfigDiffDto" } } } } }, "tags": [ "Apps" ] } }, "/api/apps/{urn}/ignore-version": { "patch": { "operationId": "ignoreAppVersion", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": [ "Apps" ] } }, "/api/apps/{urn}/unignore-version": { "patch": { "operationId": "unignoreAppVersion", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": [ "Apps" ] } }, "/api/marketplace/apps/search": { "get": { "operationId": "searchApps", "parameters": [ { "name": "category", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "ai", "automation", "books", "data", "development", "featured", "finance", "gaming", "media", "music", "network", "photography", "security", "social", "utilities" ] } }, { "name": "cursor", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "pageSize", "required": false, "in": "query", "schema": { "anyOf": [ { "type": "integer" }, { "type": "string", "pattern": "^(?:(?!^-0$)-?(?:(?:0|[1-9]\\d*)))$" } ], "type": "string" } }, { "name": "search", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "storeId", "required": false, "in": "query", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SearchAppsDto" } } } } }, "tags": [ "Marketplace" ] } }, "/api/marketplace/apps/{urn}/image": { "get": { "operationId": "getImage", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": [ "Marketplace" ] } }, "/api/marketplace/pull": { "post": { "operationId": "pullAppStores", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PullDto" } } } } }, "tags": [ "Marketplace" ] } }, "/api/marketplace/create": { "post": { "operationId": "createAppStore", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateAppStoreBodyDto" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppStoreDto" } } } } }, "tags": [ "Marketplace" ] } }, "/api/marketplace/all": { "get": { "operationId": "getAllAppStores", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AllAppStoresDto" } } } } }, "tags": [ "Marketplace" ] } }, "/api/marketplace/enabled": { "get": { "operationId": "getEnabledAppStores", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AllAppStoresDto" } } } } }, "tags": [ "Marketplace" ] } }, "/api/marketplace/{id}": { "patch": { "operationId": "updateAppStore", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAppStoreBodyDto" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAppStoreDto" } } } } }, "tags": [ "Marketplace" ] }, "delete": { "operationId": "deleteAppStore", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "tags": [ "Marketplace" ] } }, "/api/app-lifecycle/{urn}/install": { "post": { "operationId": "installApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppFormBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleRequestDto" } } } } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/{urn}/start": { "post": { "operationId": "startApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleRequestDto" } } } } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/{urn}/stop": { "post": { "operationId": "stopApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleRequestDto" } } } } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/{urn}/restart": { "post": { "operationId": "restartApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleRequestDto" } } } } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/{urn}/uninstall": { "delete": { "operationId": "uninstallApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UninstallAppBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleRequestDto" } } } } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/{urn}/reset": { "post": { "operationId": "resetApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleRequestDto" } } } } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/{urn}/update": { "patch": { "operationId": "updateApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAppBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleRequestDto" } } } } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/{urn}/update-config": { "patch": { "operationId": "updateAppSettings", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppFormBody" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleRequestDto" } } } } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/update-all": { "patch": { "operationId": "updateAllApps", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/start-all": { "post": { "operationId": "startAllApps", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/stop-all": { "post": { "operationId": "stopAllApps", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "AppLifecycle" ] } }, "/api/app-lifecycle/restart-all": { "post": { "operationId": "restartAllApps", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "AppLifecycle" ] } }, "/api/backups/{urn}/backup": { "post": { "operationId": "backupApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackupRequestDto" } } } } }, "tags": [ "Backups" ] } }, "/api/backups/{urn}/restore": { "post": { "operationId": "restoreAppBackup", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreAppBackupDto" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackupRequestDto" } } } } }, "tags": [ "Backups" ] } }, "/api/backups/{urn}": { "get": { "operationId": "getAppBackups", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "schema": { "anyOf": [ { "type": "integer" }, { "type": "string", "pattern": "^(?:(?!^-0$)-?(?:(?:0|[1-9]\\d*)))$" } ], "type": "string" } }, { "name": "pageSize", "required": false, "in": "query", "schema": { "anyOf": [ { "type": "integer" }, { "type": "string", "pattern": "^(?:(?!^-0$)-?(?:(?:0|[1-9]\\d*)))$" } ], "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAppBackupsDto" } } } } }, "tags": [ "Backups" ] }, "delete": { "operationId": "deleteAppBackup", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteAppBackupBodyDto" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "Backups" ] } }, "/api/backups/{urn}/{filename}/download": { "get": { "operationId": "downloadBackup", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "filename", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Backup file download" } }, "tags": [ "Backups" ] } }, "/api/backups/{urn}/upload": { "post": { "operationId": "uploadBackup", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "file": { "type": "string", "format": "binary" } } } } } }, "responses": { "201": { "description": "Backup uploaded successfully" } }, "tags": [ "Backups" ] } }, "/api/sse/app": { "get": { "operationId": "appEvents", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "SSE" ] } }, "/api/sse/app-logs": { "get": { "operationId": "appLogsEvents", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "SSE" ] } }, "/api/sse/runtipi-logs": { "get": { "operationId": "runtipiLogsEvents", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "SSE" ] } }, "/api/links/guest": { "get": { "operationId": "getGuestLinks", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinksDto" } } } } }, "tags": [ "Links" ] } }, "/api/links": { "get": { "operationId": "getLinks", "parameters": [], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinksDto" } } } } }, "tags": [ "Links" ] }, "post": { "operationId": "createLink", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkBodyDto" } } } }, "responses": { "201": { "description": "" } }, "tags": [ "Links" ] } }, "/api/links/{id}": { "patch": { "operationId": "editLink", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditLinkBodyDto" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "Links" ] }, "delete": { "operationId": "deleteLink", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } }, "tags": [ "Links" ] } }, "/api/health": { "get": { "operationId": "check", "parameters": [], "responses": { "200": { "description": "The Health Check is successful", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "ok" }, "info": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "error": { "type": "object", "example": {}, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "details": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true } } } } } } }, "503": { "description": "The Health Check is not successful", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "error" }, "info": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "error": { "type": "object", "example": { "redis": { "status": "down", "message": "Could not connect" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "details": { "type": "object", "example": { "database": { "status": "up" }, "redis": { "status": "down", "message": "Could not connect" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true } } } } } } } }, "tags": [ "Health" ] } }, "/api/user-config/{urn}": { "get": { "operationId": "getUserConfig", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUserConfigDto" } } } } }, "summary": "Get the user configuration for an app", "tags": [ "User Config" ] }, "put": { "operationId": "updateUserConfig", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserConfigDto" } } } }, "responses": { "200": { "description": "" } }, "summary": "Update the user configuration for an app", "tags": [ "User Config" ] } }, "/api/user-config/{urn}/enable": { "post": { "operationId": "enableUserConfig", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "201": { "description": "" } }, "summary": "Enable the user configuration for an app", "tags": [ "User Config" ] } }, "/api/user-config/{urn}/disable": { "post": { "operationId": "disableUserConfig", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "201": { "description": "" } }, "summary": "Disable the user configuration for an app", "tags": [ "User Config" ] } }, "/api/custom-apps": { "post": { "operationId": "createCustomApp", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCustomAppDto" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCustomAppResponseDto" } } } } }, "tags": [ "CustomApp" ] } }, "/api/custom-apps/{urn}": { "patch": { "operationId": "updateCustomApp", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCustomAppDto" } } } }, "responses": { "default": { "description": "" } }, "tags": [ "CustomApp" ] } }, "/api/custom-apps/{urn}/image": { "post": { "operationId": "uploadAppImage", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "image": { "type": "string", "format": "binary" } } } } } }, "responses": { "200": { "description": "Logo uploaded successfully" } }, "tags": [ "CustomApp" ] } }, "/api/custom-apps/{urn}/metadata": { "patch": { "operationId": "updateAppMetadata", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAppMetadataDto" } } } }, "responses": { "default": { "description": "" } }, "tags": [ "CustomApp" ] } }, "/api/apps/{urn}/config": { "get": { "operationId": "getEditableAppConfig", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAppConfigDto" } } } } }, "summary": "", "tags": [ "AppConfig" ] }, "post": { "operationId": "updateEditableAppConfig", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAppConfigBodyDto" } } } }, "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppConfigSuccessDto" } } } } }, "summary": "", "tags": [ "AppConfig" ] } }, "/api/apps/{urn}/template/diff": { "get": { "operationId": "getTemplateDiff", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateDiffDto" } } } } }, "summary": "", "tags": [ "AppConfig" ] } }, "/api/apps/{urn}/template/sync": { "post": { "operationId": "syncWithTemplate", "parameters": [ { "name": "urn", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "default": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppConfigSuccessDto" } } } } }, "summary": "", "tags": [ "AppConfig" ] } }, "/api/debug/seed": { "post": { "operationId": "seedDatabase", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Debug" ] } }, "/api/debug/set-all-app-update-available": { "post": { "operationId": "setAllAppUpdateAvailable", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Debug" ] } }, "/api/debug/set-all-subnets-to-null": { "post": { "operationId": "setAllAppSubnetToNull", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Debug" ] } }, "/api/debug/start-all-apps": { "post": { "operationId": "startAllApps", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Debug" ] } }, "/api/debug/backup-all-apps": { "post": { "operationId": "backupAllApps", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Debug" ] } }, "/api/debug/increment-all-app-versions": { "post": { "operationId": "incrementAllAppVersions", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Debug" ] } }, "/api/debug/uninstall-all-apps": { "post": { "operationId": "uninstallAllApps", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Debug" ] } } }, "info": { "title": "Runtipi API", "description": "API specs for Runtipi", "version": "1.0", "contact": {} }, "tags": [], "servers": [], "components": { "schemas": { "UserContextDto": { "type": "object", "properties": { "allowAutoThemes": { "type": "boolean" }, "allowErrorMonitoring": { "type": "boolean" }, "isConfigured": { "type": "boolean" }, "isGuestDashboardEnabled": { "type": "boolean" }, "isLoggedIn": { "type": "boolean" }, "localDomain": { "type": "string" }, "sslPort": { "type": "number" }, "themeBase": { "type": "string" }, "themeColor": { "type": "string" }, "version": { "type": "object", "properties": { "body": { "type": "string" }, "current": { "type": "string" }, "latest": { "type": "string" }, "releases": { "type": "array", "items": { "type": "object", "properties": { "body": { "type": "string" }, "version": { "type": "string" } }, "required": [ "body", "version" ] } } }, "required": [ "body", "current", "latest", "releases" ] } }, "required": [ "allowAutoThemes", "allowErrorMonitoring", "isConfigured", "isGuestDashboardEnabled", "isLoggedIn", "localDomain", "sslPort", "themeBase", "themeColor", "version" ] }, "AppContextDto": { "type": "object", "properties": { "apps": { "type": "array", "items": { "type": "object", "properties": { "available": { "type": "boolean" }, "categories": { "type": "array", "items": { "enum": [ "ai", "automation", "books", "data", "development", "featured", "finance", "gaming", "media", "music", "network", "photography", "security", "social", "utilities" ] } }, "created_at": { "type": "integer", "minimum": 0 }, "deprecated": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "short_desc": { "type": "string" }, "supported_architectures": { "type": "array", "items": { "enum": [ "amd64", "arm64" ] } }, "urn": { "type": "string" } }, "required": [ "available", "categories", "created_at", "deprecated", "id", "name", "short_desc", "supported_architectures", "urn" ] } }, "updatesAvailable": { "type": "number" }, "user": { "type": "object", "properties": { "hasSeenWelcome": { "type": "boolean" }, "id": { "type": "integer" }, "locale": { "type": "string", "pattern": "^\\S.*\\S$|^\\S?$" }, "operator": { "type": "boolean" }, "totpEnabled": { "type": "boolean" }, "username": { "type": "string", "pattern": "^\\S.*\\S$|^\\S?$" } }, "required": [ "hasSeenWelcome", "id", "locale", "operator", "totpEnabled", "username" ] }, "userSettings": { "type": "object", "properties": { "advancedSettings": { "type": "boolean" }, "allowAutoThemes": { "type": "boolean" }, "allowErrorMonitoring": { "type": "boolean" }, "appDataPath": { "type": "string", "pattern": "^\\S.*\\S$|^\\S?$" }, "appsRepoUrl": { "type": "string", "format": "uri" }, "demoMode": { "type": "boolean" }, "dnsIp": { "type": "string", "pattern": "^((?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$", "format": "ipv4" }, "domain": { "type": "string", "pattern": "^\\S.*\\S$|^\\S?$" }, "eventsTimeout": { "type": "number", "maximum": 120, "minimum": 1 }, "forwardAuthUrl": { "type": "string", "format": "uri" }, "guestDashboard": { "type": "boolean" }, "internalIp": { "type": "string", "pattern": "^((?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$", "format": "ipv4" }, "listenIp": { "type": "string", "pattern": "^((?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$", "format": "ipv4" }, "localDomain": { "type": "string", "pattern": "^\\S.*\\S$|^\\S?$" }, "logLevel": { "enum": [ "debug", "error", "info", "warn" ] }, "maxBackups": { "type": "number", "maximum": 100, "minimum": 0 }, "persistTraefikConfig": { "type": "boolean" }, "port": { "type": "number", "maximum": 65535, "minimum": 0 }, "postgresPort": { "type": "number", "maximum": 65535, "minimum": 0 }, "sslPort": { "type": "number", "maximum": 65535, "minimum": 0 }, "timeZone": { "type": "string", "pattern": "^\\S.*\\S$|^\\S?$" }, "experimental_insecureCookie": { "type": "boolean" }, "themeBase": { "type": "string" }, "themeColor": { "type": "string" } }, "required": [ "advancedSettings", "allowAutoThemes", "allowErrorMonitoring", "appDataPath", "appsRepoUrl", "demoMode", "dnsIp", "domain", "eventsTimeout", "forwardAuthUrl", "guestDashboard", "internalIp", "listenIp", "localDomain", "logLevel", "maxBackups", "persistTraefikConfig", "port", "postgresPort", "sslPort", "timeZone" ] }, "version": { "type": "object", "properties": { "body": { "type": "string" }, "current": { "type": "string" }, "latest": { "type": "string" }, "releases": { "type": "array", "items": { "type": "object", "properties": { "body": { "type": "string" }, "version": { "type": "string" } }, "required": [ "body", "version" ] } } }, "required": [ "body", "current", "latest", "releases" ] } }, "required": [ "apps", "updatesAvailable", "user", "userSettings", "version" ] }, "UserSettingsBody": { "type": "object", "properties": { "advancedSettings": { "type": "boolean" }, "allowAutoThemes": { "type": "boolean" }, "allowErrorMonitoring": { "type": "boolean" }, "appDataPath": { "type": "string" }, "appsRepoUrl": { "type": "string", "format": "uri" }, "demoMode": { "type": "boolean" }, "dnsIp": { "type": "string", "pattern": "^((?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$", "format": "ipv4" }, "domain": { "type": "string" }, "eventsTimeout": { "anyOf": [ { "type": "integer" }, { "type": "string", "pattern": "^(?:(?!^-0$)-?(?:(?:0|[1-9]\\d*)))$" } ] }, "experimental_insecureCookie": { "type": "boolean" }, "forwardAuthUrl": { "type": "string", "format": "uri" }, "guestDashboard": { "type": "boolean" }, "internalIp": { "type": "string", "pattern": "^((?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$", "format": "ipv4" }, "listenIp": { "type": "string", "pattern": "^((?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$", "format": "ipv4" }, "localDomain": { "type": "string" }, "logLevel": { "type": "string", "enum": [ "debug", "error", "info", "warn" ] }, "maxBackups": { "anyOf": [ { "type": "integer" }, { "type": "string", "pattern": "^(?:(?!^-0$)-?(?:(?:0|[1-9]\\d*)))$" } ] }, "persistTraefikConfig": { "type": "boolean" }, "port": { "anyOf": [ { "type": "integer" }, { "type": "string", "pattern": "^(?:(?!^-0$)-?(?:(?:0|[1-9]\\d*)))$" } ] }, "postgresPort": { "anyOf": [ { "type": "integer" }, { "type": "string", "pattern": "^(?:(?!^-0$)-?(?:(?:0|[1-9]\\d*)))$" } ] }, "sslPort": { "anyOf": [ { "type": "integer" }, { "type": "string", "pattern": "^(?:(?!^-0$)-?(?:(?:0|[1-9]\\d*)))$" } ] }, "themeBase": { "type": "string" }, "themeColor": { "type": "string" }, "timeZone": { "type": "string" } } }, "AcknowledgeWelcomeBody": { "type": "object", "properties": { "allowErrorMonitoring": { "type": "boolean" } }, "required": [ "allowErrorMonitoring" ] }, "LoadDto": { "type": "object", "properties": { "cpuLoad": { "type": "number" }, "diskSize": { "type": "number" }, "diskUsed": { "type": "number" }, "memoryTotal": { "type": "number" }, "percentUsed": { "type": "number" }, "percentUsedMemory": { "type": "number" } }, "required": [ "cpuLoad", "diskSize", "diskUsed", "memoryTotal", "percentUsed", "percentUsedMemory" ] }, "LoginBody": { "type": "object", "properties": { "password": { "type": "string" }, "username": { "type": "string" } }, "required": [ "password", "username" ] }, "LoginDto": { "type": "object", "properties": { "success": { "type": "boolean" }, "totpSessionId": { "type": "string" } }, "required": [ "success" ] }, "VerifyTotpBody": { "type": "object", "properties": { "totpCode": { "type": "string" }, "totpSessionId": { "type": "string" } }, "required": [ "totpCode", "totpSessionId" ] }, "RegisterBody": { "type": "object", "properties": { "password": { "type": "string" }, "username": { "type": "string" } }, "required": [ "password", "username" ] }, "RegisterDto": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] }, "ChangeUsernameBody": { "type": "object", "properties": { "newUsername": { "type": "string" }, "password": { "type": "string" } }, "required": [ "newUsername", "password" ] }, "ChangePasswordBody": { "type": "object", "properties": { "currentPassword": { "type": "string" }, "newPassword": { "type": "string" } }, "required": [ "currentPassword", "newPassword" ] }, "GetTotpUriBody": { "type": "object", "properties": { "password": { "type": "string" } }, "required": [ "password" ] }, "GetTotpUriDto": { "type": "object", "properties": { "key": { "type": "string" }, "uri": { "type": "string" } }, "required": [ "key", "uri" ] }, "SetupTotpBody": { "type": "object", "properties": { "code": { "type": "string" } }, "required": [ "code" ] }, "DisableTotpBody": { "type": "object", "properties": { "password": { "type": "string" } }, "required": [ "password" ] }, "ResetPasswordBody": { "type": "object", "properties": { "newPassword": { "type": "string" } }, "required": [ "newPassword" ] }, "ResetPasswordDto": { "type": "object", "properties": { "email": { "type": "string" }, "success": { "type": "boolean" } }, "required": [ "email", "success" ] }, "MyAppsDto": { "type": "object", "properties": { "installed": { "type": "array", "items": { "type": "object", "properties": { "app": { "type": "object", "properties": { "createdAt": { "type": "number" }, "domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "exposed": { "type": "boolean" }, "exposedLocal": { "type": "boolean" }, "id": { "type": "number" }, "ignoredVersion": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "isVisibleOnGuestDashboard": { "type": "boolean" }, "openPort": { "type": "boolean" }, "pendingRestart": { "type": "boolean" }, "port": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "status": { "enum": [ "backing_up", "installing", "missing", "resetting", "restarting", "restoring", "running", "starting", "stopped", "stopping", "uninstalling", "updating" ] }, "templateUrn": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "updatedAt": { "type": "number" }, "version": { "type": "number" }, "config": { "type": "object", "additionalProperties": {} }, "enableAuth": { "type": "boolean" }, "localSubdomain": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "createdAt", "domain", "exposed", "exposedLocal", "id", "ignoredVersion", "isVisibleOnGuestDashboard", "openPort", "pendingRestart", "port", "status", "templateUrn", "updatedAt", "version" ] }, "info": { "type": "object", "properties": { "author": { "type": "string" }, "available": { "type": "boolean" }, "categories": { "type": "array", "items": { "enum": [ "ai", "automation", "books", "data", "development", "featured", "finance", "gaming", "media", "music", "network", "photography", "security", "social", "utilities" ] } }, "created_at": { "type": "integer", "minimum": 0 }, "deprecated": { "type": "boolean" }, "description": { "type": "string" }, "dynamic_config": { "type": "boolean" }, "exposable": { "type": "boolean" }, "force_expose": { "type": "boolean" }, "force_pull": { "type": "boolean" }, "form_fields": { "type": "array", "items": { "type": "object", "properties": { "env_variable": { "type": "string" }, "label": { "type": "string" }, "required": { "type": "boolean" }, "type": { "enum": [ "boolean", "email", "fqdn", "fqdnip", "ip", "number", "password", "random", "text", "url" ] }, "default": { "anyOf": [ { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "encoding": { "enum": [ "base64", "hex" ] }, "hint": { "type": "string" }, "max": { "type": "number" }, "min": { "type": "number" }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ] } }, "pattern_error": { "type": "string" }, "placeholder": { "type": "string" }, "regex": { "type": "string" } }, "required": [ "env_variable", "label", "required", "type" ] } }, "generate_vapid_keys": { "type": "boolean" }, "https": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "no_gui": { "type": "boolean" }, "short_desc": { "type": "string" }, "source": { "type": "string" }, "supported_architectures": { "type": "array", "items": { "enum": [ "amd64", "arm64" ] } }, "tipi_version": { "type": "number" }, "updated_at": { "type": "integer", "minimum": 0 }, "urn": { "type": "string" }, "version": { "type": "string" }, "gid": { "type": "number" }, "min_tipi_version": { "type": "string" }, "port": { "type": "number", "maximum": 65535, "minimum": 1 }, "uid": { "type": "number" }, "url_suffix": { "type": "string" }, "website": { "type": "string" } }, "required": [ "author", "available", "categories", "created_at", "deprecated", "description", "dynamic_config", "exposable", "force_expose", "force_pull", "form_fields", "generate_vapid_keys", "https", "id", "name", "no_gui", "short_desc", "source", "supported_architectures", "tipi_version", "updated_at", "urn", "version" ] }, "metadata": { "type": "object", "properties": { "latestVersion": { "type": "number" }, "localSubdomain": { "type": "string" }, "composeSchemaVersion": { "type": "number" }, "hasCustomConfig": { "type": "boolean" }, "latestDockerVersion": { "type": "string" }, "minTipiVersion": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "latestVersion", "localSubdomain" ] } }, "required": [ "app", "info", "metadata" ] } } }, "required": [ "installed" ] }, "GuestAppsDto": { "type": "object", "properties": { "installed": { "type": "array", "items": { "type": "object", "properties": { "app": { "type": "object", "properties": { "createdAt": { "type": "number" }, "domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "exposed": { "type": "boolean" }, "exposedLocal": { "type": "boolean" }, "id": { "type": "number" }, "ignoredVersion": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "isVisibleOnGuestDashboard": { "type": "boolean" }, "openPort": { "type": "boolean" }, "pendingRestart": { "type": "boolean" }, "port": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "status": { "enum": [ "backing_up", "installing", "missing", "resetting", "restarting", "restoring", "running", "starting", "stopped", "stopping", "uninstalling", "updating" ] }, "templateUrn": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "updatedAt": { "type": "number" }, "version": { "type": "number" }, "config": { "type": "object", "additionalProperties": {} }, "enableAuth": { "type": "boolean" }, "localSubdomain": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "createdAt", "domain", "exposed", "exposedLocal", "id", "ignoredVersion", "isVisibleOnGuestDashboard", "openPort", "pendingRestart", "port", "status", "templateUrn", "updatedAt", "version" ] }, "info": { "type": "object", "properties": { "author": { "type": "string" }, "available": { "type": "boolean" }, "categories": { "type": "array", "items": { "enum": [ "ai", "automation", "books", "data", "development", "featured", "finance", "gaming", "media", "music", "network", "photography", "security", "social", "utilities" ] } }, "created_at": { "type": "integer", "minimum": 0 }, "deprecated": { "type": "boolean" }, "description": { "type": "string" }, "dynamic_config": { "type": "boolean" }, "exposable": { "type": "boolean" }, "force_expose": { "type": "boolean" }, "force_pull": { "type": "boolean" }, "form_fields": { "type": "array", "items": { "type": "object", "properties": { "env_variable": { "type": "string" }, "label": { "type": "string" }, "required": { "type": "boolean" }, "type": { "enum": [ "boolean", "email", "fqdn", "fqdnip", "ip", "number", "password", "random", "text", "url" ] }, "default": { "anyOf": [ { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "encoding": { "enum": [ "base64", "hex" ] }, "hint": { "type": "string" }, "max": { "type": "number" }, "min": { "type": "number" }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ] } }, "pattern_error": { "type": "string" }, "placeholder": { "type": "string" }, "regex": { "type": "string" } }, "required": [ "env_variable", "label", "required", "type" ] } }, "generate_vapid_keys": { "type": "boolean" }, "https": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "no_gui": { "type": "boolean" }, "short_desc": { "type": "string" }, "source": { "type": "string" }, "supported_architectures": { "type": "array", "items": { "enum": [ "amd64", "arm64" ] } }, "tipi_version": { "type": "number" }, "updated_at": { "type": "integer", "minimum": 0 }, "urn": { "type": "string" }, "version": { "type": "string" }, "gid": { "type": "number" }, "min_tipi_version": { "type": "string" }, "port": { "type": "number", "maximum": 65535, "minimum": 1 }, "uid": { "type": "number" }, "url_suffix": { "type": "string" }, "website": { "type": "string" } }, "required": [ "author", "available", "categories", "created_at", "deprecated", "description", "dynamic_config", "exposable", "force_expose", "force_pull", "form_fields", "generate_vapid_keys", "https", "id", "name", "no_gui", "short_desc", "source", "supported_architectures", "tipi_version", "updated_at", "urn", "version" ] }, "metadata": { "type": "object", "properties": { "latestVersion": { "type": "number" }, "localSubdomain": { "type": "string" }, "composeSchemaVersion": { "type": "number" }, "hasCustomConfig": { "type": "boolean" }, "latestDockerVersion": { "type": "string" }, "minTipiVersion": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "latestVersion", "localSubdomain" ] } }, "required": [ "app", "info", "metadata" ] } } }, "required": [ "installed" ] }, "GetRandomPortDto": { "type": "object", "properties": { "port": { "type": "number" } }, "required": [ "port" ] }, "GetAppDto": { "type": "object", "properties": { "info": { "type": "object", "properties": { "author": { "type": "string" }, "available": { "type": "boolean" }, "categories": { "type": "array", "items": { "enum": [ "ai", "automation", "books", "data", "development", "featured", "finance", "gaming", "media", "music", "network", "photography", "security", "social", "utilities" ] } }, "created_at": { "type": "integer", "minimum": 0 }, "deprecated": { "type": "boolean" }, "description": { "type": "string" }, "dynamic_config": { "type": "boolean" }, "exposable": { "type": "boolean" }, "force_expose": { "type": "boolean" }, "force_pull": { "type": "boolean" }, "form_fields": { "type": "array", "items": { "type": "object", "properties": { "env_variable": { "type": "string" }, "label": { "type": "string" }, "required": { "type": "boolean" }, "type": { "enum": [ "boolean", "email", "fqdn", "fqdnip", "ip", "number", "password", "random", "text", "url" ] }, "default": { "anyOf": [ { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "encoding": { "enum": [ "base64", "hex" ] }, "hint": { "type": "string" }, "max": { "type": "number" }, "min": { "type": "number" }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ] } }, "pattern_error": { "type": "string" }, "placeholder": { "type": "string" }, "regex": { "type": "string" } }, "required": [ "env_variable", "label", "required", "type" ] } }, "generate_vapid_keys": { "type": "boolean" }, "https": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "no_gui": { "type": "boolean" }, "short_desc": { "type": "string" }, "source": { "type": "string" }, "supported_architectures": { "type": "array", "items": { "enum": [ "amd64", "arm64" ] } }, "tipi_version": { "type": "number" }, "updated_at": { "type": "integer", "minimum": 0 }, "urn": { "type": "string" }, "version": { "type": "string" }, "gid": { "type": "number" }, "min_tipi_version": { "type": "string" }, "port": { "type": "number", "maximum": 65535, "minimum": 1 }, "uid": { "type": "number" }, "url_suffix": { "type": "string" }, "website": { "type": "string" } }, "required": [ "author", "available", "categories", "created_at", "deprecated", "description", "dynamic_config", "exposable", "force_expose", "force_pull", "form_fields", "generate_vapid_keys", "https", "id", "name", "no_gui", "short_desc", "source", "supported_architectures", "tipi_version", "updated_at", "urn", "version" ] }, "metadata": { "type": "object", "properties": { "latestVersion": { "type": "number" }, "localSubdomain": { "type": "string" }, "composeSchemaVersion": { "type": "number" }, "hasCustomConfig": { "type": "boolean" }, "latestDockerVersion": { "type": "string" }, "minTipiVersion": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "latestVersion", "localSubdomain" ] }, "app": { "anyOf": [ { "type": "object", "properties": { "createdAt": { "type": "number" }, "domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "exposed": { "type": "boolean" }, "exposedLocal": { "type": "boolean" }, "id": { "type": "number" }, "ignoredVersion": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "isVisibleOnGuestDashboard": { "type": "boolean" }, "openPort": { "type": "boolean" }, "pendingRestart": { "type": "boolean" }, "port": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "status": { "enum": [ "backing_up", "installing", "missing", "resetting", "restarting", "restoring", "running", "starting", "stopped", "stopping", "uninstalling", "updating" ] }, "templateUrn": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "updatedAt": { "type": "number" }, "version": { "type": "number" }, "config": { "type": "object", "additionalProperties": {} }, "enableAuth": { "type": "boolean" }, "localSubdomain": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "createdAt", "domain", "exposed", "exposedLocal", "id", "ignoredVersion", "isVisibleOnGuestDashboard", "openPort", "pendingRestart", "port", "status", "templateUrn", "updatedAt", "version" ] }, { "type": "null" } ] } }, "required": [ "info", "metadata" ] }, "GetComposeDiffDto": { "type": "object", "properties": { "current": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "new": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "current", "new" ] }, "GetConfigDiffDto": { "type": "object", "properties": { "current": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "new": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "current", "new" ] }, "SearchAppsDto": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "available": { "type": "boolean" }, "categories": { "type": "array", "items": { "enum": [ "ai", "automation", "books", "data", "development", "featured", "finance", "gaming", "media", "music", "network", "photography", "security", "social", "utilities" ] } }, "created_at": { "type": "integer", "minimum": 0 }, "deprecated": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "short_desc": { "type": "string" }, "supported_architectures": { "type": "array", "items": { "enum": [ "amd64", "arm64" ] } }, "urn": { "type": "string" } }, "required": [ "available", "categories", "created_at", "deprecated", "id", "name", "short_desc", "supported_architectures", "urn" ] } }, "total": { "type": "number" }, "nextCursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "data", "total" ] }, "PullDto": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] }, "CreateAppStoreBodyDto": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 16, "minLength": 1 }, "url": { "type": "string", "format": "uri" } }, "required": [ "name", "url" ] }, "AppStoreDto": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "name": { "type": "string" }, "slug": { "type": "string" }, "url": { "type": "string" } }, "required": [ "enabled", "name", "slug", "url" ] }, "AllAppStoresDto": { "type": "object", "properties": { "appStores": { "type": "array", "items": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "name": { "type": "string" }, "slug": { "type": "string" }, "url": { "type": "string" } }, "required": [ "enabled", "name", "slug", "url" ] } } }, "required": [ "appStores" ] }, "UpdateAppStoreBodyDto": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "name": { "type": "string" } }, "required": [ "enabled", "name" ] }, "UpdateAppStoreDto": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] }, "AppFormBody": { "type": "object", "properties": { "domain": { "type": "string" }, "enableAuth": { "type": "boolean" }, "exposed": { "type": "boolean" }, "exposedLocal": { "type": "boolean" }, "forcePull": { "type": "boolean" }, "isVisibleOnGuestDashboard": { "type": "boolean" }, "localSubdomain": { "type": "string", "pattern": "^[a-zA-Z0-9-]{1,63}$" }, "maxBackups": { "type": "number", "maximum": 100, "minimum": 0 }, "openPort": { "type": "boolean" }, "port": { "type": "number", "maximum": 65535, "minimum": 1024 }, "skipEnv": { "type": "boolean" }, "skipPull": { "type": "boolean" }, "skipRun": { "type": "boolean" } } }, "LifecycleRequestDto": { "type": "object", "properties": { "requestId": { "anyOf": [ { "type": "string", "description": "a UUID", "format": "uuid", "pattern": "[\\da-f]{8}-[\\da-f]{4}-[1-8][\\da-f]{3}-[89ab][\\da-f]{3}-[\\da-f]{12}" }, { "const": "00000000-0000-0000-0000-000000000000", "description": "a UUID", "format": "uuid" }, { "const": "ffffffff-ffff-ffff-ffff-ffffffffffff", "description": "a UUID", "format": "uuid" } ], "description": "a UUID", "format": "uuid" } }, "required": [ "requestId" ] }, "UninstallAppBody": { "type": "object", "properties": { "removeBackups": { "type": "boolean" } }, "required": [ "removeBackups" ] }, "UpdateAppBody": { "type": "object", "properties": { "performBackup": { "type": "boolean" } }, "required": [ "performBackup" ] }, "BackupRequestDto": { "type": "object", "properties": { "requestId": { "anyOf": [ { "type": "string", "description": "a UUID", "format": "uuid", "pattern": "[\\da-f]{8}-[\\da-f]{4}-[1-8][\\da-f]{3}-[89ab][\\da-f]{3}-[\\da-f]{12}" }, { "const": "00000000-0000-0000-0000-000000000000", "description": "a UUID", "format": "uuid" }, { "const": "ffffffff-ffff-ffff-ffff-ffffffffffff", "description": "a UUID", "format": "uuid" } ], "description": "a UUID", "format": "uuid" } }, "required": [ "requestId" ] }, "RestoreAppBackupDto": { "type": "object", "properties": { "filename": { "type": "string" } }, "required": [ "filename" ] }, "GetAppBackupsDto": { "type": "object", "properties": { "currentPage": { "type": "number" }, "data": { "type": "array", "items": { "type": "object", "properties": { "date": { "type": "number" }, "id": { "type": "string" }, "size": { "type": "number" } }, "required": [ "date", "id", "size" ] } }, "lastPage": { "type": "number" }, "total": { "type": "number" } }, "required": [ "currentPage", "data", "lastPage", "total" ] }, "DeleteAppBackupBodyDto": { "type": "object", "properties": { "filename": { "type": "string" } }, "required": [ "filename" ] }, "LinksDto": { "type": "object", "properties": { "links": { "type": "array", "items": { "type": "object", "properties": { "description": { "anyOf": [ { "type": "string", "maxLength": 50 }, { "type": "null" } ] }, "iconUrl": { "anyOf": [ { "type": "string", "format": "uri" }, { "const": "" }, { "type": "null" } ] }, "id": { "type": "number" }, "isVisibleOnGuestDashboard": { "type": "boolean" }, "title": { "type": "string", "maxLength": 20, "minLength": 1 }, "url": { "type": "string", "format": "uri" }, "userId": { "type": "number" } }, "required": [ "description", "iconUrl", "id", "isVisibleOnGuestDashboard", "title", "url", "userId" ] } } }, "required": [ "links" ] }, "LinkBodyDto": { "type": "object", "properties": { "title": { "type": "string", "maxLength": 20, "minLength": 1 }, "url": { "type": "string", "format": "uri" }, "description": { "type": "string", "maxLength": 50 }, "iconUrl": { "anyOf": [ { "type": "string", "format": "uri" }, { "const": "" } ] }, "isVisibleOnGuestDashboard": { "type": "boolean" } }, "required": [ "title", "url" ] }, "EditLinkBodyDto": { "type": "object", "properties": { "title": { "type": "string", "maxLength": 20, "minLength": 1 }, "url": { "type": "string", "format": "uri" }, "description": { "type": "string", "maxLength": 50 }, "iconUrl": { "anyOf": [ { "type": "string", "format": "uri" }, { "const": "" } ] }, "isVisibleOnGuestDashboard": { "type": "boolean" } }, "required": [ "title", "url" ] }, "GetUserConfigDto": { "type": "object", "properties": { "appEnv": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "dockerCompose": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "isEnabled": { "type": "boolean" }, "sourceCompose": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "appEnv", "dockerCompose", "isEnabled", "sourceCompose" ] }, "UpdateUserConfigDto": { "type": "object", "properties": { "appEnv": { "type": "string" }, "dockerCompose": { "type": "string" } }, "required": [ "appEnv", "dockerCompose" ] }, "CreateCustomAppDto": { "type": "object", "properties": { "config": { "type": "object", "properties": { "services": { "type": "object", "additionalProperties": { "type": "object", "properties": { "image": { "type": "string" }, "labels": { "anyOf": [ { "type": "object", "additionalProperties": { "anyOf": [ { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] } }, { "type": "array", "items": { "type": "string" } } ] }, "networks": { "anyOf": [ { "type": "object", "additionalProperties": {} }, { "type": "array", "items": { "type": "string" } } ] }, "ports": { "type": "array" }, "x-runtipi": { "type": "object", "properties": { "add_to_main_network": { "type": "boolean" }, "internal_port": { "anyOf": [ { "type": "number" }, { "type": "string" } ] }, "is_main": { "type": "boolean" } } } }, "required": [ "image" ], "additionalProperties": {} } }, "x-runtipi": { "type": "object", "properties": { "schema_version": { "enum": [ 1, 2 ] }, "overrides": { "type": "array", "items": { "type": "object", "properties": { "architecture": { "enum": [ "amd64", "arm64" ] }, "services": { "type": "object", "additionalProperties": { "type": "object", "properties": { "image": { "type": "string" }, "labels": { "anyOf": [ { "type": "object", "additionalProperties": { "anyOf": [ { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] } }, { "type": "array", "items": { "type": "string" } } ] }, "networks": { "anyOf": [ { "type": "object", "additionalProperties": {} }, { "type": "array", "items": { "type": "string" } } ] }, "ports": { "type": "array" }, "x-runtipi": { "type": "object", "properties": { "add_to_main_network": { "type": "boolean" }, "internal_port": { "anyOf": [ { "type": "number" }, { "type": "string" } ] }, "is_main": { "type": "boolean" } } } }, "required": [ "image" ], "additionalProperties": {} } } }, "required": [ "architecture", "services" ] } } }, "required": [ "schema_version" ] }, "networks": { "type": "object", "additionalProperties": {} } }, "required": [ "services", "x-runtipi" ], "additionalProperties": {} }, "name": { "type": "string", "pattern": "^[a-z0-9-]+$", "maxLength": 50, "minLength": 1 } }, "required": [ "config", "name" ] }, "CreateCustomAppResponseDto": { "type": "object", "properties": { "appName": { "type": "string" }, "appUrn": { "type": "string" }, "storeId": { "type": "string" } }, "required": [ "appName", "appUrn", "storeId" ] }, "UpdateCustomAppDto": { "type": "object", "properties": { "config": { "type": "object", "properties": { "services": { "type": "object", "additionalProperties": { "type": "object", "properties": { "image": { "type": "string" }, "labels": { "anyOf": [ { "type": "object", "additionalProperties": { "anyOf": [ { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] } }, { "type": "array", "items": { "type": "string" } } ] }, "networks": { "anyOf": [ { "type": "object", "additionalProperties": {} }, { "type": "array", "items": { "type": "string" } } ] }, "ports": { "type": "array" }, "x-runtipi": { "type": "object", "properties": { "add_to_main_network": { "type": "boolean" }, "internal_port": { "anyOf": [ { "type": "number" }, { "type": "string" } ] }, "is_main": { "type": "boolean" } } } }, "required": [ "image" ], "additionalProperties": {} } }, "x-runtipi": { "type": "object", "properties": { "schema_version": { "enum": [ 1, 2 ] }, "overrides": { "type": "array", "items": { "type": "object", "properties": { "architecture": { "enum": [ "amd64", "arm64" ] }, "services": { "type": "object", "additionalProperties": { "type": "object", "properties": { "image": { "type": "string" }, "labels": { "anyOf": [ { "type": "object", "additionalProperties": { "anyOf": [ { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] } }, { "type": "array", "items": { "type": "string" } } ] }, "networks": { "anyOf": [ { "type": "object", "additionalProperties": {} }, { "type": "array", "items": { "type": "string" } } ] }, "ports": { "type": "array" }, "x-runtipi": { "type": "object", "properties": { "add_to_main_network": { "type": "boolean" }, "internal_port": { "anyOf": [ { "type": "number" }, { "type": "string" } ] }, "is_main": { "type": "boolean" } } } }, "required": [ "image" ], "additionalProperties": {} } } }, "required": [ "architecture", "services" ] } } }, "required": [ "schema_version" ] }, "networks": { "type": "object", "additionalProperties": {} } }, "required": [ "services", "x-runtipi" ], "additionalProperties": {} } }, "required": [ "config" ] }, "UpdateAppMetadataDto": { "type": "object", "properties": { "data": { "type": "string" } }, "required": [ "data" ] }, "GetAppConfigDto": { "type": "object", "properties": { "config": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "config" ] }, "UpdateAppConfigBodyDto": { "type": "object", "properties": { "config": { "type": "string" } }, "required": [ "config" ] }, "AppConfigSuccessDto": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] }, "TemplateDiffDto": { "type": "object", "properties": { "hasChanges": { "type": "boolean" }, "localVersion": { "type": "number" }, "templateVersion": { "type": "number" }, "current": { "type": "string" }, "template": { "type": "string" } }, "required": [ "hasChanges", "localVersion", "templateVersion" ] } } } }