mirror of
https://github.com/tiennm99/coolify.git
synced 2026-04-28 12:20:11 +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:
+790
@@ -3295,6 +3295,387 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/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": [
|
||||
@@ -6334,6 +6715,407 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/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",
|
||||
@@ -10209,6 +10991,10 @@
|
||||
"name": "Applications",
|
||||
"description": "Applications"
|
||||
},
|
||||
{
|
||||
"name": "Cloud Tokens",
|
||||
"description": "Cloud Tokens"
|
||||
},
|
||||
{
|
||||
"name": "Databases",
|
||||
"description": "Databases"
|
||||
@@ -10221,6 +11007,10 @@
|
||||
"name": "GitHub Apps",
|
||||
"description": "GitHub Apps"
|
||||
},
|
||||
{
|
||||
"name": "Hetzner",
|
||||
"description": "Hetzner"
|
||||
},
|
||||
{
|
||||
"name": "Projects",
|
||||
"description": "Projects"
|
||||
|
||||
Reference in New Issue
Block a user