Files
dashcaddy/dashcaddy-api/openapi.yaml
T
Hermes f6feb0184d
CI / Test & Lint (push) Canceled after 0s
CI / Security audit (push) Canceled after 0s
[grade=A] DC-062: Update OpenAPI spec from v1.0.0 to v1.15.0 — 112→276 paths (329 ops)
Complete rewrite of openapi.yaml to match the actual v1.15.0 API surface.
Every route across all 52 route files is now documented. All 766 internal
$ref pointers resolve, all operations have responses, all path params defined.

Codex: no blocking findings (35,382 tokens). YAML validates clean.
2026-08-12 04:52:35 -07:00

7815 lines
229 KiB
YAML

openapi: 3.0.3
info:
title: DashCaddy API
version: 1.15.0
description: >
Unified management API for Docker, Caddy, DNS, and Tailscale services.
Covers container lifecycle, reverse proxy configuration, DNS record
management, health monitoring, automated backups, app deployment from
templates, Arr stack integration, TOTP/SSO authentication, multi-user
administration, security event collection, and license-gated features.
contact:
name: DashCaddy Support
servers:
- url: http://localhost:3001
description: Local development server
tags:
- name: API Keys
description: Programmatic API key management and JWT exchange
- name: Arr Stack Integration
description: Radarr, Sonarr, Prowlarr, Overseerr integration
- name: Assets & Branding
description: Custom logos, favicons, and brand assets
- name: Audit Log
description: System audit trail
- name: Authentication
description: Login flows, CSRF tokens, and auth provider management
- name: Auto-Restart
description: Automatic service restart policies
- name: Automated Backups
description: Scheduled backups, cloud provider credentials, and history
- name: Backup & Restore
description: App-level backup points and restore operations
- name: Billing
description: Stripe checkout sessions for license purchase
- name: Caddy Management
description: Caddy reverse proxy configuration and reload
- name: Certificate Authority
description: DashCA certificate info, download, and install scripts
- name: Config Drift
description: Configuration drift detection and remediation
- name: Configuration
description: DashCaddy site configuration and config backup/restore
- name: Container Management
description: Docker container lifecycle (start, stop, restart, remove)
- name: Container Stats & Logs
description: Container metrics, log viewing, and log digests
- name: Credential Management
description: Encryption key rotation and credential listing
- name: DNS Management
description: DNS records, provider credentials, and propagation checking
- name: Dependencies
description: Service dependency graphs, chains, and ordered restarts
- name: Disk Space
description: Disk usage monitoring, breakdown, and cleanup
- name: Docker App Deployment
description: Deploy apps from templates, compose stacks, and port management
- name: Docker Resources
description: Docker volumes, networks, and disk usage
- name: Documentation
description: API documentation and OpenAPI spec serving
- name: Error Logs
description: System error log management
- name: Events
description: Server-sent events stream for real-time updates
- name: Filesystem Browser
description: Browse directories and detect media mounts
- name: Health & Probes
description: Root-level liveness and readiness probes (k8s/Docker compatible)
- name: Health Checks
description: Automated health-check configuration and incident tracking
- name: License Management
description: License activation, status, and feature gating
- name: Notifications
description: Notification channels, test dispatch, and history
- name: OpenClaw
description: OpenClaw platform deployment and management
- name: Plex
description: Plex media server integration
- name: Recipes
description: Multi-service recipe templates and deployment (premium)
- name: Resource Monitoring
description: CPU/memory monitoring, historical data, and alerts
- name: SSL Monitor
description: SSL certificate expiration monitoring
- name: SSO Auth Gate
description: Caddy forward-auth gate, app tokens, and SSO login pages
- name: Security Center
description: Multi-source security event collection and host management
- name: Service Credentials
description: Encrypted credential storage for registered services
- name: Service Health
description: Service health monitoring and cached status
- name: Services Dashboard
description: Dashboard service registration and status
- name: Sharing
description: Dashboard share links and Tailscale-mediated sharing
- name: Site Management
description: Manage proxied sites, domains, and external references
- name: System
description: System information, version, and metrics
- name: TOTP Authentication
description: Two-factor authentication setup, verification, and management
- name: Tailscale
description: Tailscale VPN integration, device sync, and access control
- name: Themes
description: Dashboard theme management
- name: Update Management
description: Container image updates and system self-update
- name: User Management
description: Multi-user administration, invites, and allowlist (opt-in)
- name: Workflows
description: Bundled automation workflow management
paths:
/health:
get:
tags: [Health & Probes]
summary: Liveness health check
description: Returns process liveness status. Alias for /health/live.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/health/live:
get:
tags: [Health & Probes]
summary: Liveness probe
description: Pure process-alive check with no dependency queries. Returns uptime.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/health/ready:
get:
tags: [Health & Probes]
summary: Readiness probe
description: Checks critical dependencies (config file, services file, Docker daemon, Caddy admin). Returns 503 if any check fails.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/healthz:
get:
tags: [Health & Probes]
summary: Kubernetes liveness probe
description: Kubernetes-standard liveness alias for /health/live.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/readyz:
get:
tags: [Health & Probes]
summary: Kubernetes readiness probe
description: Kubernetes-standard readiness alias for /health/ready.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/probe/{id}:
get:
tags: [Health & Probes]
summary: Service probe
description: Lightweight HTTP probe of a service by ID. Probes the service URL directly, with Pylon relay and domain fallback.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Service ID or 'internet'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/version:
get:
tags: [System]
summary: Get API version
description: Returns the running API version, Node.js version, platform, and uptime.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/csrf-token:
get:
tags: [Authentication]
summary: Get CSRF token
description: Returns a CSRF token and the header name to use for it.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/metrics:
get:
tags: [System]
summary: Get metrics summary
description: Returns aggregated metrics summary from the metrics collector.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/docs:
get:
tags: [Documentation]
summary: API documentation UI
description: Serves the Swagger UI HTML page for interactive API exploration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/docs/spec:
get:
tags: [Documentation]
summary: OpenAPI specification
description: Serves the raw openapi.yaml specification file.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/network/ips:
get:
tags: [System]
summary: Get network IPs
description: Returns localhost, LAN, Tailscale, and all detected interface IPs.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/totp/check-session:
get:
tags: [TOTP Authentication]
summary: Check TOTP session status
description: Returns whether the current session has a valid TOTP session.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/totp/config:
get:
tags: [TOTP Authentication]
summary: Get TOTP configuration
description: Returns the current TOTP configuration (enabled, session duration, setup status).
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [TOTP Authentication]
summary: Update TOTP configuration
description: Updates TOTP settings such as session duration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/totp/recovery-info:
get:
tags: [TOTP Authentication]
summary: Get TOTP recovery info
description: Returns recovery code information for the TOTP setup.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/totp/setup:
post:
tags: [TOTP Authentication]
summary: Begin TOTP setup
description: Generates a new TOTP secret and returns the QR code / OTP auth URL.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/totp/verify-setup:
post:
tags: [TOTP Authentication]
summary: Verify TOTP setup
description: Confirms TOTP setup by verifying a code from the authenticator app.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/totp/verify:
post:
tags: [TOTP Authentication]
summary: Verify TOTP login
description: Verifies a TOTP code to complete two-factor login and establish a session.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/totp/disable:
post:
tags: [TOTP Authentication]
summary: Disable TOTP
description: Disables two-factor authentication. Requires a valid TOTP code.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/keys:
get:
tags: [API Keys]
summary: List API keys
description: Returns all registered API keys.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [API Keys]
summary: Create API key
description: Creates a new API key for programmatic access.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/keys/{keyId}:
delete:
tags: [API Keys]
summary: Delete API key
description: Revokes and removes an API key by ID.
parameters:
- name: keyId
in: path
required: true
schema:
type: string
description: API key ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/jwt:
post:
tags: [API Keys]
summary: Exchange API key for JWT
description: Exchanges an API key for a JWT token for session-based access.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/gate/{serviceId}:
get:
tags: [SSO Auth Gate]
summary: SSO gate check
description: Forward-auth endpoint for Caddy. Returns 200 if the session is authorized for the service, 401 otherwise.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/app-token/{serviceId}:
get:
tags: [SSO Auth Gate]
summary: Get app token
description: Returns an app session token for client-side auto-login flows.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/login-page:
get:
tags: [SSO Auth Gate]
summary: Get SSO login page
description: Returns the HTML SSO login page for a service with auto-login JS.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/sso-exchange:
get:
tags: [SSO Auth Gate]
summary: SSO token exchange
description: Exchanges an SSO handoff token for a session cookie.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/login/methods:
get:
tags: [Authentication]
summary: List login methods
description: Returns available authentication providers (email, TOTP, etc.).
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/login/recovery-info:
get:
tags: [Authentication]
summary: Login recovery info
description: Returns account recovery information for the login flow.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/login/{provider}/initiate:
post:
tags: [Authentication]
summary: Initiate login
description: Initiates a login flow for the specified provider (e.g., email magic link).
parameters:
- name: provider
in: path
required: true
schema:
type: string
description: Auth provider name
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/login/{provider}/verify:
post:
tags: [Authentication]
summary: Verify login
description: Verifies a login credential (e.g., magic-link token) for the specified provider.
parameters:
- name: provider
in: path
required: true
schema:
type: string
description: Auth provider name
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/disable/{provider}:
post:
tags: [Authentication]
summary: Disable auth provider
description: Disables an authentication provider.
parameters:
- name: provider
in: path
required: true
schema:
type: string
description: Auth provider name
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/me:
get:
tags: [User Management]
summary: Get current user
description: Returns the currently authenticated user's profile information.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/admin/users:
get:
tags: [User Management]
summary: List users
description: Returns all registered users. Requires admin privileges.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [User Management]
summary: Create user
description: Creates a new user account. Requires admin privileges.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/admin/users/{id}:
patch:
tags: [User Management]
summary: Update user
description: Updates a user's properties (role, status). Requires admin.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: User ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [User Management]
summary: Delete user
description: Removes a user account. Requires admin privileges.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: User ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/admin/allowlist:
get:
tags: [User Management]
summary: Get allowlist
description: Returns the email allowlist for multi-user mode.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/admin/invites:
get:
tags: [User Management]
summary: List invites
description: Returns all pending invite tokens.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [User Management]
summary: Create invite
description: Generates a new invite token for onboarding users.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/admin/invites/{id}:
delete:
tags: [User Management]
summary: Delete invite
description: Revokes an invite token by ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Invite ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auth/invites/{token}:
get:
tags: [User Management]
summary: Redeem invite preview
description: Public endpoint that validates an invite token and returns invite metadata.
parameters:
- name: token
in: path
required: true
schema:
type: string
description: Invite token
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/auth/invites/{token}/accept:
post:
tags: [User Management]
summary: Accept invite
description: Public endpoint that accepts an invite and creates a user account.
parameters:
- name: token
in: path
required: true
schema:
type: string
description: Invite token
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/config:
get:
tags: [Configuration]
summary: Get configuration
description: Returns the full DashCaddy site configuration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Configuration]
summary: Update configuration
description: Updates the DashCaddy site configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Configuration]
summary: Reset configuration
description: Resets the configuration to defaults.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logo:
get:
tags: [Assets & Branding]
summary: Get logo
description: Returns the custom logo image.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Assets & Branding]
summary: Upload logo
description: Uploads a custom logo image.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Assets & Branding]
summary: Delete logo
description: Removes the custom logo, reverting to default.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/favicon:
get:
tags: [Assets & Branding]
summary: Get favicon
description: Returns the custom favicon image.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Assets & Branding]
summary: Upload favicon
description: Uploads a custom favicon image.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Assets & Branding]
summary: Delete favicon
description: Removes the custom favicon.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/assets/upload:
post:
tags: [Assets & Branding]
summary: Upload asset
description: Uploads a generic brand asset (logo, favicon, etc.).
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backup/export:
get:
tags: [Configuration]
summary: Export config backup
description: Exports the full configuration as a downloadable backup file.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backup/preview:
post:
tags: [Configuration]
summary: Preview config restore
description: Previews what would change if a backup file were restored.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backup/restore:
post:
tags: [Configuration]
summary: Restore config backup
description: Restores configuration from an uploaded backup file.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/{id}/start:
post:
tags: [Container Management]
summary: Start container
description: Starts a Docker container by ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/{id}/stop:
post:
tags: [Container Management]
summary: Stop container
description: Stops a Docker container by ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/{id}/restart:
post:
tags: [Container Management]
summary: Restart container
description: Restarts a Docker container by ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/{id}/update:
post:
tags: [Container Management]
summary: Update container image
description: Pulls the latest image and recreates the container.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/{id}/logs:
get:
tags: [Container Management]
summary: Get container logs
description: Returns recent log output for a container.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/{id}/resources:
get:
tags: [Container Management]
summary: Get container resources
description: Returns resource limits (CPU, memory) for a container.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
put:
tags: [Container Management]
summary: Update container resources
description: Updates resource limits for a container.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/{id}/check-update:
get:
tags: [Container Management]
summary: Check for image update
description: Checks if a newer image is available for the container.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/{id}:
delete:
tags: [Container Management]
summary: Remove container
description: Removes a Docker container by ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/containers/discover:
get:
tags: [Container Management]
summary: Discover containers
description: Returns all Docker containers on the host.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/services:
get:
tags: [Services Dashboard]
summary: List services
description: Returns all registered dashboard services.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Services Dashboard]
summary: Create service
description: Adds a new service to the dashboard.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
put:
tags: [Services Dashboard]
summary: Update services
description: Updates the full services list (bulk replace).
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/services/{id}:
delete:
tags: [Services Dashboard]
summary: Delete service
description: Removes a service from the dashboard.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/services/status:
get:
tags: [Services Dashboard]
summary: Get services status
description: Returns aggregated status for all services.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/services/update:
post:
tags: [Services Dashboard]
summary: Trigger services update
description: Triggers an update check/apply across services.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/services/{serviceId}/credentials:
get:
tags: [Service Credentials]
summary: Get service credentials
description: Returns stored credentials for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Service Credentials]
summary: Set service credentials
description: Stores encrypted credentials for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Service Credentials]
summary: Delete service credentials
description: Removes stored credentials for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/seedhost-creds:
get:
tags: [Service Credentials]
summary: Get seedhost credentials
description: Returns stored seedhost credentials.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Service Credentials]
summary: Set seedhost credentials
description: Stores seedhost credentials.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Service Credentials]
summary: Delete seedhost credentials
description: Removes stored seedhost credentials.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/credentials/list:
get:
tags: [Credential Management]
summary: List credentials
description: Returns a list of stored credential keys (without values).
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/credentials/rotate-key:
post:
tags: [Credential Management]
summary: Rotate encryption key
description: Rotates the master encryption key used for credential storage.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/caddyfile:
get:
tags: [Caddy Management]
summary: Get Caddyfile
description: Returns the current Caddyfile content.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/caddy/config:
get:
tags: [Caddy Management]
summary: Get Caddy config
description: Returns the current Caddy JSON configuration from the admin API.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/caddy/reload:
post:
tags: [Caddy Management]
summary: Reload Caddy
description: Triggers a Caddy configuration reload.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/caddy/cas:
get:
tags: [Caddy Management]
summary: List Caddy CAs
description: Returns certificate authorities configured in Caddy.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/site:
post:
tags: [Site Management]
summary: Create site
description: Creates a new proxied site with Caddy configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/site/{domain}:
delete:
tags: [Site Management]
summary: Delete site
description: Removes a proxied site and its Caddy configuration.
parameters:
- name: domain
in: path
required: true
schema:
type: string
description: Domain name
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/site/external:
post:
tags: [Site Management]
summary: Add external site
description: Adds an external (non-DashCaddy-managed) site reference.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/providers:
get:
tags: [DNS Management]
summary: List DNS providers
description: Returns available DNS provider types.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/provider/status:
get:
tags: [DNS Management]
summary: Get DNS provider status
description: Returns the status of the currently configured DNS provider.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/universal/record:
post:
tags: [DNS Management]
summary: Create universal DNS record
description: Creates a DNS record across all configured zones/providers.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [DNS Management]
summary: Delete universal DNS record
description: Deletes a DNS record across all configured zones/providers.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/universal/resolve:
get:
tags: [DNS Management]
summary: Resolve universal DNS record
description: Resolves a DNS record across all providers.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/record:
post:
tags: [DNS Management]
summary: Create DNS record
description: Creates a DNS record in the configured provider.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [DNS Management]
summary: Delete DNS record
description: Deletes a DNS record in the configured provider.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/resolve:
get:
tags: [DNS Management]
summary: Resolve DNS record
description: Resolves a DNS record using the configured provider.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/logs:
get:
tags: [DNS Management]
summary: Get DNS logs
description: Returns recent DNS server logs.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/token-status:
get:
tags: [DNS Management]
summary: Get DNS token status
description: Returns the status of the DNS provider API token.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/credentials:
post:
tags: [DNS Management]
summary: Set DNS credentials
description: Stores DNS provider API credentials.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [DNS Management]
summary: Delete DNS credentials
description: Removes stored DNS provider credentials.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
get:
tags: [DNS Management]
summary: Get DNS credentials
description: Returns stored DNS provider credential metadata.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/refresh-token:
post:
tags: [DNS Management]
summary: Refresh DNS token
description: Refreshes an expired DNS provider OAuth token.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/restart/{dnsId}:
post:
tags: [DNS Management]
summary: Restart DNS server
description: Restarts the DNS server container/service.
parameters:
- name: dnsId
in: path
required: true
schema:
type: string
description: DNS server ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/check-update:
get:
tags: [DNS Management]
summary: Check DNS update
description: Checks if a DNS update is available or in progress.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/update:
post:
tags: [DNS Management]
summary: Apply DNS update
description: Applies a pending DNS server update.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/propagation:
get:
tags: [DNS Management]
summary: Check DNS propagation
description: Returns propagation status for all tracked domains.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/propagation/{domain}:
get:
tags: [DNS Management]
summary: Check domain propagation
description: Returns propagation status for a specific domain.
parameters:
- name: domain
in: path
required: true
schema:
type: string
description: Domain name
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dns/propagation/verify:
post:
tags: [DNS Management]
summary: Verify DNS propagation
description: Triggers a propagation verification check.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health/services:
get:
tags: [Service Health]
summary: List service health
description: Returns health status for all monitored services.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health/service/{id}:
get:
tags: [Service Health]
summary: Get service health
description: Returns health status for a specific service.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health/cached:
get:
tags: [Service Health]
summary: Get cached health
description: Returns cached health status without re-probing.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health/probe:
get:
tags: [Service Health]
summary: Health probe
description: Triggers a fresh health probe across all services.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health/pylon:
get:
tags: [Service Health]
summary: Pylon health
description: Returns health status of the Pylon relay if configured.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health/ca:
get:
tags: [Service Health]
summary: CA certificate health
description: Returns CA certificate expiration health status.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health-checks/status:
get:
tags: [Health Checks]
summary: Get health-check status
description: Returns the overall health-check system status.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health-checks/{serviceId}/stats:
get:
tags: [Health Checks]
summary: Get health-check stats
description: Returns health-check statistics for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health-checks/{serviceId}/configure:
post:
tags: [Health Checks]
summary: Configure health checks
description: Configures automated health checks for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Health Checks]
summary: Remove health-check config
description: Removes automated health-check configuration for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health-checks/incidents:
get:
tags: [Health Checks]
summary: List incidents
description: Returns recent health-check incidents.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/health-checks/incidents/history:
get:
tags: [Health Checks]
summary: Incident history
description: Returns historical health-check incidents.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/monitoring/stats:
get:
tags: [Resource Monitoring]
summary: Get monitoring stats
description: Returns aggregated resource monitoring statistics.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/monitoring/stats/{containerId}:
get:
tags: [Resource Monitoring]
summary: Get container monitoring stats
description: Returns resource monitoring stats for a container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/monitoring/history/{containerId}:
get:
tags: [Resource Monitoring]
summary: Get monitoring history
description: Returns historical resource data for a container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/monitoring/aggregated/{containerId}:
get:
tags: [Resource Monitoring]
summary: Get aggregated stats
description: Returns aggregated resource stats for a container over time.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/monitoring/alerts/config:
get:
tags: [Resource Monitoring]
summary: Get alert config
description: Returns the resource alert configuration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Resource Monitoring]
summary: Update alert config
description: Updates the resource alert configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/monitoring/alerts:
get:
tags: [Resource Monitoring]
summary: List alerts
description: Returns all resource monitoring alerts.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/monitoring/alerts/{containerId}/test:
post:
tags: [Resource Monitoring]
summary: Test alert
description: Triggers a test alert for a container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/monitoring/alerts/{containerId}:
get:
tags: [Resource Monitoring]
summary: Get container alerts
description: Returns alerts for a specific container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Resource Monitoring]
summary: Create container alert
description: Creates a resource alert for a container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Resource Monitoring]
summary: Delete container alert
description: Removes a resource alert for a container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/stats/containers:
get:
tags: [Container Stats & Logs]
summary: List container stats
description: Returns resource stats for all containers.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/stats/container/{id}:
get:
tags: [Container Stats & Logs]
summary: Get container stats
description: Returns resource stats for a single container.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/updates/available:
get:
tags: [Update Management]
summary: Check available updates
description: Returns a list of containers with available image updates.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/updates/check:
post:
tags: [Update Management]
summary: Check for updates
description: Triggers an update check across all containers.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/updates/update/{containerId}:
post:
tags: [Update Management]
summary: Update container
description: Applies an image update to a specific container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/updates/rollback/{containerId}:
post:
tags: [Update Management]
summary: Rollback container
description: Rolls back a container to its previous image.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/updates/auto-update:
get:
tags: [Update Management]
summary: Get auto-update config
description: Returns the automatic update configuration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/updates/auto-update/{containerId}:
post:
tags: [Update Management]
summary: Set auto-update for container
description: Configures automatic updates for a specific container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/updates/schedule/{containerId}:
post:
tags: [Update Management]
summary: Schedule container update
description: Schedules an update for a specific container.
parameters:
- name: containerId
in: path
required: true
schema:
type: string
description: Container ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/updates/history:
get:
tags: [Update Management]
summary: Get update history
description: Returns the history of applied container updates.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/system/version:
get:
tags: [Update Management]
summary: Get system version
description: Returns the DashCaddy system version.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/system/update-check:
get:
tags: [Update Management]
summary: Check system update
description: Checks if a DashCaddy system update is available.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/system/update-apply:
post:
tags: [Update Management]
summary: Apply system update
description: Applies a DashCaddy system update.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/system/update-notify:
post:
tags: [Update Management]
summary: Notify system update
description: Sends a notification about an available system update.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/system/update-status:
get:
tags: [Update Management]
summary: Get system update status
description: Returns the current system update status.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/system/update-history:
get:
tags: [Update Management]
summary: Get system update history
description: Returns the history of DashCaddy system updates.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/system/rollback-versions:
get:
tags: [Update Management]
summary: List rollback versions
description: Returns available system rollback versions.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/system/rollback:
post:
tags: [Update Management]
summary: Rollback system
description: Rolls back the DashCaddy system to a previous version.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/templates:
get:
tags: [Docker App Deployment]
summary: List app templates
description: Returns all available Docker app templates.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/templates/{appId}:
get:
tags: [Docker App Deployment]
summary: Get app template
description: Returns details for a specific app template.
parameters:
- name: appId
in: path
required: true
schema:
type: string
description: App template ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/ports/{port}/check:
get:
tags: [Docker App Deployment]
summary: Check port availability
description: Checks if a port is available for a new app deployment.
parameters:
- name: port
in: path
required: true
schema:
type: string
description: Port number
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/ports/{basePort}/suggest:
get:
tags: [Docker App Deployment]
summary: Suggest next port
description: Suggests the next available port starting from a base.
parameters:
- name: basePort
in: path
required: true
schema:
type: string
description: Base port number
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/update-subdomain:
post:
tags: [Docker App Deployment]
summary: Update app subdomain
description: Updates the subdomain for a deployed app.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/check-existing:
post:
tags: [Docker App Deployment]
summary: Check existing app
description: Checks if an app with the given parameters already exists.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/deploy:
post:
tags: [Docker App Deployment]
summary: Deploy app
description: Deploys a new Docker app from a template.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/{appId}:
delete:
tags: [Docker App Deployment]
summary: Remove app
description: Removes a deployed app, its container, and configuration.
parameters:
- name: appId
in: path
required: true
schema:
type: string
description: App ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/restore-status:
get:
tags: [Backup & Restore]
summary: Get restore status
description: Returns the status of an ongoing app restore operation.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/{appId}/restore:
post:
tags: [Backup & Restore]
summary: Restore app
description: Restores an app from a backup point.
parameters:
- name: appId
in: path
required: true
schema:
type: string
description: App ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/restore-all:
post:
tags: [Backup & Restore]
summary: Restore all apps
description: Restores all apps from their latest backup points.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/{appId}/backup-points:
get:
tags: [Backup & Restore]
summary: List backup points
description: Returns available backup points for an app.
parameters:
- name: appId
in: path
required: true
schema:
type: string
description: App ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/{appId}/revert/{filename}:
post:
tags: [Backup & Restore]
summary: Revert app to backup
description: Reverts an app to a specific backup file.
parameters:
- name: appId
in: path
required: true
schema:
type: string
description: App ID
- name: filename
in: path
required: true
schema:
type: string
description: Backup filename
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/import-compose:
post:
tags: [Docker App Deployment]
summary: Import compose file
description: Imports a docker-compose file as a managed stack.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/deploy-compose:
post:
tags: [Docker App Deployment]
summary: Deploy compose stack
description: Deploys a docker-compose stack.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/apps/compose-stack/{stackName}:
delete:
tags: [Docker App Deployment]
summary: Remove compose stack
description: Removes a deployed docker-compose stack.
parameters:
- name: stackName
in: path
required: true
schema:
type: string
description: Stack name
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/detect:
get:
tags: [Arr Stack Integration]
summary: Detect Arr services
description: Detects running Arr stack services (Radarr, Sonarr, etc.).
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/smart-detect:
get:
tags: [Arr Stack Integration]
summary: Smart detect Arr services
description: Intelligently detects and identifies Arr services with metadata.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/smart-connect:
post:
tags: [Arr Stack Integration]
summary: Smart connect Arr
description: Auto-connects detected Arr services with credentials.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/credentials:
get:
tags: [Arr Stack Integration]
summary: List Arr credentials
description: Returns stored credentials for Arr services.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Arr Stack Integration]
summary: Set Arr credentials
description: Stores credentials for an Arr service.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/credentials/{service}:
delete:
tags: [Arr Stack Integration]
summary: Delete Arr credentials
description: Removes credentials for an Arr service.
parameters:
- name: service
in: path
required: true
schema:
type: string
description: Service name (radarr, sonarr, etc.)
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/test-connection:
post:
tags: [Arr Stack Integration]
summary: Test Arr connection
description: Tests connectivity to a configured Arr service.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/auto-setup:
post:
tags: [Arr Stack Integration]
summary: Auto-setup Arr stack
description: Automatically configures the full Arr stack with optimal settings.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/configure-overseerr:
post:
tags: [Arr Stack Integration]
summary: Configure Overseerr
description: Configures Overseerr integration with Arr services.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/arr/quality-profiles:
get:
tags: [Arr Stack Integration]
summary: Get quality profiles
description: Returns quality profiles from configured Arr services.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Arr Stack Integration]
summary: Set quality profiles
description: Updates quality profiles on Arr services.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/plex/libraries:
get:
tags: [Plex]
summary: List Plex libraries
description: Returns all libraries from the configured Plex server.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/status:
get:
tags: [Tailscale]
summary: Get Tailscale status
description: Returns the Tailscale daemon status.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/config:
post:
tags: [Tailscale]
summary: Update Tailscale config
description: Updates Tailscale integration configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/check-connection:
get:
tags: [Tailscale]
summary: Check Tailscale connection
description: Checks if the Tailscale daemon is connected.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/devices:
get:
tags: [Tailscale]
summary: List Tailscale devices
description: Returns all devices on the Tailnet.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/protect-service:
post:
tags: [Tailscale]
summary: Protect service via Tailscale
description: Configures Tailscale access protection for a service.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/oauth-config:
post:
tags: [Tailscale]
summary: Set OAuth config
description: Stores Tailscale OAuth client credentials.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Tailscale]
summary: Delete OAuth config
description: Removes Tailscale OAuth client credentials.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/api-devices:
get:
tags: [Tailscale]
summary: List API devices
description: Returns devices accessible via the Tailscale API.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/sync:
post:
tags: [Tailscale]
summary: Sync Tailscale devices
description: Triggers a sync of Tailscale devices into DashCaddy.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/acl:
get:
tags: [Tailscale]
summary: Get Tailscale ACL
description: Returns the current Tailscale ACL configuration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/settings:
get:
tags: [Tailscale]
summary: Get Tailscale admin settings
description: Returns Tailscale coordination/admin settings.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
put:
tags: [Tailscale]
summary: Update Tailscale admin settings
description: Updates Tailscale coordination/admin settings.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Tailscale]
summary: Delete Tailscale admin settings
description: Resets Tailscale coordination settings to defaults.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/settings/test:
post:
tags: [Tailscale]
summary: Test Tailscale admin settings
description: Tests the Tailscale coordination connection.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/admin/devices:
get:
tags: [Tailscale]
summary: List admin devices
description: Returns all devices from the Tailscale coordination API.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/admin/devices/{id}:
delete:
tags: [Tailscale]
summary: Remove admin device
description: Removes a device from the Tailnet via the coordination API.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Device ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/admin/users:
get:
tags: [Tailscale]
summary: List admin users
description: Returns all users from the Tailscale coordination API.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/admin/keys:
get:
tags: [Tailscale]
summary: List admin keys
description: Returns all auth keys from the Tailscale coordination API.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Tailscale]
summary: Create admin key
description: Creates a new Tailscale auth key.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/tailscale/admin/keys/{id}:
delete:
tags: [Tailscale]
summary: Delete admin key
description: Revokes a Tailscale auth key.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Key ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/notifications/config:
get:
tags: [Notifications]
summary: Get notification config
description: Returns the notification system configuration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Notifications]
summary: Update notification config
description: Updates the notification system configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/notifications/test:
post:
tags: [Notifications]
summary: Test notification
description: Sends a test notification to configured channels.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/notifications/history:
get:
tags: [Notifications]
summary: Get notification history
description: Returns recent notification history.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Notifications]
summary: Clear notification history
description: Clears the notification history log.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/notifications/health-check:
post:
tags: [Notifications]
summary: Send health-check notification
description: Triggers a health-check notification dispatch.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/notifications/status:
get:
tags: [Notifications]
summary: Get notification status
description: Returns the notification system status and channel health.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/notifications/send:
post:
tags: [Notifications]
summary: Send notification
description: Sends a custom notification to configured channels.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/containers:
get:
tags: [Container Stats & Logs]
summary: List log containers
description: Returns containers available for log viewing.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/container/{id}:
get:
tags: [Container Stats & Logs]
summary: Get container logs
description: Returns log output for a specific container.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/stream/{id}:
get:
tags: [Container Stats & Logs]
summary: Stream container logs
description: Returns a live log stream (SSE) for a container.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Container ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SSEResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/digest/latest:
get:
tags: [Container Stats & Logs]
summary: Get latest log digest
description: Returns the most recent log digest.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/digest/live:
get:
tags: [Container Stats & Logs]
summary: Live log digest
description: Returns a live-updating log digest (SSE).
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/digest/history:
get:
tags: [Container Stats & Logs]
summary: Log digest history
description: Returns historical log digests.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/digest/{date}:
get:
tags: [Container Stats & Logs]
summary: Get log digest by date
description: Returns the log digest for a specific date.
parameters:
- name: date
in: path
required: true
schema:
type: string
description: Date (YYYY-MM-DD)
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/digest/generate:
post:
tags: [Container Stats & Logs]
summary: Generate log digest
description: Triggers generation of a new log digest.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/docker-disk:
get:
tags: [Container Stats & Logs]
summary: Get Docker disk usage
description: Returns Docker log disk usage information.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/docker-maintenance:
post:
tags: [Container Stats & Logs]
summary: Docker log maintenance
description: Triggers Docker log cleanup/maintenance.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/logs/file:
get:
tags: [Container Stats & Logs]
summary: Read log file
description: Returns content from a specific log file.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/schedule:
get:
tags: [Automated Backups]
summary: Get backup schedule
description: Returns all configured backup schedules.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Automated Backups]
summary: Create backup schedule
description: Creates a new backup schedule for an app.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/schedule/{appId}:
delete:
tags: [Automated Backups]
summary: Delete backup schedule
description: Removes a backup schedule for an app.
parameters:
- name: appId
in: path
required: true
schema:
type: string
description: App ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/files:
get:
tags: [Automated Backups]
summary: List backup files
description: Returns all available backup files.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/files/{appId}:
get:
tags: [Automated Backups]
summary: List app backup files
description: Returns backup files for a specific app.
parameters:
- name: appId
in: path
required: true
schema:
type: string
description: App ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/backup/{appId}:
post:
tags: [Automated Backups]
summary: Create backup
description: Creates a backup for a specific app.
parameters:
- name: appId
in: path
required: true
schema:
type: string
description: App ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/restore-file/{filename}:
post:
tags: [Automated Backups]
summary: Restore backup file
description: Restores a specific backup file by name.
parameters:
- name: filename
in: path
required: true
schema:
type: string
description: Backup filename
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/compare/{filename}:
post:
tags: [Automated Backups]
summary: Compare backup
description: Compares a backup file against current state.
parameters:
- name: filename
in: path
required: true
schema:
type: string
description: Backup filename
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/config:
get:
tags: [Automated Backups]
summary: Get backup config
description: Returns the backup system configuration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Automated Backups]
summary: Update backup config
description: Updates the backup system configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/execute:
post:
tags: [Automated Backups]
summary: Execute backup
description: Triggers an immediate backup of all scheduled apps.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/history:
get:
tags: [Automated Backups]
summary: Get backup history
description: Returns the history of executed backups.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/storage-info:
get:
tags: [Automated Backups]
summary: Get backup storage info
description: Returns backup storage usage information.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/test-destination:
post:
tags: [Automated Backups]
summary: Test backup destination
description: Tests connectivity to a backup destination.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/restore/{backupId}:
post:
tags: [Automated Backups]
summary: Restore backup
description: Restores a backup by ID.
parameters:
- name: backupId
in: path
required: true
schema:
type: string
description: Backup ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/backups/credentials/{provider}:
get:
tags: [Automated Backups]
summary: Get backup credentials
description: Returns stored credentials for a backup provider.
parameters:
- name: provider
in: path
required: true
schema:
type: string
description: Backup provider name
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Automated Backups]
summary: Set backup credentials
description: Stores credentials for a backup provider.
parameters:
- name: provider
in: path
required: true
schema:
type: string
description: Backup provider name
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Automated Backups]
summary: Delete backup credentials
description: Removes credentials for a backup provider.
parameters:
- name: provider
in: path
required: true
schema:
type: string
description: Backup provider name
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ca/info:
get:
tags: [Certificate Authority]
summary: Get CA info
description: Returns certificate authority metadata (CN, algorithm, expiry).
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ca/root.crt:
get:
tags: [Certificate Authority]
summary: Download root certificate
description: Returns the root CA certificate file.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ca/install-script:
get:
tags: [Certificate Authority]
summary: Get install script
description: Returns a shell script for installing the CA cert on this OS.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ca/cert/{domain}:
get:
tags: [Certificate Authority]
summary: Get domain certificate
description: Returns the certificate for a specific domain.
parameters:
- name: domain
in: path
required: true
schema:
type: string
description: Domain name
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ca/certs:
get:
tags: [Certificate Authority]
summary: List certificates
description: Returns all issued certificates.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/browse/roots:
get:
tags: [Filesystem Browser]
summary: List browse roots
description: Returns allowed root directories for filesystem browsing.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/browse/directories:
get:
tags: [Filesystem Browser]
summary: Browse directories
description: Lists contents of a directory path.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/media/detected-mounts:
get:
tags: [Filesystem Browser]
summary: Get detected mounts
description: Returns detected media mount points.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/error-logs:
get:
tags: [Error Logs]
summary: Get error logs
description: Returns recent system error logs.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Error Logs]
summary: Clear error logs
description: Clears the system error log.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/audit-logs:
get:
tags: [Audit Log]
summary: Get audit logs
description: Returns recent audit log entries.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Audit Log]
summary: Clear audit logs
description: Clears the audit log.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/license/activate:
post:
tags: [License Management]
summary: Activate license
description: Activates a DashCaddy license key.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/license/status:
get:
tags: [License Management]
summary: Get license status
description: Returns the current license status and tier.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/license/deactivate:
post:
tags: [License Management]
summary: Deactivate license
description: Deactivates the current license.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/license/feature/{feature}:
get:
tags: [License Management]
summary: Check feature access
description: Checks if a feature is available under the current license.
parameters:
- name: feature
in: path
required: true
schema:
type: string
description: Feature name
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/openclaw/status:
get:
tags: [OpenClaw]
summary: Get OpenClaw status
description: Returns the deployment status of OpenClaw.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/openclaw/deploy:
post:
tags: [OpenClaw]
summary: Deploy OpenClaw
description: Deploys the OpenClaw platform.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/openclaw:
delete:
tags: [OpenClaw]
summary: Remove OpenClaw
description: Removes the OpenClaw deployment.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/recipes/templates:
get:
tags: [Recipes]
summary: List recipe templates
description: Returns all available recipe templates. Requires premium license.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/recipes/templates/{recipeId}:
get:
tags: [Recipes]
summary: Get recipe template
description: Returns details for a specific recipe template.
parameters:
- name: recipeId
in: path
required: true
schema:
type: string
description: Recipe ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/recipes/deploy:
post:
tags: [Recipes]
summary: Deploy recipe
description: Deploys a multi-service recipe stack.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/recipes/deployed:
get:
tags: [Recipes]
summary: List deployed recipes
description: Returns all deployed recipe instances.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/recipes/{recipeId}/start:
post:
tags: [Recipes]
summary: Start recipe
description: Starts all services in a deployed recipe.
parameters:
- name: recipeId
in: path
required: true
schema:
type: string
description: Recipe instance ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/recipes/{recipeId}/stop:
post:
tags: [Recipes]
summary: Stop recipe
description: Stops all services in a deployed recipe.
parameters:
- name: recipeId
in: path
required: true
schema:
type: string
description: Recipe instance ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/recipes/{recipeId}/restart:
post:
tags: [Recipes]
summary: Restart recipe
description: Restarts all services in a deployed recipe.
parameters:
- name: recipeId
in: path
required: true
schema:
type: string
description: Recipe instance ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/recipes/{recipeId}:
delete:
tags: [Recipes]
summary: Remove recipe
description: Removes a deployed recipe and all its services.
parameters:
- name: recipeId
in: path
required: true
schema:
type: string
description: Recipe instance ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/themes:
get:
tags: [Themes]
summary: List themes
description: Returns all available dashboard themes.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/themes/{slug}:
post:
tags: [Themes]
summary: Activate theme
description: Activates a dashboard theme by slug.
parameters:
- name: slug
in: path
required: true
schema:
type: string
description: Theme slug
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Themes]
summary: Delete theme
description: Removes a custom theme by slug.
parameters:
- name: slug
in: path
required: true
schema:
type: string
description: Theme slug
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/docker/volumes:
get:
tags: [Docker Resources]
summary: List volumes
description: Returns all Docker volumes.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Docker Resources]
summary: Create volume
description: Creates a new Docker volume.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/docker/volumes/{name}:
delete:
tags: [Docker Resources]
summary: Delete volume
description: Removes a Docker volume by name.
parameters:
- name: name
in: path
required: true
schema:
type: string
description: Volume name
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/docker/networks:
get:
tags: [Docker Resources]
summary: List networks
description: Returns all Docker networks.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Docker Resources]
summary: Create network
description: Creates a new Docker network.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/docker/networks/{id}:
delete:
tags: [Docker Resources]
summary: Delete network
description: Removes a Docker network by ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Network ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/docker/disk-usage:
get:
tags: [Docker Resources]
summary: Get disk usage
description: Returns Docker daemon disk usage information.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/events/stream:
get:
tags: [Events]
summary: Event stream
description: Server-sent events stream for real-time updates (resource alerts, health checks, updates, etc.).
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SSEResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/events/clients:
get:
tags: [Events]
summary: Event client count
description: Returns the number of connected SSE clients.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/workflows/workflows:
get:
tags: [Workflows]
summary: List workflows
description: Returns all bundled automation workflows.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/workflows/workflows/{workflowId}/enable:
post:
tags: [Workflows]
summary: Enable workflow
description: Enables a specific automation workflow.
parameters:
- name: workflowId
in: path
required: true
schema:
type: string
description: Workflow ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/workflows/workflows/{workflowId}/disable:
post:
tags: [Workflows]
summary: Disable workflow
description: Disables a specific automation workflow.
parameters:
- name: workflowId
in: path
required: true
schema:
type: string
description: Workflow ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/workflows/workflows/{workflowId}/run:
post:
tags: [Workflows]
summary: Run workflow
description: Triggers a manual run of a specific workflow.
parameters:
- name: workflowId
in: path
required: true
schema:
type: string
description: Workflow ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/workflows/workflows/{workflowId}/history:
get:
tags: [Workflows]
summary: Get workflow history
description: Returns execution history for a specific workflow.
parameters:
- name: workflowId
in: path
required: true
schema:
type: string
description: Workflow ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/workflows/workflows/history:
get:
tags: [Workflows]
summary: Get all workflow history
description: Returns execution history for all workflows.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/events:
get:
tags: [Security Center]
summary: List security events
description: Returns recent security events from all sources.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/events/{id}:
get:
tags: [Security Center]
summary: Get security event
description: Returns details for a specific security event.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Event ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/events/stats:
get:
tags: [Security Center]
summary: Security event stats
description: Returns aggregate statistics for security events.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/events/stream:
get:
tags: [Security Center]
summary: Security event stream
description: SSE stream of live security events.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SSEResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/events/ingest:
post:
tags: [Security Center]
summary: Ingest security event
description: Ingests a single security event from an external source.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/events/batch:
post:
tags: [Security Center]
summary: Batch ingest events
description: Ingests multiple security events in a single request.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/hosts:
get:
tags: [Security Center]
summary: List hosts
description: Returns all registered security monitoring hosts.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Security Center]
summary: Register host
description: Registers a new security monitoring host.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/hosts/{id}:
get:
tags: [Security Center]
summary: Get host
description: Returns details for a registered host.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Host ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
patch:
tags: [Security Center]
summary: Update host
description: Updates a registered host's properties.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Host ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Security Center]
summary: Delete host
description: Removes a registered monitoring host.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Host ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/hosts/{id}/health:
get:
tags: [Security Center]
summary: Get host health
description: Returns health status for a registered host.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Host ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/security/hosts/{id}/rotate-key:
post:
tags: [Security Center]
summary: Rotate host key
description: Rotates the Bearer auth key for a registered host.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Host ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dependencies/graph:
get:
tags: [Dependencies]
summary: Get dependency graph
description: Returns the full service dependency graph.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dependencies/validate:
get:
tags: [Dependencies]
summary: Validate dependencies
description: Validates all dependency configurations.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dependencies/{serviceId}:
get:
tags: [Dependencies]
summary: Get service dependencies
description: Returns dependencies for a specific service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Dependencies]
summary: Set service dependencies
description: Configures dependencies for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Dependencies]
summary: Delete service dependencies
description: Removes dependencies for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dependencies/{serviceId}/chain:
get:
tags: [Dependencies]
summary: Get dependency chain
description: Returns the full dependency chain for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dependencies/{serviceId}/status:
get:
tags: [Dependencies]
summary: Get dependency status
description: Returns the current status of a service's dependencies.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/dependencies/{serviceId}/restart:
post:
tags: [Dependencies]
summary: Restart with dependencies
description: Restarts a service and all its dependencies in order.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auto-restart/policies:
get:
tags: [Auto-Restart]
summary: List auto-restart policies
description: Returns all configured auto-restart policies.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auto-restart/policies/{serviceId}:
get:
tags: [Auto-Restart]
summary: Get auto-restart policy
description: Returns the auto-restart policy for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Auto-Restart]
summary: Set auto-restart policy
description: Creates or updates an auto-restart policy for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags: [Auto-Restart]
summary: Delete auto-restart policy
description: Removes an auto-restart policy for a service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/auto-restart/policies/{serviceId}/test:
post:
tags: [Auto-Restart]
summary: Test auto-restart policy
description: Triggers a test of an auto-restart policy.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/config-drift/report:
get:
tags: [Config Drift]
summary: Get drift report
description: Runs a fresh drift detection and returns the full report.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/config-drift/last:
get:
tags: [Config Drift]
summary: Get last drift report
description: Returns the last cached drift report without re-detection.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/config-drift/fix:
post:
tags: [Config Drift]
summary: Fix drift
description: Applies fixes for detected configuration drift.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/config-drift/polling:
post:
tags: [Config Drift]
summary: Update polling config
description: Updates the drift detector polling configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ssl/certificates:
get:
tags: [SSL Monitor]
summary: List SSL certificates
description: Returns status for all monitored SSL certificates.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ssl/certificates/{serviceId}:
get:
tags: [SSL Monitor]
summary: Get SSL certificate status
description: Returns SSL certificate status for a specific service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ssl/check:
post:
tags: [SSL Monitor]
summary: Check all certificates
description: Triggers an SSL certificate check for all services.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ssl/check/{serviceId}:
post:
tags: [SSL Monitor]
summary: Check service certificate
description: Triggers an SSL certificate check for a specific service.
parameters:
- name: serviceId
in: path
required: true
schema:
type: string
description: Service ID
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/ssl/config:
get:
tags: [SSL Monitor]
summary: Get SSL monitor config
description: Returns the SSL monitor configuration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [SSL Monitor]
summary: Update SSL monitor config
description: Updates the SSL monitor configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/disk:
get:
tags: [Disk Space]
summary: Get disk usage
description: Returns the current disk space usage snapshot.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/disk/breakdown:
get:
tags: [Disk Space]
summary: Get disk breakdown
description: Returns a breakdown of disk usage by category.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/disk/config:
get:
tags: [Disk Space]
summary: Get disk config
description: Returns the disk space monitor configuration.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Disk Space]
summary: Update disk config
description: Updates the disk space monitor configuration.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/disk/cleanup:
post:
tags: [Disk Space]
summary: Trigger disk cleanup
description: Triggers an automated disk cleanup operation.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/share:
get:
tags: [Sharing]
summary: List shares
description: Returns all active share links.
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags: [Sharing]
summary: Create share
description: Creates a new share link for dashboard access.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'401':
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/share/{id}:
delete:
tags: [Sharing]
summary: Delete share
description: Removes a share link by ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Share ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/share/{token}/preview:
get:
tags: [Sharing]
summary: Preview share
description: Public preview of a share link by token.
parameters:
- name: token
in: path
required: true
schema:
type: string
description: Share token
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/share/{token}/subscribe:
post:
tags: [Sharing]
summary: Subscribe to share
description: Subscribes a client to share updates via token.
parameters:
- name: token
in: path
required: true
schema:
type: string
description: Share token
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/share/tailscale:
post:
tags: [Sharing]
summary: Create Tailscale share
description: Creates a share that uses Tailscale for access.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/share/{token}/redeem-tailscale:
post:
tags: [Sharing]
summary: Redeem Tailscale share
description: Redeems a Tailscale-mediated share token.
parameters:
- name: token
in: path
required: true
schema:
type: string
description: Share token
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/billing/checkout:
post:
tags: [Billing]
summary: Create checkout session
description: Creates a Stripe checkout session for license purchase. Public endpoint — no auth required.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/api/v1/billing/lookup/{sessionId}:
get:
tags: [Billing]
summary: Lookup checkout session
description: Returns the status of a Stripe checkout session by ID.
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
description: Stripe session ID
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
components:
schemas:
SuccessResponse:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
description: Response payload (varies by endpoint)
required:
- success
ErrorResponse:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
description: Error message
required:
- success
- error
GenericObject:
type: object
description: Generic request body (schema varies by endpoint)
additionalProperties: true
SSEResponse:
type: string
description: Server-Sent Events stream (text/event-stream)
Service:
type: object
properties:
id:
type: string
name:
type: string
url:
type: string
icon:
type: string
category:
type: string
healthCheck:
type: boolean
required:
- id
- name
- url
Config:
type: object
properties:
title:
type: string
theme:
type: string
enum: [light, dark, auto]
logo:
type: string
favicon:
type: string
customCss:
type: string
AppTemplate:
type: object
properties:
id:
type: string
name:
type: string
description:
type: string
logo:
type: string
image:
type: string
defaultPort:
type: integer
category:
type: string
environment:
type: array
items:
type: object
properties:
name:
type: string
label:
type: string
default:
type: string
volumes:
type: array
items:
type: object
properties:
container:
type: string
host:
type: string
required:
- id
- name
- image
ContainerStats:
type: object
properties:
id:
type: string
name:
type: string
cpuPercent:
type: number
memoryUsage:
type: integer
memoryLimit:
type: integer
memoryPercent:
type: number
networkRx:
type: integer
networkTx:
type: integer
blockRead:
type: integer
blockWrite:
type: integer