Проекты
Управление проектами через REST API. Все методы требуют токен аутентификации.
POST /v1/project
Создаёт новый проект для текущего пользователя. В теле запроса дополнительно можно задать DNS-серверы и часовую зону (по умолчанию UTC). Имя проекта должно быть уникальным.
Body:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя проекта (3–60 символов, латиница в нижнем регистре, цифры, дефис и точка) |
dnsNameservers |
string[] | Нет | Массив IP-адресов DNS-серверов (по умолчанию ['8.8.8.8', '8.8.4.4']) |
timezone |
string | Нет | Часовая зона проекта (по умолчанию UTC) |
Пример запроса:
{
"name": "my-project",
"dnsNameservers": ["8.8.8.8", "8.8.4.4"],
"timezone": "Europe/Moscow"
}
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-project",
"userId": "550e8400-e29b-41d4-a716-446655440000",
"clusterId": "770e8400-e29b-41d4-a716-446655440002",
"limitId": "880e8400-e29b-41d4-a716-446655440003",
"status": "creating",
"dnsNameservers": ["8.8.8.8", "8.8.4.4"],
"timezone": "Europe/Moscow",
"protected": false,
"paused": false,
"blocked": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:30:00+00:00"
}
Ошибки:
409 Conflict— Проект с таким именем уже существует400 Bad Request— Нет активного кластера или лимитов400 Bad Request— Невалидные параметры
DELETE /v1/project/:projectId
Удаляет проект по его UUID. Все связанные с проектом ресурсы будут очищены, а подтверждением успешного удаления служит пустой ответ без тела.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Ответ: 204 No Content — пустой ответ при успешном удалении.
Ошибки:
404 Not Found— Проект не найден
GET /v1/projects
Возвращает все проекты, принадлежащие текущему пользователю. Ответ — массив объектов Project, каждый элемент которого описывает один проект: идентификатор, имя, статус, даты создания и обновления. Метод не принимает параметров.
Ответ:
[
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-project",
"status": "ready",
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:30:00+00:00"
}
]
GET /v1/project/:projectId
Возвращает один проект по его UUID. Ответ — объект Project, включающий идентификаторы проекта, владельца, кластера и лимита, текущий status, DNS-серверы, часовую зону, флаги protected, paused и blocked, а также даты создания и обновления.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-project",
"userId": "550e8400-e29b-41d4-a716-446655440000",
"clusterId": "770e8400-e29b-41d4-a716-446655440002",
"limitId": "880e8400-e29b-41d4-a716-446655440003",
"status": "ready",
"dnsNameservers": ["8.8.8.8", "8.8.4.4"],
"timezone": "Europe/Moscow",
"protected": false,
"paused": false,
"blocked": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:30:00+00:00",
"pausedAt": null
}
Ошибки:
404 Not Found— Проект не найден
GET /v1/project/:projectId/stats
Возвращает агрегированную статистику использования ресурсов проекта. Блок total отражает лимиты проекта — CPU, память, HDD и SSD; блок containers — количество контейнеров и реплик с утилизацией CPU и памяти; отдельные блоки описывают репозитории, приложения, тома (с общим и занятым размером), конфигурации и переменные окружения, а также сетевые объекты: сервисы, домены, маршруты и порты. CPU указывается в millicores, память и диски — в байтах.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Ответ:
{
"total": {
"cpu": 1000,
"memory": 2147483648,
"hdd": 10737418240,
"ssd": 5368709120
},
"containers": {
"count": 3,
"replicas": 5,
"cpu": 1000,
"cpuUsage": 250,
"memory": 2147483648,
"memoryUsage": 536870912
},
"repositories": {
"count": 2
},
"applications": {
"count": 1
},
"volumes": {
"count": 4,
"size": 16106127360,
"usedSize": 8053063680
},
"environments": {
"configs": {
"count": 3
},
"variables": {
"count": 15
}
},
"network": {
"servicesCount": 2,
"domainsCount": 3,
"routesCount": 5,
"portsCount": 4
}
}
Ошибки:
404 Not Found— Проект не найден
POST /v1/project/:projectId/pause/enable
Приостанавливает проект: останавливает все запущенные контейнеры и связанные с ним ресурсы. В возвращаемом объекте Project выставляется paused: true, а в поле pausedAt фиксируется время приостановки; статус проекта при этом сохраняется. Для возобновления работы используется POST /v1/project/:projectId/pause/disable.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-project",
"userId": "550e8400-e29b-41d4-a716-446655440000",
"clusterId": "770e8400-e29b-41d4-a716-446655440002",
"limitId": "880e8400-e29b-41d4-a716-446655440003",
"status": "ready",
"dnsNameservers": ["8.8.8.8", "8.8.4.4"],
"timezone": "Europe/Moscow",
"protected": false,
"paused": true,
"blocked": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T12:00:00+00:00",
"pausedAt": "2024-01-15T12:00:00+00:00"
}
Ошибки:
404 Not Found— Проект не найден
POST /v1/project/:projectId/pause/disable
Возобновляет работу приостановленного проекта, восстанавливая все его контейнеры и ресурсы. В возвращаемом объекте Project флаг paused сбрасывается в false, поле pausedAt принимает значение null, а updatedAt обновляется на момент выполнения операции.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-project",
"userId": "550e8400-e29b-41d4-a716-446655440000",
"clusterId": "770e8400-e29b-41d4-a716-446655440002",
"limitId": "880e8400-e29b-41d4-a716-446655440003",
"status": "ready",
"dnsNameservers": ["8.8.8.8", "8.8.4.4"],
"timezone": "Europe/Moscow",
"protected": false,
"paused": false,
"blocked": false,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T13:00:00+00:00",
"pausedAt": null
}
Ошибки:
404 Not Found— Проект не найден