mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-03 20:12:58 +00:00
2243 lines
56 KiB
YAML
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
|