Перейти до основного вмісту

Playspecs API

Керування Playspec — блюпринтами, що визначають сервіси, конфігурацію та інфраструктуру вашого середовища.

Ендпоінти

МетодШляхСкоупОпис
GET/api/playspecsplayspecs:readСписок всіх Playspec
GET/api/playspecs/:idplayspecs:readОтримати один Playspec
POST/api/playspecsplayspecs:writeСтворити новий Playspec
PATCH/api/playspecs/:idplayspecs:writeОновити Playspec (повинен бути розблокований)
DELETE/api/playspecs/:idplayspecs:deleteВидалити Playspec (повинен бути розблокований)
GET/api/playspecs/:id/servicesplayspecs:readОтримати визначення сервісів
POST/api/playspecs/validate_composeplayspecs:readВалідувати Docker Compose YAML
POST/api/playspecs/:id/add_mounted_fileplayspecs:writeДодати монтований файл
PATCH/api/playspecs/:id/update_mounted_fileplayspecs:writeОновити конфігурацію монтованого файлу
DELETE/api/playspecs/:id/remove_mounted_fileplayspecs:writeВидалити монтований файл
POST/api/playspecs/:id/add_registry_credentialplayspecs:writeДодати облікові дані приватного реєстру
DELETE/api/playspecs/:id/remove_registry_credentialplayspecs:writeВидалити облікові дані реєстру

Список Playspec

GET /api/playspecs

Відповідь:

[
{
"id": 1,
"name": "My Web Stack",
"description": "Rails + PostgreSQL + Redis",
"locked": true,
"persist_volumes": false,
"playground_count": 2,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:30:00Z"
}
]

Отримати Playspec (детально)

GET /api/playspecs/:id

Повертає повний Playspec, включаючи сервіси, монтовані файли та облікові дані реєстрів:

{
"id": 1,
"name": "My Web Stack",
"description": "Rails + PostgreSQL + Redis",
"locked": false,
"persist_volumes": false,
"playground_count": 0,
"services": [
{
"name": "web",
"type": "dynamic",
"playzone_id": 1,
"dockerfile_path": "Dockerfile",
"env_file_path": ".env.example",
"workdir": "/app",
"exposure": {
"enabled": true,
"port": 3000,
"subdomain": "web",
"visibility": "external"
}
},
{
"name": "db",
"type": "static",
"image": "postgres:16",
"exposure": {
"enabled": false
}
}
],
"mounted_files": [],
"credentials": [],
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:30:00Z"
}

Створити Playspec

POST /api/playspecs

Тіло запиту:

{
"playspec": {
"name": "My Web Stack",
"description": "Rails + PostgreSQL + Redis",
"base_compose_yaml": "services:\n web:\n build: .\n ports:\n - \"3000:3000\"\n db:\n image: postgres:16",
"persist_volumes": false,
"services": [
{
"name": "web",
"type": "dynamic",
"playzone_id": 1,
"dockerfile_path": "Dockerfile",
"env_file_path": ".env.example",
"workdir": "/app",
"exposure": { "enabled": true, "port": 3000, "subdomain": "web", "visibility": "external" }
},
{
"name": "db",
"type": "static",
"image": "postgres:16",
"exposure": { "enabled": false }
}
]
}
}
Заблоковані Playspec

Playspec стає заблокованим, коли на нього посилається будь-який Playground. Заблоковані Playspec не можуть бути оновлені або видалені. Див. Заблокований статус.


Валідація Compose

POST /api/playspecs/validate_compose

Валідує Docker Compose YAML без створення Playspec.

Тіло запиту:

{
"compose_yaml": "services:\n web:\n build: .\n ports:\n - \"3000:3000\""
}

Відповідь:

{
"valid": true,
"services": [
{ "name": "web", "ports": ["3000:3000"] }
],
"errors": [],
"warnings": []
}

Додати монтований файл

POST /api/playspecs/:id/add_mounted_file
# Content-Type: multipart/form-data

Параметри:

ПараметрТипОбовʼязковийОпис
filefileТакФайл для завантаження
mount_pathstringТакАбсолютний шлях всередині контейнера
target_services[]arrayНіСервіси, що отримують монтування (всі, якщо порожньо)
readonlybooleanНіЧи є монтування тільки для читання (за замовчуванням: true)

Додати облікові дані реєстру

POST /api/playspecs/:id/add_registry_credential

Тіло запиту:

{
"registry_type": "docker_hub",
"registry_url": "https://index.docker.io/v1/",
"username": "myuser",
"secret": "mypassword"
}