Help:Public API/management/containers
Управление контейнерами (проектами, ветками, группами проектов)
В данном разделе содержится описание REST API управления контейнерами и их содержимым.
Для выполнения операций получения списка контейнеров, их создания, изменения и удаления существует http-ресурс
POST /api/public/admin/server/containers
Для операций управления составом групп проектов существует http-ресурс
POST /api/public/admin/server/project-groups
Для операции переименования снимков существует http-ресурс
PUT /api/public/snapshots/{snapshot_id}/update
POST /api/public/admin/server/containers — управление набором проектов, веток, групп проектов
Формат запроса:
{
"action": "string",
"id": "string",
"type": "string",
"name": "string",
"parent": "string",
"review_with_comment": true
}
Формат ответа:
{
"Containers": [
{
"action": "string",
"id": "string",
"name": "string",
"parent": "string",
"review_with_comment": true,
"type": "string"
}
]
}
Назначение полей запроса и установка значений полей ответа зависит от типа операции и определяется значением поля запроса action.
| Значение | Тип операции |
|---|---|
| list | Получение списка контейнеров |
| add | Создание контейнера |
| update | Изменение контейнера |
| remove | Удаление контейнера |
Получение списка контейнеров — "action": "list"
| Поле | Описание |
|---|---|
| id | Если не пустое: идентификатор контейнера, для которого будут загружены "связанные" контейнеры:
|
| type | Допустимые значения: project, branch, project-group
Если не пустое: отфильтровывает список контейнеров по типу Если пустое:
|
| name | Если не пустое:
|
| parent | Не используется |
| review_with_comment | Не используется |
Примеры запросов с "action": "list"
$ curl --data '{"action": "list"}' -X POST http://localhost:8080/api/public/admin/server/containers
{"Containers":[{"id":"0f7da122-9c86-4384-b7bc-356bfb3b7f28","name":"projectGroupA","type":"project-group"},{"id":"20706313-6986-4c9d-9a4e-5e4908a11499","name":"projectGroupB","type":"project-group"},{"id":"a7e22042-96e5-4659-b21a-0615d434bed7","name":"bash","type":"project"},{"id":"a8e0352c-0408-417c-8fd0-4fbe03f38980","name":"iptables","type":"project"},{"id":"d53b0b92-d0fb-429a-8f86-c8fe6ee50c0c","name":"proftpd","type":"project"}]}
$ curl --data '{"action": "list", "type": "project-group"}' -X POST http://localhost:8080/api/public/admin/server/containers
{"Containers":[{"id":"0f7da122-9c86-4384-b7bc-356bfb3b7f28","name":"projectGroupA","type":"project-group"},{"id":"20706313-6986-4c9d-9a4e-5e4908a11499","name":"projectGroupB","type":"project-group"}]}
$ curl --data '{"action": "list", "name": "bas"}' -X POST http://localhost:8080/api/public/admin/server/containers
{"Containers":[{"id":"a7e22042-96e5-4659-b21a-0615d434bed7","name":"bash","type":"project"}]}
$ curl --data '{"action": "list", "id":"a7e22042-96e5-4659-b21a-0615d434bed7"}' -X POST http://localhost:8080/api/public/admin/server/containers
{"Containers":[{"id":"0f7da122-9c86-4384-b7bc-356bfb3b7f28","name":"projectGroupA","type":"project-group"},{"id":"ef9210db-180b-4351-8a2f-7e8ceaa42ec6","name":"master","type":"branch","parent":"a7e22042-96e5-4659-b21a-0615d434bed7"}]}
Создание контейнера — "action": "add"
| Поле | Описание |
|---|---|
| id | Не используется |
| type | Тип нового контейнера. Обязательное. Допустимые значения: project, branch, project-group |
| name | Название нового контейнера. Обязательное |
| parent | Название или идентификатор проекта, в котором будет создана новая ветка
Если тип нового контейнера не branch, не используется |
| review_with_comment | Значение настройки проекта "Обязательный комментарий при разметке"
Если тип нового контейнера не project, не используется |
Изменение контейнера — "action": "update"
| Поле | Описание |
|---|---|
| id | Идентификатор изменяемого контейнера. Обязательное |
| type | Тип изменяемого контейнера. Используется для поиска контейнера вместе с id. Изменить тип контейнера нельзя. Необязательное. Допустимые значения: project, branch, project-group |
| name | Новое название контейнера. Обязательное |
| parent | Не используется. Изменить проект в котором создана ветка нельзя |
| review_with_comment | Новое значение настройки проекта "Обязательный комментарий при разметке" |
Удаление контейнера — "action": "remove"
| Поле | Описание |
|---|---|
| id | Идентификатор удаляемого контейнера. Обязательное |
| type | Тип удаляемого контейнера. Используется для поиска контейнера вместе с id. Необязательное. Допустимые значения: project, branch, project-group |
| name | Не используется |
| parent | Не используется |
| review_with_comment | Не используется |
POST /api/public/admin/server/project-groups — управление составом групп проектов
Формат запроса:
{
"action": "string",
"project_group_name_or_id": "string",
"project_name_or_id": "string"
}
Формат ответа:
{
"action": "string",
"project_group_id": "string",
"project_group_name": "string",
"project_id": "string",
"project_name": "string"
}
Назначение полей запроса и ответа зависит от типа операции и определяется значением поля action.
| Значение | Тип операции |
|---|---|
| get | Получение экземпляра группы проектов |
| add-project-to-group | Добавление проекта в группу проектов |
| remove-project-from-group | Исключение проекта из группы проектов |
Получение экземпляра группы проектов — "action": "get"
| Поле | Описание |
|---|---|
| project_group_name_or_id | Название или идентификатор запрашиваемой группы проектов
Поддержка названия добавлена после версии 9.0.2
|
| project_name_or_id | Не используется |
Добавление проекта в группу проектов — "action": "add-project-to-group"
| Поле | Описание |
|---|---|
| project_group_name_or_id | Название или идентификатор изменяемой группы проектов |
| project_name_or_id | Название или идентификатор добавляемого проекта |
Исключение проекта из группы проектов — "action": "remove-project-from-group"
| Поле | Описание |
|---|---|
| project_group_name_or_id | Название или идентификатор изменяемой группы проектов |
| project_name_or_id | Название или идентификатор исключаемого проекта |
Примеры запросов управления составом групп
$ curl --data '{"action": "get", "project_group_name_or_id": "0f7da122-9c86-4384-b7bc-356bfb3b7f28"}' -X POST http://localhost:8080/api/public/admin/server/project-groups
{"action":"get","project_group_id":"0f7da122-9c86-4384-b7bc-356bfb3b7f28","project_group_name":"projectGroupA"}
$ curl --data '{"action": "get", "project_group_name_or_id": "projectGroupA"}' -X POST http://localhost:8080/api/public/admin/server/project-groups
{"action":"get","project_group_id":"0f7da122-9c86-4384-b7bc-356bfb3b7f28","project_group_name":"projectGroupA"}
$ curl --data '{"action": "add-project-to-group", "project_name_or_id": "iptables", "project_group_name_or_id": "projectGroupA"}' -X POST http://localhost:8080/api/public/admin/server/project-groups
{"action":"add-project-to-group","project_group_id":"0f7da122-9c86-4384-b7bc-356bfb3b7f28","project_group_name":"projectGroupA","project_id":"a8e0352c-0408-417c-8fd0-4fbe03f38980","project_name":"iptables"}
$ curl --data '{"action": "remove-project-from-group", "project_name_or_id": "iptables", "project_group_name_or_id": "projectGroupA"}' -X POST http://localhost:8080/api/public/admin/server/project-groups
{"action":"remove-project-from-group","project_group_id":"0f7da122-9c86-4384-b7bc-356bfb3b7f28","project_group_name":"projectGroupA","project_id":"a8e0352c-0408-417c-8fd0-4fbe03f38980","project_name":"iptables"}