Files
Containr/app/backend/docs/api/openapi.yaml
T
2026-04-10 12:02:36 +02:00

2243 lines
56 KiB
YAML

openapi: 3.0.3
info:
title: Containr API
description: |
Self-hosted PaaS on Proxmox - Railway-like platform for container orchestration and deployment.
## Overview
Containr provides a comprehensive platform for deploying, managing, and scaling containerized applications on Proxmox infrastructure. This API allows you to manage projects, services, deployments, databases, and more through a RESTful interface.
## Authentication
The API uses JWT-based authentication. Include your JWT token in the Authorization header:
```
Authorization: Bearer <your-jwt-token>
```
## Base URL
```
https://your-containr-domain.com/api/v1
```
version: 1.0.0
contact:
name: Containr Documentation
url: https://github.com/your-org/containr
license:
name: MIT
url: https://opensource.org/licenses/MIT
servers:
- url: http://localhost:8080/api/v1
description: Development server
- url: https://your-containr-domain.com/api/v1
description: Production server
paths:
# Health Check
/health:
get:
tags:
- Health
summary: Health check endpoint
description: Returns the current status of the API service
responses:
'200':
description: Service is healthy
content:
application/json:
schema:
$ref: '#/components/schemas/HealthResponse'
# Authentication
/auth/login:
post:
tags:
- Authentication
summary: User login
description: Authenticate user and return JWT token
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LoginRequest'
responses:
'200':
description: Login successful
content:
application/json:
schema:
$ref: '#/components/schemas/LoginResponse'
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/auth/register:
post:
tags:
- Authentication
summary: User registration
description: Register a new user account
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterRequest'
responses:
'201':
description: Registration successful
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# User Management
/user/profile:
get:
tags:
- User
summary: Get user profile
description: Retrieve current user's profile information
security:
- bearerAuth: []
responses:
'200':
description: Profile retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
put:
tags:
- User
summary: Update user profile
description: Update current user's profile information
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUserRequest'
responses:
'200':
description: Profile updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# Projects
/projects:
get:
tags:
- Projects
summary: List projects
description: Retrieve all projects accessible to the current user
security:
- bearerAuth: []
parameters:
- name: page
in: query
description: Page number for pagination
schema:
type: integer
default: 1
- name: limit
in: query
description: Number of items per page
schema:
type: integer
default: 20
- name: search
in: query
description: Search term to filter projects
schema:
type: string
responses:
'200':
description: Projects retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectsResponse'
post:
tags:
- Projects
summary: Create project
description: Create a new project
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectRequest'
responses:
'201':
description: Project created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'400':
description: Invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/projects/{id}:
get:
tags:
- Projects
summary: Get project
description: Retrieve a specific project by ID
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Project ID
schema:
type: string
responses:
'200':
description: Project retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'404':
description: Project not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
put:
tags:
- Projects
summary: Update project
description: Update a specific project
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Project ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectRequest'
responses:
'200':
description: Project updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'404':
description: Project not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
tags:
- Projects
summary: Delete project
description: Delete a specific project
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Project ID
schema:
type: string
responses:
'204':
description: Project deleted successfully
'404':
description: Project not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# Services
/projects/{project_id}/services:
get:
tags:
- Services
summary: List project services
description: Retrieve all services in a project
security:
- bearerAuth: []
parameters:
- name: project_id
in: path
required: true
description: Project ID
schema:
type: string
responses:
'200':
description: Services retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Service'
post:
tags:
- Services
summary: Create service
description: Create a new service in a project
security:
- bearerAuth: []
parameters:
- name: project_id
in: path
required: true
description: Project ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateServiceRequest'
responses:
'201':
description: Service created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Service'
/services/{id}:
get:
tags:
- Services
summary: Get service
description: Retrieve a specific service
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Service ID
schema:
type: string
responses:
'200':
description: Service retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Service'
put:
tags:
- Services
summary: Update service
description: Update a specific service
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Service ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateServiceRequest'
responses:
'200':
description: Service updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Service'
delete:
tags:
- Services
summary: Delete service
description: Delete a specific service
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Service ID
schema:
type: string
responses:
'204':
description: Service deleted successfully
/services/{id}/deployments:
get:
tags:
- Deployments
summary: List deployments
description: Retrieve recent deployments for a specific service
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Service ID
schema:
type: string
responses:
'200':
description: Deployments retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentListResponse'
post:
tags:
- Deployments
summary: Create deployment
description: Trigger a new deployment for a service
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Service ID
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDeploymentRequest'
responses:
'201':
description: Deployment created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Deployment'
/deployments/{id}:
get:
tags:
- Deployments
summary: Get deployment
description: Retrieve a deployment with build/runtime details
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Deployment ID
schema:
type: string
responses:
'200':
description: Deployment retrieved successfully
content:
application/json:
schema:
type: object
properties:
deployment:
$ref: '#/components/schemas/Deployment'
/deployments/{id}/rollback:
post:
tags:
- Deployments
summary: Rollback deployment
description: Create a rollback deployment from a previous deployment
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Deployment ID
schema:
type: string
responses:
'201':
description: Rollback initiated
content:
application/json:
schema:
$ref: '#/components/schemas/RollbackDeploymentResponse'
/services/{id}/logs:
get:
tags:
- Logs
summary: Get service logs
description: Retrieve service container logs
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Service ID
schema:
type: string
- name: follow
in: query
required: false
description: Stream logs continuously over SSE
schema:
type: boolean
default: false
- name: tail
in: query
required: false
description: Number of recent log lines to fetch
schema:
type: string
default: '100'
responses:
'200':
description: Service logs retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLogsResponse'
/deployments/{id}/logs:
get:
tags:
- Logs
summary: Get deployment logs
description: Retrieve build/runtime logs for a deployment
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Deployment ID
schema:
type: string
- name: type
in: query
required: false
description: Select log stream
schema:
type: string
enum: [all, build, runtime]
default: all
responses:
'200':
description: Deployment logs retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentLogsResponse'
# Builds
/builds:
get:
tags:
- Builds
summary: List builds
description: Retrieve builds with optional filtering and pagination
security:
- bearerAuth: []
parameters:
- name: project_id
in: query
description: Filter by project ID
schema:
type: string
- name: service_id
in: query
description: Filter by service ID
schema:
type: string
- name: status
in: query
description: Filter by build status
schema:
type: string
enum: [pending, running, success, failed, cancelled]
- name: page
in: query
description: 1-based page number
schema:
type: integer
minimum: 1
default: 1
- name: limit
in: query
description: Number of items per page (max 100)
schema:
type: integer
minimum: 1
maximum: 100
default: 20
responses:
'200':
description: Builds retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BuildListResponse'
post:
tags:
- Builds
summary: Start build
description: Start a new build
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StartBuildRequest'
responses:
'201':
description: Build started successfully
content:
application/json:
schema:
$ref: '#/components/schemas/StartBuildResponse'
/builds/{id}:
get:
tags:
- Builds
summary: Get build status
description: Retrieve build status and details
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Build ID
schema:
type: string
responses:
'200':
description: Build status retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BuildStatus'
/builds/{id}/cancel:
post:
tags:
- Builds
summary: Cancel build
description: Cancel an in-progress build
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Build ID
schema:
type: string
responses:
'200':
description: Build cancelled
content:
application/json:
schema:
$ref: '#/components/schemas/BuildCancelResponse'
/builds/{id}/logs:
get:
tags:
- Builds
summary: Get build logs
description: Retrieve build logs
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Build ID
schema:
type: string
- name: follow
in: query
required: false
description: Follow logs in realtime (currently returns same text output)
schema:
type: boolean
default: false
responses:
'200':
description: Build logs retrieved successfully
content:
text/plain:
schema:
type: string
# Templates
/templates:
get:
tags:
- Templates
summary: List templates
description: Retrieve service templates with optional category filter
security:
- bearerAuth: []
parameters:
- name: category
in: query
required: false
description: Filter templates by category
schema:
type: string
responses:
'200':
description: Templates retrieved successfully
content:
application/json:
schema:
type: object
properties:
templates:
type: array
items:
$ref: '#/components/schemas/ServiceTemplate'
/templates/{id}:
get:
tags:
- Templates
summary: Get template
description: Retrieve a specific template with parsed config and variables
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Template ID
schema:
type: string
responses:
'200':
description: Template retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateDetailResponse'
/templates/{id}/deploy:
post:
tags:
- Templates
summary: Create resource from template
description: |
Create a new resource in a project using a selected template.
For `database` templates, this creates a managed database service.
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Template ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeployTemplateRequest'
responses:
'201':
description: Service created from template
content:
application/json:
schema:
$ref: '#/components/schemas/DeployTemplateResponse'
# Audit Logs
/audit-logs:
get:
tags:
- Audit
summary: List audit logs
description: Retrieve recent audit log entries for the current user with optional filters
security:
- bearerAuth: []
parameters:
- name: resource
in: query
required: false
description: Filter audit logs by resource type
schema:
type: string
- name: action
in: query
required: false
description: Filter audit logs by action type
schema:
type: string
- name: page
in: query
required: false
description: 1-based page number
schema:
type: integer
minimum: 1
default: 1
- name: limit
in: query
required: false
description: Number of entries per page
schema:
type: integer
minimum: 1
maximum: 100
default: 50
responses:
'200':
description: Audit logs retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AuditLogListResponse'
/audit-logs/{resource}/{id}:
get:
tags:
- Audit
summary: List resource audit logs
description: Retrieve audit log entries for a specific resource and resource ID
security:
- bearerAuth: []
parameters:
- name: resource
in: path
required: true
description: Resource type
schema:
type: string
- name: id
in: path
required: true
description: Resource ID
schema:
type: string
responses:
'200':
description: Resource audit logs retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AuditLogListResponse'
# Databases
/databases:
get:
tags:
- Databases
summary: List databases
description: Retrieve all managed databases for the authenticated user
security:
- bearerAuth: []
responses:
'200':
description: Databases retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseListResponse'
post:
tags:
- Databases
summary: Create database
description: Create a new managed database and start provisioning
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDatabaseRequest'
responses:
'201':
description: Database provisioning started
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseCreateResponse'
/databases/{id}:
get:
tags:
- Databases
summary: Get database
description: Retrieve a specific database
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Database ID
schema:
type: string
responses:
'200':
description: Database retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Database'
put:
tags:
- Databases
summary: Update database
description: Update mutable database metadata (name or plan)
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Database ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDatabaseRequest'
responses:
'200':
description: Database updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MessageResponse'
delete:
tags:
- Databases
summary: Delete database
description: Delete managed database and associated runtime
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Database ID
schema:
type: string
responses:
'200':
description: Database deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MessageResponse'
/databases/{id}/action:
post:
tags:
- Databases
summary: Execute database action
description: Execute start, stop, or restart action for a managed database
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Database ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseActionRequest'
responses:
'200':
description: Action accepted
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseActionResponse'
/databases/{id}/backup:
post:
tags:
- Databases
summary: Create backup
description: Create a managed snapshot backup for a database
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Database ID
schema:
type: string
responses:
'201':
description: Backup started
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseBackupCreateResponse'
/databases/{id}/restore:
post:
tags:
- Databases
summary: Restore backup
description: Restore a managed database from a completed backup
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
description: Database ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseRestoreRequest'
responses:
'200':
description: Restore started
content:
application/json:
schema:
$ref: '#/components/schemas/MessageResponse'
# Git Integration
/git/providers:
get:
tags:
- Git
summary: List Git providers
description: Retrieve available Git providers
security:
- bearerAuth: []
responses:
'200':
description: Git providers retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GitProvider'
post:
tags:
- Git
summary: Add Git provider
description: Add a new Git provider
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGitProviderRequest'
responses:
'201':
description: Git provider added successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GitProvider'
/git/providers/{providerId}/repositories:
get:
tags:
- Git
summary: List repositories
description: Retrieve repositories from a Git provider
security:
- bearerAuth: []
parameters:
- name: providerId
in: path
required: true
description: Git provider ID
schema:
type: string
responses:
'200':
description: Repositories retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GitRepository'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
Error:
type: object
properties:
error:
type: string
description: Error message
code:
type: string
description: Error code
details:
type: object
description: Additional error details
HealthResponse:
type: object
properties:
status:
type: string
example: ok
service:
type: string
example: containr-api
version:
type: string
example: 1.0.0
LoginRequest:
type: object
required:
- email
- password
properties:
email:
type: string
format: email
description: User email address
password:
type: string
format: password
description: User password
LoginResponse:
type: object
properties:
token:
type: string
description: JWT access token
user:
$ref: '#/components/schemas/User'
RegisterRequest:
type: object
required:
- email
- password
- name
properties:
email:
type: string
format: email
description: User email address
password:
type: string
format: password
description: User password
name:
type: string
description: User display name
User:
type: object
properties:
id:
type: string
description: User ID
email:
type: string
format: email
description: User email
name:
type: string
description: User display name
avatar_url:
type: string
description: Optional avatar image URL
created_at:
type: string
format: date-time
description: Account creation timestamp
updated_at:
type: string
format: date-time
description: Last update timestamp
UpdateUserRequest:
type: object
properties:
name:
type: string
description: User display name
email:
type: string
format: email
description: User email address
avatar_url:
type: string
description: Optional avatar image URL
Project:
type: object
properties:
id:
type: string
description: Project ID
name:
type: string
description: Project name
description:
type: string
description: Project description
owner_id:
type: string
description: Project owner ID
created_at:
type: string
format: date-time
description: Project creation timestamp
updated_at:
type: string
format: date-time
description: Last update timestamp
services_count:
type: integer
description: Number of services in the project
CreateProjectRequest:
type: object
required:
- name
properties:
name:
type: string
description: Project name
description:
type: string
description: Project description
UpdateProjectRequest:
type: object
properties:
name:
type: string
description: Project name
description:
type: string
description: Project description
ProjectsResponse:
type: object
properties:
projects:
type: array
items:
$ref: '#/components/schemas/Project'
pagination:
$ref: '#/components/schemas/Pagination'
Pagination:
type: object
properties:
page:
type: integer
description: Current page number
limit:
type: integer
description: Items per page
total:
type: integer
description: Total number of items
total_pages:
type: integer
description: Total number of pages
Service:
type: object
properties:
id:
type: string
description: Service ID
project_id:
type: string
description: Project ID
name:
type: string
description: Service name
type:
type: string
enum: [web, worker, database, cron]
description: Service type
status:
type: string
enum: [running, stopped, building, failed]
description: Service status
source:
$ref: '#/components/schemas/ServiceSource'
build_config:
$ref: '#/components/schemas/BuildConfig'
resources:
$ref: '#/components/schemas/ResourceConfig'
created_at:
type: string
format: date-time
description: Service creation timestamp
updated_at:
type: string
format: date-time
description: Last update timestamp
CreateServiceRequest:
type: object
required:
- name
- type
properties:
name:
type: string
description: Service name
type:
type: string
enum: [web, worker, database, cron]
description: Service type
source:
$ref: '#/components/schemas/ServiceSource'
build_config:
$ref: '#/components/schemas/BuildConfig'
resources:
$ref: '#/components/schemas/ResourceConfig'
UpdateServiceRequest:
type: object
properties:
name:
type: string
description: Service name
build_config:
$ref: '#/components/schemas/BuildConfig'
resources:
$ref: '#/components/schemas/ResourceConfig'
ServiceSource:
type: object
properties:
type:
type: string
enum: [git, dockerfile, image]
description: Source type
repository:
type: string
description: Git repository URL
branch:
type: string
description: Git branch
root_directory:
type: string
description: Root directory for build
dockerfile:
type: string
description: Dockerfile path
image:
type: string
description: Docker image name
BuildConfig:
type: object
properties:
builder_type:
type: string
enum: [nixpacks, dockerfile, image]
description: Build system type
build_command:
type: string
description: Custom build command
start_command:
type: string
description: Custom start command
environment_variables:
type: object
additionalProperties:
type: string
description: Build environment variables
ResourceConfig:
type: object
properties:
cpu:
type: string
description: CPU allocation
memory:
type: string
description: Memory allocation
storage:
type: string
description: Storage allocation
Deployment:
type: object
properties:
id:
type: string
description: Deployment ID
service_id:
type: string
description: Service ID
commit_hash:
type: string
description: Source commit hash
status:
type: string
description: Deployment status
image_name:
type: string
description: Deployed image name
image_tag:
type: string
description: Deployed image tag
build_log:
type: string
description: Build log content
runtime_log:
type: string
description: Runtime log content
error:
type: string
description: Deployment error
started_at:
type: string
format: date-time
description: Deployment start timestamp
completed_at:
type: string
format: date-time
description: Deployment completion timestamp
created_at:
type: string
format: date-time
description: Deployment creation timestamp
updated_at:
type: string
format: date-time
description: Deployment update timestamp
DeploymentListResponse:
type: object
properties:
deployments:
type: array
items:
$ref: '#/components/schemas/Deployment'
CreateDeploymentRequest:
type: object
properties:
commit_hash:
type: string
description: Source commit hash
branch:
type: string
description: Source branch
trigger:
type: string
description: Trigger source (manual, restart, webhook)
env_vars:
type: object
additionalProperties:
type: string
description: Runtime environment variable overrides
RollbackDeploymentResponse:
type: object
properties:
deployment:
$ref: '#/components/schemas/Deployment'
message:
type: string
description: Rollback result message
ServiceLogEntry:
type: object
properties:
timestamp:
type: string
format: date-time
description: Log timestamp
message:
type: string
description: Log message
stream:
type: string
description: Log stream identifier
ServiceLogsResponse:
type: object
properties:
logs:
type: array
items:
$ref: '#/components/schemas/ServiceLogEntry'
message:
type: string
description: Additional context when logs are unavailable
DeploymentLogsResponse:
type: object
properties:
logs:
type: array
items:
$ref: '#/components/schemas/ServiceLogEntry'
build_log:
type: string
description: Build log text
runtime_log:
type: string
description: Runtime log text
BuildStatus:
type: object
properties:
id:
type: string
description: Build ID
project_id:
type: string
description: Project ID
service_id:
type: string
description: Service ID
status:
type: string
enum: [pending, running, success, failed, cancelled]
description: Build status
progress:
type: integer
minimum: 0
maximum: 100
description: Build progress percentage
started_at:
type: string
format: date-time
description: Build start time
completed_at:
type: string
format: date-time
description: Build completion time
image_name:
type: string
description: Target image name
image_tag:
type: string
description: Target image tag
size:
type: integer
format: int64
description: Built image size in bytes
error:
type: string
description: Build error message
log:
type: string
description: Build logs
metadata:
type: object
additionalProperties:
type: string
description: Additional build metadata
StartBuildRequest:
type: object
required:
- image_name
- image_tag
properties:
build_type:
type: string
description: Build system type; if omitted backend auto-detects
enum: [railpack, nixpacks, dockerfile, prebuilt]
source_path:
type: string
description: Local source path for build context
prebuilt_image:
type: string
description: Existing image reference when using prebuilt mode
image_name:
type: string
description: Output image name
image_tag:
type: string
description: Output image tag
registry_url:
type: string
description: Optional registry URL for push target
build_command:
type: string
description: Optional build command override
start_command:
type: string
description: Optional runtime command override
environment:
type: object
additionalProperties:
type: string
description: Build environment variables
build_args:
type: object
additionalProperties:
type: string
description: Build-time arguments
labels:
type: object
additionalProperties:
type: string
description: Image labels
project_id:
type: string
description: Associated project ID
service_id:
type: string
description: Associated service ID
branch:
type: string
description: Git branch
commit:
type: string
description: Git commit SHA
StartBuildResponse:
type: object
properties:
id:
type: string
description: Build ID
status:
type: string
enum: [pending, running, success, failed, cancelled]
description: Initial build status
image_name:
type: string
description: Requested image name
image_tag:
type: string
description: Requested image tag
size:
type: integer
format: int64
description: Result image size in bytes when available
digest:
type: string
description: Result image digest when available
build_time:
type: string
format: date-time
description: Build request timestamp
success:
type: boolean
description: Whether request acceptance succeeded
error:
type: string
description: Error details when acceptance failed
BuildListResponse:
type: object
properties:
builds:
type: array
items:
$ref: '#/components/schemas/BuildStatus'
total:
type: integer
description: Total matching builds
page:
type: integer
description: Current page number
limit:
type: integer
description: Page size
BuildCancelResponse:
type: object
properties:
message:
type: string
description: Cancellation result message
ServiceTemplate:
type: object
properties:
id:
type: string
description: Template ID
name:
type: string
description: Template display name
description:
type: string
description: Template description
category:
type: string
description: Template category
logo:
type: string
description: Template logo URL
config:
type: string
description: Raw template config JSON string
variables:
type: string
description: Raw template variables JSON string
is_official:
type: boolean
description: Whether template is an official preset
created_at:
type: string
format: date-time
description: Creation timestamp
updated_at:
type: string
format: date-time
description: Last update timestamp
TemplateConfig:
type: object
properties:
type:
type: string
description: Service type for created service
runtime:
type: string
description: Runtime or base image
build_command:
type: string
description: Build command
start_command:
type: string
description: Start command
port:
type: integer
description: Service port
health_check:
type: string
description: Health check path
environment:
type: object
additionalProperties:
type: string
description: Default environment variables
dockerfile:
type: string
description: Optional dockerfile path
nixpacks_config:
type: object
additionalProperties:
type: string
description: Optional nixpacks-specific config
TemplateVariable:
type: object
properties:
key:
type: string
description: Variable key
label:
type: string
description: Display label
default:
type: string
description: Default value
required:
type: boolean
description: Whether variable is required
secret:
type: boolean
description: Whether variable is sensitive
description:
type: string
description: Variable description
TemplateDetailResponse:
type: object
properties:
template:
$ref: '#/components/schemas/ServiceTemplate'
config:
$ref: '#/components/schemas/TemplateConfig'
variables:
type: array
items:
$ref: '#/components/schemas/TemplateVariable'
DeployTemplateRequest:
type: object
required:
- project_id
- name
properties:
project_id:
type: string
description: Target project ID
name:
type: string
description: Name for the created service
plan:
type: string
enum: [hobby, starter, standard, business]
description: Optional managed database plan for database templates
region:
type: string
description: Optional managed database region for database templates
variables:
type: object
additionalProperties:
type: string
description: Variable overrides for template deployment
DeployTemplateResponse:
type: object
properties:
resource:
type: string
enum: [service, database]
description: Type of resource created by template deployment
service_id:
type: string
description: Newly created service ID (set for non-database templates)
database_id:
type: string
description: Newly created managed database ID (set for database templates)
message:
type: string
description: Deployment result message
AuditLog:
type: object
properties:
id:
type: string
description: Audit log ID
user_id:
type: string
description: User ID that triggered action
user_email:
type: string
description: User email snapshot
resource:
type: string
description: Resource type
resource_id:
type: string
description: Resource ID
action:
type: string
description: Action type
details:
type: string
description: JSON-encoded action details
ip_address:
type: string
description: Source IP address
user_agent:
type: string
description: Source user agent
created_at:
type: string
format: date-time
description: Timestamp when the audit log entry was created
AuditLogListResponse:
type: object
properties:
audit_logs:
type: array
items:
$ref: '#/components/schemas/AuditLog'
Database:
type: object
properties:
id:
type: string
description: Database ID
name:
type: string
description: Database name
type:
type: string
enum: [postgresql, redis, mysql, mariadb, mongodb, clickhouse, dragonfly]
description: Database type
status:
type: string
enum: [running, stopped, building, error]
description: Database status
connection_url:
type: string
description: Database connection URL
version:
type: string
description: Database version
plan:
type: string
enum: [hobby, starter, standard, business]
description: Provisioning plan
region:
type: string
description: Provisioning region
metrics:
$ref: '#/components/schemas/DatabaseMetrics'
backups:
$ref: '#/components/schemas/DatabaseBackupConfig'
settings:
$ref: '#/components/schemas/DatabaseSettings'
created_at:
type: string
format: date-time
description: Database creation timestamp
updated_at:
type: string
format: date-time
description: Last update timestamp
CreateDatabaseRequest:
type: object
required:
- name
- type
- plan
- region
properties:
name:
type: string
description: Database name
type:
type: string
enum: [postgresql, redis, mysql, mariadb, mongodb, clickhouse, dragonfly]
description: Database type
plan:
type: string
enum: [hobby, starter, standard, business]
description: Database plan
region:
type: string
description: Database region
UpdateDatabaseRequest:
type: object
properties:
name:
type: string
description: Updated database name
plan:
type: string
enum: [hobby, starter, standard, business]
description: Updated database plan
DatabaseActionRequest:
type: object
required:
- action
properties:
action:
type: string
enum: [start, stop, restart]
description: Action to execute
DatabaseRestoreRequest:
type: object
required:
- backup_id
properties:
backup_id:
type: string
description: Backup identifier to restore
DatabaseCreateResponse:
type: object
properties:
id:
type: string
description: Database ID
message:
type: string
status:
type: string
enum: [building]
DatabaseActionResponse:
type: object
properties:
message:
type: string
status:
type: string
enum: [running, stopped, building, error]
DatabaseBackupCreateResponse:
type: object
properties:
backup_id:
type: string
message:
type: string
status:
type: string
enum: [in_progress]
DatabaseListResponse:
type: object
properties:
databases:
type: array
items:
$ref: '#/components/schemas/Database'
DatabaseMetrics:
type: object
properties:
cpu:
type: number
memory:
type: number
storage:
type: number
connections:
type: integer
read_iops:
type: integer
write_iops:
type: integer
network_in:
type: number
network_out:
type: number
DatabaseBackup:
type: object
properties:
id:
type: string
created_at:
type: string
format: date-time
size:
type: string
status:
type: string
enum: [completed, failed, in_progress]
DatabaseBackupConfig:
type: object
properties:
enabled:
type: boolean
last_backup:
type: string
format: date-time
retention:
type: integer
next_backup:
type: string
format: date-time
backups:
type: array
items:
$ref: '#/components/schemas/DatabaseBackup'
DatabaseSettings:
type: object
properties:
max_connections:
type: integer
timeout:
type: integer
ssl:
type: boolean
logging:
type: boolean
MessageResponse:
type: object
properties:
message:
type: string
GitProvider:
type: object
properties:
id:
type: string
description: Provider ID
type:
type: string
enum: [github, gitlab, bitbucket]
description: Provider type
name:
type: string
description: Provider display name
access_token:
type: string
description: Encrypted access token
created_at:
type: string
format: date-time
description: Provider creation timestamp
CreateGitProviderRequest:
type: object
required:
- type
- access_token
properties:
type:
type: string
enum: [github, gitlab, bitbucket]
description: Provider type
name:
type: string
description: Provider display name
access_token:
type: string
description: Access token
GitRepository:
type: object
properties:
id:
type: string
description: Repository ID
name:
type: string
description: Repository name
full_name:
type: string
description: Repository full name
description:
type: string
description: Repository description
private:
type: boolean
description: Whether repository is private
default_branch:
type: string
description: Default branch
clone_url:
type: string
description: Clone URL
web_url:
type: string
description: Web URL
tags:
- name: Health
description: Health check endpoints
- name: Authentication
description: User authentication and authorization
- name: User
description: User profile management
- name: Projects
description: Project management
- name: Services
description: Service management
- name: Deployments
description: Deployment lifecycle management
- name: Logs
description: Service and deployment log retrieval
- name: Builds
description: Build management
- name: Templates
description: Service template catalog and deployment
- name: Audit
description: Audit event history and resource-level trails
- name: Databases
description: Database management
- name: Git
description: Git integration