mirror of
https://github.com/tiennm99/coolify.git
synced 2026-04-17 17:21:04 +00:00
feat: Add deterministic UUIDs to development seeders
Add fixed UUIDs to all development seeders for programmatic API access: - Server: localhost - Project: project - Applications: docker-compose, nodejs, dockerfile, dockerfile-pure - StandaloneDocker: docker - StandalonePostgresql: postgresql - S3Storage: minio - PrivateKeys: ssh, github-key - GithubApps: github-public, github-app - GitlabApp: gitlab-public - LocalPersistentVolume: volume 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
438
openapi.yaml
438
openapi.yaml
@@ -2090,6 +2090,224 @@ paths:
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
/cloud-tokens:
|
||||
get:
|
||||
tags:
|
||||
- 'Cloud Tokens'
|
||||
summary: 'List Cloud Provider Tokens'
|
||||
description: 'List all cloud provider tokens for the authenticated team.'
|
||||
operationId: list-cloud-tokens
|
||||
responses:
|
||||
'200':
|
||||
description: 'Get all cloud provider tokens.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
properties: { uuid: { type: string }, name: { type: string }, provider: { type: string, enum: [hetzner, digitalocean] }, team_id: { type: integer }, servers_count: { type: integer }, created_at: { type: string }, updated_at: { type: string } }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'400':
|
||||
$ref: '#/components/responses/400'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
post:
|
||||
tags:
|
||||
- 'Cloud Tokens'
|
||||
summary: 'Create Cloud Provider Token'
|
||||
description: 'Create a new cloud provider token. The token will be validated before being stored.'
|
||||
operationId: create-cloud-token
|
||||
requestBody:
|
||||
description: 'Cloud provider token details'
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
required:
|
||||
- provider
|
||||
- token
|
||||
- name
|
||||
properties:
|
||||
provider:
|
||||
type: string
|
||||
enum: [hetzner, digitalocean]
|
||||
example: hetzner
|
||||
description: 'The cloud provider.'
|
||||
token:
|
||||
type: string
|
||||
example: your-api-token-here
|
||||
description: 'The API token for the cloud provider.'
|
||||
name:
|
||||
type: string
|
||||
example: 'My Hetzner Token'
|
||||
description: 'A friendly name for the token.'
|
||||
type: object
|
||||
responses:
|
||||
'201':
|
||||
description: 'Cloud provider token created.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
uuid: { type: string, example: og888os, description: 'The UUID of the token.' }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'400':
|
||||
$ref: '#/components/responses/400'
|
||||
'422':
|
||||
$ref: '#/components/responses/422'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
'/cloud-tokens/{uuid}':
|
||||
get:
|
||||
tags:
|
||||
- 'Cloud Tokens'
|
||||
summary: 'Get Cloud Provider Token'
|
||||
description: 'Get cloud provider token by UUID.'
|
||||
operationId: get-cloud-token-by-uuid
|
||||
parameters:
|
||||
-
|
||||
name: uuid
|
||||
in: path
|
||||
description: 'Token UUID'
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: 'Get cloud provider token by UUID'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
uuid: { type: string }
|
||||
name: { type: string }
|
||||
provider: { type: string }
|
||||
team_id: { type: integer }
|
||||
servers_count: { type: integer }
|
||||
created_at: { type: string }
|
||||
updated_at: { type: string }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
delete:
|
||||
tags:
|
||||
- 'Cloud Tokens'
|
||||
summary: 'Delete Cloud Provider Token'
|
||||
description: 'Delete cloud provider token by UUID. Cannot delete if token is used by any servers.'
|
||||
operationId: delete-cloud-token-by-uuid
|
||||
parameters:
|
||||
-
|
||||
name: uuid
|
||||
in: path
|
||||
description: 'UUID of the cloud provider token.'
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
responses:
|
||||
'200':
|
||||
description: 'Cloud provider token deleted.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
message: { type: string, example: 'Cloud provider token deleted.' }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'400':
|
||||
$ref: '#/components/responses/400'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
patch:
|
||||
tags:
|
||||
- 'Cloud Tokens'
|
||||
summary: 'Update Cloud Provider Token'
|
||||
description: 'Update cloud provider token name.'
|
||||
operationId: update-cloud-token-by-uuid
|
||||
parameters:
|
||||
-
|
||||
name: uuid
|
||||
in: path
|
||||
description: 'Token UUID'
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
requestBody:
|
||||
description: 'Cloud provider token updated.'
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
description: 'The friendly name for the token.'
|
||||
type: object
|
||||
responses:
|
||||
'200':
|
||||
description: 'Cloud provider token updated.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
uuid: { type: string }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
'422':
|
||||
$ref: '#/components/responses/422'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
'/cloud-tokens/{uuid}/validate':
|
||||
post:
|
||||
tags:
|
||||
- 'Cloud Tokens'
|
||||
summary: 'Validate Cloud Provider Token'
|
||||
description: 'Validate a cloud provider token against the provider API.'
|
||||
operationId: validate-cloud-token-by-uuid
|
||||
parameters:
|
||||
-
|
||||
name: uuid
|
||||
in: path
|
||||
description: 'Token UUID'
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: 'Token validation result.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
valid: { type: boolean, example: true }
|
||||
message: { type: string, example: 'Token is valid.' }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
/databases:
|
||||
get:
|
||||
tags:
|
||||
@@ -4099,6 +4317,220 @@ paths:
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
/hetzner/locations:
|
||||
get:
|
||||
tags:
|
||||
- Hetzner
|
||||
summary: 'Get Hetzner Locations'
|
||||
description: 'Get all available Hetzner datacenter locations.'
|
||||
operationId: get-hetzner-locations
|
||||
parameters:
|
||||
-
|
||||
name: cloud_provider_token_id
|
||||
in: query
|
||||
description: 'Cloud provider token UUID'
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: 'List of Hetzner locations.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
properties: { id: { type: integer }, name: { type: string }, description: { type: string }, country: { type: string }, city: { type: string }, latitude: { type: number }, longitude: { type: number } }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
/hetzner/server-types:
|
||||
get:
|
||||
tags:
|
||||
- Hetzner
|
||||
summary: 'Get Hetzner Server Types'
|
||||
description: 'Get all available Hetzner server types (instance sizes).'
|
||||
operationId: get-hetzner-server-types
|
||||
parameters:
|
||||
-
|
||||
name: cloud_provider_token_id
|
||||
in: query
|
||||
description: 'Cloud provider token UUID'
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: 'List of Hetzner server types.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
properties: { id: { type: integer }, name: { type: string }, description: { type: string }, cores: { type: integer }, memory: { type: number }, disk: { type: integer }, prices: { type: array } }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
/hetzner/images:
|
||||
get:
|
||||
tags:
|
||||
- Hetzner
|
||||
summary: 'Get Hetzner Images'
|
||||
description: 'Get all available Hetzner system images (operating systems).'
|
||||
operationId: get-hetzner-images
|
||||
parameters:
|
||||
-
|
||||
name: cloud_provider_token_id
|
||||
in: query
|
||||
description: 'Cloud provider token UUID'
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: 'List of Hetzner images.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
properties: { id: { type: integer }, name: { type: string }, description: { type: string }, type: { type: string }, os_flavor: { type: string }, os_version: { type: string }, architecture: { type: string } }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
/hetzner/ssh-keys:
|
||||
get:
|
||||
tags:
|
||||
- Hetzner
|
||||
summary: 'Get Hetzner SSH Keys'
|
||||
description: 'Get all SSH keys stored in the Hetzner account.'
|
||||
operationId: get-hetzner-ssh-keys
|
||||
parameters:
|
||||
-
|
||||
name: cloud_provider_token_id
|
||||
in: query
|
||||
description: 'Cloud provider token UUID'
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: 'List of Hetzner SSH keys.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
properties: { id: { type: integer }, name: { type: string }, fingerprint: { type: string }, public_key: { type: string } }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
/servers/hetzner:
|
||||
post:
|
||||
tags:
|
||||
- Hetzner
|
||||
summary: 'Create Hetzner Server'
|
||||
description: 'Create a new server on Hetzner and register it in Coolify.'
|
||||
operationId: create-hetzner-server
|
||||
requestBody:
|
||||
description: 'Hetzner server creation parameters'
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
required:
|
||||
- cloud_provider_token_id
|
||||
- location
|
||||
- server_type
|
||||
- image
|
||||
- private_key_uuid
|
||||
properties:
|
||||
cloud_provider_token_id:
|
||||
type: string
|
||||
example: abc123
|
||||
description: 'Cloud provider token UUID'
|
||||
location:
|
||||
type: string
|
||||
example: nbg1
|
||||
description: 'Hetzner location name'
|
||||
server_type:
|
||||
type: string
|
||||
example: cx11
|
||||
description: 'Hetzner server type name'
|
||||
image:
|
||||
type: integer
|
||||
example: 15512617
|
||||
description: 'Hetzner image ID'
|
||||
name:
|
||||
type: string
|
||||
example: my-server
|
||||
description: 'Server name (auto-generated if not provided)'
|
||||
private_key_uuid:
|
||||
type: string
|
||||
example: xyz789
|
||||
description: 'Private key UUID'
|
||||
enable_ipv4:
|
||||
type: boolean
|
||||
example: true
|
||||
description: 'Enable IPv4 (default: true)'
|
||||
enable_ipv6:
|
||||
type: boolean
|
||||
example: true
|
||||
description: 'Enable IPv6 (default: true)'
|
||||
hetzner_ssh_key_ids:
|
||||
type: array
|
||||
items: { type: integer }
|
||||
description: 'Additional Hetzner SSH key IDs'
|
||||
cloud_init_script:
|
||||
type: string
|
||||
description: 'Cloud-init YAML script (optional)'
|
||||
instant_validate:
|
||||
type: boolean
|
||||
example: false
|
||||
description: 'Validate server immediately after creation'
|
||||
type: object
|
||||
responses:
|
||||
'201':
|
||||
description: 'Hetzner server created.'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
uuid: { type: string, example: og888os, description: 'The UUID of the server.' }
|
||||
hetzner_server_id: { type: integer, description: 'The Hetzner server ID.' }
|
||||
ip: { type: string, description: 'The server IP address.' }
|
||||
type: object
|
||||
'401':
|
||||
$ref: '#/components/responses/401'
|
||||
'400':
|
||||
$ref: '#/components/responses/400'
|
||||
'404':
|
||||
$ref: '#/components/responses/404'
|
||||
'422':
|
||||
$ref: '#/components/responses/422'
|
||||
security:
|
||||
-
|
||||
bearerAuth: []
|
||||
/version:
|
||||
get:
|
||||
summary: Version
|
||||
@@ -6580,6 +7012,9 @@ tags:
|
||||
-
|
||||
name: Applications
|
||||
description: Applications
|
||||
-
|
||||
name: 'Cloud Tokens'
|
||||
description: 'Cloud Tokens'
|
||||
-
|
||||
name: Databases
|
||||
description: Databases
|
||||
@@ -6589,6 +7024,9 @@ tags:
|
||||
-
|
||||
name: 'GitHub Apps'
|
||||
description: 'GitHub Apps'
|
||||
-
|
||||
name: Hetzner
|
||||
description: Hetzner
|
||||
-
|
||||
name: Projects
|
||||
description: Projects
|
||||
|
||||
Reference in New Issue
Block a user