Created
May 18, 2016 13:39
-
-
Save arikon/2f078fcf15aae07984c7e1d35def90bf to your computer and use it in GitHub Desktop.
swagger.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"swagger": "2.0", | |
"basePath": "/api/v1.0", | |
"info": { | |
"title": "Sandbox JSON API", | |
"description": "Описание JSON API для взаимодействия с Sandbox (на данный момент находится в разработке)", | |
"contact": { | |
"email": "[email protected]" | |
}, | |
"version": "1.0" | |
}, | |
"consumes": [ | |
"application/json; charset=utf-8" | |
], | |
"produces": [ | |
"application/json; charset=utf-8" | |
], | |
"tags": [ | |
{ | |
"name": "authenticate", | |
"description": "Аутентификация пользователя" | |
}, | |
{ | |
"name": "batch", | |
"description": "Массовые операции" | |
}, | |
{ | |
"name": "client", | |
"description": "Операции над объектами клиентов" | |
}, | |
{ | |
"name": "group", | |
"description": "Операции над объектами пользовательских групп" | |
}, | |
{ | |
"name": "notification", | |
"description": "Операции над объектами оповещений" | |
}, | |
{ | |
"name": "release", | |
"description": "Операции над объектами релизов" | |
}, | |
{ | |
"name": "resource", | |
"description": "Операции над объектами ресурсов" | |
}, | |
{ | |
"name": "scheduler", | |
"description": "Операции над объектами планировщиков" | |
}, | |
{ | |
"name": "suggest", | |
"description": "Поисковые подсказки" | |
}, | |
{ | |
"name": "service", | |
"description": "Различная информация о состоянии сервиса, статистика и административные операции" | |
}, | |
{ | |
"name": "user", | |
"description": "Информация о текущем пользователе" | |
}, | |
{ | |
"name": "task", | |
"description": "Операции над объектами задач" | |
}, | |
{ | |
"name": "vault", | |
"description": "Операции над объектами хранилища секретных данных" | |
} | |
], | |
"paths": { | |
"/authenticate/ssh-key/{login}/{fingerprint}": { | |
"post": { | |
"summary": "Получение псевдо-OAuth токена по SSH-ключу", | |
"operationId": "ssh_key_authenticate", | |
"parameters": [ | |
{ | |
"name": "login", | |
"description": "Идентификатор (логин) пользователя, производящего аутентификацию", | |
"required": true, | |
"in": "path", | |
"type": "string" | |
}, | |
{ | |
"name": "fingerprint", | |
"description": "MD5-отпечаток ключа, использованного для получения подписи", | |
"required": true, | |
"default": 0, | |
"type": "string", | |
"in": "path" | |
}, | |
{ | |
"name": "cnonce", | |
"description": "Шестнадцатеричное представление произвольных данных, сгенерированных клиентом для получения подписи", | |
"required": false, | |
"default": 0, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "signature", | |
"description": "Подпись, сгенерированная закрытым ключем с указанным отпечатком, от SHA1 контрольной суммы от имени пользователя, отпечатка ключа и произвольного числа, сгенерированного клиентом", | |
"schema": { | |
"type": "string" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "Псевдо-OAuth токен, действующий в течении 3х часов с момента последнего использования", | |
"schema": { | |
"type": "string" | |
} | |
} | |
}, | |
"produces": [ | |
"text/plain; charset=utf8" | |
], | |
"consumes": [ | |
"application/octet-stream" | |
], | |
"tags": [ | |
"authenticate" | |
] | |
} | |
}, | |
"/authenticate/oauth/client": { | |
"get": { | |
"summary": "Получение информации, необходимой для генерации OAuth-токенов", | |
"operationId": "oauth_client_info", | |
"responses": { | |
"200": { | |
"description": "Информация, необходимая для генерации OAuth-токенов", | |
"schema": { | |
"$ref": "#/definitions/OAuthClientInfo" | |
} | |
} | |
}, | |
"tags": [ | |
"authenticate" | |
] | |
} | |
}, | |
"/authenticate/oauth/token": { | |
"post": { | |
"summary": "Генерация OAuth-токенов", | |
"operationId": "oauth_token_create", | |
"parameters": [ | |
{ | |
"name": "code", | |
"description": "Код, сгенерированный OAuth-сервером", | |
"schema": { | |
"$ref": "#/definitions/OAuthTokenCreate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "OAuth-токен, выданый OAuth-сервером на основе переданного кода", | |
"schema": { | |
"type": "string" | |
} | |
}, | |
"400": { | |
"description": "Ошибка получения OAuth-токена с указанием причины." | |
} | |
}, | |
"produces": [ | |
"text/plain; charset=utf8" | |
], | |
"tags": [ | |
"authenticate" | |
] | |
} | |
}, | |
"/batch/tasks/{operation}": { | |
"put": { | |
"summary": "Массовые операции над объектами задач", | |
"operationId": "batch_results", | |
"parameters": [ | |
{ | |
"name": "objects_list", | |
"description": "Список идентификаторов объектов для массовой операции", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Идентификатор объекта" | |
} | |
}, | |
"in": "body" | |
}, | |
{ | |
"name": "operation", | |
"description": "Тип операции", | |
"required": true, | |
"type": "string", | |
"enum": [ | |
"delete", | |
"stop", | |
"start", | |
"increase_priority", | |
"suspend", | |
"resume" | |
], | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/BatchResults" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"batch" | |
] | |
} | |
}, | |
"/batch/resources/{operation}": { | |
"put": { | |
"summary": "Массовые операции над объектами ресурсов", | |
"operationId": "batch_results", | |
"parameters": [ | |
{ | |
"name": "objects_list", | |
"description": "Список идентификаторов объектов для массовой операции", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Идентификатор объекта" | |
} | |
}, | |
"in": "body" | |
}, | |
{ | |
"name": "operation", | |
"description": "Тип операции", | |
"required": true, | |
"type": "string", | |
"enum": [ | |
"delete", | |
"restore", | |
"backup", | |
"touch", | |
"reshare", | |
"do_not_remove" | |
], | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/BatchResults" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"batch" | |
] | |
} | |
}, | |
"/batch/clients/{operation}": { | |
"put": { | |
"summary": "Массовые операции над объектами клиентов", | |
"operationId": "batch_results", | |
"parameters": [ | |
{ | |
"name": "objects_list", | |
"description": "Список идентификаторов объектов для массовой операции", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Идентификатор объекта" | |
} | |
}, | |
"in": "body" | |
}, | |
{ | |
"name": "operation", | |
"description": "Тип операции", | |
"required": true, | |
"type": "string", | |
"enum": [ | |
"reload", | |
"reboot", | |
"shutdown" | |
], | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/BatchResults" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"batch" | |
] | |
} | |
}, | |
"/batch/schedulers/{operation}": { | |
"put": { | |
"summary": "Массовые операции над объектами планировщиков", | |
"operationId": "batch_results", | |
"parameters": [ | |
{ | |
"name": "objects_list", | |
"description": "Список идентификаторов объектов для массовой операции", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Идентификатор объекта" | |
} | |
}, | |
"in": "body" | |
}, | |
{ | |
"name": "operation", | |
"description": "Тип операции", | |
"required": true, | |
"type": "string", | |
"enum": [ | |
"delete", | |
"stop", | |
"start" | |
], | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/BatchResults" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"batch" | |
] | |
} | |
}, | |
"/client": { | |
"get": { | |
"summary": "Получение списка клиентов", | |
"description": "Параметры фильтра для списка необходимо указывать в query-параметрах", | |
"operationId": "clients_list", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Фильтр по идентификатор(у,ам) клиентов", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "platform", | |
"description": "Фильтр по платформе клиента", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "busy", | |
"description": "Флаг для фильтрации занятых клиентов", | |
"required": false, | |
"type": "boolean", | |
"in": "query" | |
}, | |
{ | |
"name": "alive", | |
"description": "Флаг для фильтрации живых клиентов", | |
"required": false, | |
"type": "boolean", | |
"in": "query" | |
}, | |
{ | |
"name": "tags", | |
"description": "Запрос по тэгам клиента", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/ClientsList" | |
} | |
} | |
}, | |
"tags": [ | |
"client" | |
] | |
}, | |
"post": { | |
"summary": "Регистрация (нового) запуска клиента", | |
"description": "Метод предназначен для служебных целей", | |
"operationId": "client_started", | |
"parameters": [ | |
{ | |
"name": "body", | |
"description": "Данные для регистрации запуска клиента", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/ClientStarted" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/ClientEntity" | |
}, | |
"headers": { | |
"location": { | |
"description": "URL для данных о клиенте", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"client" | |
] | |
} | |
}, | |
"/client/{id}": { | |
"get": { | |
"summary": "Детальная информация о клиенте", | |
"operationId": "client_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор клиента", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/ClientEntity" | |
} | |
} | |
}, | |
"tags": [ | |
"client" | |
] | |
}, | |
"put": { | |
"summary": "Обновление информации о клиенте", | |
"description": "Метод предназначен для служебных целей", | |
"operationId": "client_ping", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор клиента", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для обновления информации о клиенте", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/ClientPing" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Данные успешно обработаны, передача указаний к действию", | |
"schema": { | |
"$ref": "#/definitions/ClientAction" | |
} | |
}, | |
"204": { | |
"description": "Данные успешно обработаны, нет указаний к действиям (режим простоя)" | |
} | |
}, | |
"tags": [ | |
"client" | |
] | |
} | |
}, | |
"/client/{id}/comment": { | |
"put": { | |
"summary": "Обновление комментария о клиенте", | |
"description": "При успешном выполнении возвращается ответ без данных со статусом 204", | |
"operationId": "client_comment_update", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор клиента", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
}, | |
{ | |
"name": "comment", | |
"description": "Содержимое комментария", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"in": "body" | |
} | |
], | |
"consumes": [ | |
"text/plain; charset=utf8" | |
], | |
"responses": { | |
"201": { | |
"description": "Операция выполнена успешно" | |
}, | |
"403": { | |
"description": "Недостаточно прав для изменения данных" | |
}, | |
"404": { | |
"description": "Объект не найден" | |
} | |
}, | |
"tags": [ | |
"client" | |
] | |
} | |
}, | |
"/client/{id}/service/resources": { | |
"get": { | |
"summary": "Служебный интерфейс для получения списка идентификаторов всех зарегистрированных ресурсов на данном сервере", | |
"operationId": "client_service_resources", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор клиента", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "integer", | |
"format": "int32" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"client" | |
] | |
} | |
}, | |
"/group": { | |
"get": { | |
"summary": "Получение списка групп пользователей", | |
"operationId": "group_list", | |
"parameters": [ | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "order", | |
"description": "Имя поля для сортировки (в соответствии с ключами возвращаемых записей в списке). Префикс `+` означает сортировку по возрастанию, `-`, соответственно, по убыванию.", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/GroupList" | |
}, | |
"headers": { | |
"X-Matched-Records": { | |
"description": "Количество объектов, совпадающих с заданным фильтром", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"group" | |
] | |
}, | |
"post": { | |
"summary": "Регистрация новой группы", | |
"operationId": "group_create", | |
"parameters": [ | |
{ | |
"name": "data", | |
"description": "Информация для регистрации новой группы", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/GroupCreate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"headers": { | |
"Location": { | |
"description": "URL на вновь созданный элемент", | |
"type": "string" | |
} | |
}, | |
"schema": { | |
"$ref": "#/definitions/Group" | |
} | |
} | |
}, | |
"tags": [ | |
"group" | |
] | |
} | |
}, | |
"/group/{name}": { | |
"get": { | |
"summary": "Детальная информация о группе пользователей", | |
"operationId": "group_get", | |
"parameters": [ | |
{ | |
"name": "name", | |
"description": "Имя группы", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Group" | |
} | |
} | |
}, | |
"tags": [ | |
"group" | |
] | |
}, | |
"put": { | |
"summary": "Изменение информации о группе пользователей", | |
"operationId": "group_update", | |
"parameters": [ | |
{ | |
"name": "name", | |
"description": "Имя группы", | |
"required": true, | |
"type": "integer", | |
"format": "int32", | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для изменения", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/GroupUpdate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Если в запросе будет фигурировать заголовок X-Request-Updated-Data, в ответе будет возвращен обновлённый объект", | |
"schema": { | |
"$ref": "#/definitions/Group" | |
} | |
}, | |
"204": { | |
"description": "Информация о группе изменена" | |
} | |
}, | |
"tags": [ | |
"group" | |
] | |
}, | |
"delete": { | |
"summary": "Удаление группы пользователей", | |
"operationId": "group_delete", | |
"parameters": [ | |
{ | |
"name": "name", | |
"description": "Имя группы", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"204": { | |
"description": "Информация о группе удалена" | |
} | |
}, | |
"tags": [ | |
"group" | |
] | |
} | |
}, | |
"/notification": { | |
"get": { | |
"summary": "Получение списка оповещений", | |
"operationId": "notification_list", | |
"parameters": [ | |
{ | |
"name": "author", | |
"description": "Фильтр по (части) имени автора оповещения", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "recipient", | |
"description": "Фильтр по адресату уведомления", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "transport", | |
"description": "Фильтр уведомлений, по используемому транспорту", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"enum": [ | |
"email", | |
"jabber" | |
] | |
}, | |
{ | |
"name": "sent", | |
"description": "Фильтр по признаку отправленности уведомления", | |
"required": false, | |
"type": "boolean", | |
"in": "query" | |
}, | |
{ | |
"name": "task_id", | |
"description": "Фильтр по идентификатору задачи из которой был отправленно уведомление", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "created", | |
"description": "Фильтр с парой значений UTC дат в формате ISO 8601, разделенными двумя точками (..), для указания диапазона времени создания уведомления", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "order", | |
"description": "Имя поля для сортировки (в соответствии с ключами возвращаемых записей в списке). Префикс `+` означает сортировку по возрастанию, `-`, соответственно, по убыванию.", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/NotificationList" | |
}, | |
"headers": { | |
"X-Matched-Records": { | |
"description": "Количество объектов, совпадающих с заданным фильтром", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"notification" | |
] | |
}, | |
"post": { | |
"summary": "Создание оповещения", | |
"operationId": "notification_create", | |
"parameters": [ | |
{ | |
"name": "data", | |
"description": "Информация для регистрации элемента в хранилище", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/NotificationCreate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Notification" | |
}, | |
"headers": { | |
"location": { | |
"description": "URL на созданное уведомление", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"notification" | |
] | |
} | |
}, | |
"/notification/{id}": { | |
"get": { | |
"summary": "Детальная информация об уведомлении", | |
"operationId": "notification_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор уведомления", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Notification" | |
} | |
} | |
}, | |
"tags": [ | |
"notification" | |
] | |
} | |
}, | |
"/release": { | |
"get": { | |
"summary": "Получение списка релизов", | |
"operationId": "release_list", | |
"parameters": [ | |
{ | |
"name": "resource_type", | |
"description": "Фильтр типа релизнутого ресурса", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "task_id", | |
"description": "Фильтр по идентификатор(у,ам) задач", | |
"required": false, | |
"type": "integer", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "type", | |
"description": "Фильтр по типу(у,ам) релиза, разделенных запятыми", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "owner", | |
"description": "Фильтр по владельцу задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "created", | |
"description": "Фильтр с парой значений UTC дат в формате ISO 8601, разделенными двумя точками (..), для указания диапазона времени создания релиза", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "include_broken", | |
"description": "Включать ли в выборку релизы с ресурсами в состоянии BROKEN", | |
"required": false, | |
"type": "boolean", | |
"in": "query" | |
}, | |
{ | |
"name": "arch", | |
"description": "Фильтр по архитектуре ресурса", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "order", | |
"description": "Имя поля для сортировки (в соответствии с ключами возвращаемых записей в списке). Префикс `+` означает сортировку по возрастанию, `-`, соответственно, по убыванию.", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/ReleaseList" | |
}, | |
"headers": { | |
"X-Matched-Records": { | |
"description": "Количество объектов, совпадающих с заданным фильтром", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"release" | |
] | |
}, | |
"post": { | |
"summary": "Создание релиза", | |
"operationId": "release_create", | |
"parameters": [ | |
{ | |
"name": "body", | |
"description": "Данные о релизе", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/ReleaseCreate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"202": { | |
"description": "Начат процесс релиза задачи" | |
} | |
}, | |
"tags": [ | |
"release" | |
] | |
} | |
}, | |
"/release/{id}": { | |
"get": { | |
"summary": "Информация о релизе", | |
"description": "Запрос перенаправляется на задачу релиза", | |
"operationId": "release_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Release" | |
} | |
}, | |
"400": { | |
"description": "Incorrect id" | |
}, | |
"404": { | |
"description": "Release not found" | |
} | |
}, | |
"tags": [ | |
"release" | |
] | |
} | |
}, | |
"/resource": { | |
"get": { | |
"summary": "Получение списка ресурсов", | |
"description": "Параметры фильтра для списка необходимо указывать в query-параметрах", | |
"operationId": "resource_list", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Фильтр по идентификатор(у,ам) ресурсов", | |
"required": false, | |
"type": "integer", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "type", | |
"description": "Фильтр типа ресурса", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "arch", | |
"description": "Фильтр по идентификатору архитектуры ресурса", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "state", | |
"description": "Фильтр состоянию ресурса", | |
"required": false, | |
"type": "string", | |
"enum": [ | |
"NOT_READY", | |
"READY", | |
"BROKEN", | |
"DELETED" | |
], | |
"in": "query" | |
}, | |
{ | |
"name": "owner", | |
"description": "Фильтр по владельцу ресурса", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "client", | |
"description": "Фильтр по клиентам содержащим ресурс", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "task_id", | |
"description": "Фильтр по идентификатор(у,ам) задач(и) создавшей ресурс", | |
"required": false, | |
"type": "integer", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "created", | |
"description": "Фильтр с парой значений UTC дат в формате ISO 8601, разделенными двумя точками (..), для указания диапазона времени создания ресурса", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "attrs", | |
"description": "Фильтр по имени атрибутам ресурса. Словарь JSON, сериализованый в строку", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "any_attr", | |
"description": "Объединять атрибуты из attrs через логическое ИЛИ. По-умолчанию через И", | |
"required": false, | |
"type": "boolean", | |
"default": false, | |
"in": "query" | |
}, | |
{ | |
"name": "attr_name", | |
"description": "Фильтр по имени атрибута ресурса (устаревший, используй attrs)", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "attr_value", | |
"description": "Фильтр по значению атрибута ресурса (устаревший, используй attrs)", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "dependant", | |
"description": "Фильтр по идентификатору задачи которая зависит от ресурсов", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "order", | |
"description": "Имя поля для сортировки (в соответствии с ключами возвращаемых записей в списке). Префикс `+` означает сортировку по возрастанию, `-`, соответственно, по убыванию.", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"headers": { | |
"X-Matched-Records": { | |
"description": "Количество объектов, совпадающих с заданным фильтром", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
} | |
}, | |
"schema": { | |
"$ref": "#/definitions/ResourceList" | |
} | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
} | |
}, | |
"/resource/{id}": { | |
"get": { | |
"summary": "Детальная информация о ресурсе", | |
"operationId": "resource_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Resource" | |
} | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
}, | |
"put": { | |
"summary": "Обновить информацию о времени последнего доступа к ресурсу (touch)", | |
"operationId": "resource_update", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"204": { | |
"description": "Операция завершена успешно" | |
}, | |
"403": { | |
"description": "Недостаточно прав для операции" | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
} | |
}, | |
"/resource/{id}/attribute": { | |
"get": { | |
"summary": "Данные для просмотра атрибутов ресурса", | |
"operationId": "resource_attribute", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ResourceAttribute" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
}, | |
"post": { | |
"summary": "Создать атрибут ресурса", | |
"operationId": "resource_attribute_post", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "attr", | |
"description": "Атрибут ресурса", | |
"required": true, | |
"in": "body", | |
"schema": { | |
"$ref": "#/definitions/ResourceAttribute" | |
} | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/ResourceAttribute" | |
} | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
} | |
}, | |
"/resource/{id}/attribute/{name}": { | |
"put": { | |
"summary": "Изменить значение атрибута ресурса", | |
"operationId": "resource_attribute_put", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "name", | |
"description": "Имя атрибута", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Значение атрибута", | |
"required": true, | |
"in": "body", | |
"schema": { | |
"$ref": "#/definitions/ResourceAttribute" | |
} | |
} | |
], | |
"responses": { | |
"204": { | |
"description": "Операция завершена успешно" | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
}, | |
"delete": { | |
"summary": "Удалить атрибут ресурса", | |
"operationId": "resource_attribute_delete", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "name", | |
"description": "Имя атрибута", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"204": { | |
"description": "Операция завершена успешно" | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
} | |
}, | |
"/resource/{id}/data/rsync": { | |
"get": { | |
"summary": "Список хостов на которых доступен ресурс с rsync-адресами", | |
"operationId": "resource_data_rsync", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ResourceUrlItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
} | |
}, | |
"/resource/{id}/data/http": { | |
"get": { | |
"summary": "Список хостов на которых доступен ресурс с http-адресами", | |
"operationId": "resource_data_rsync", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ResourceUrlItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
} | |
}, | |
"/resource/{id}/source": { | |
"post": { | |
"summary": "Добавить хост текущей сессии выполнения задачи в качестве источника данных ресурса", | |
"operationId": "resource_source_add", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"204": { | |
"description": "Операция завершена успешно" | |
}, | |
"403": { | |
"description": "Недостаточно прав для операции" | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
} | |
}, | |
"/resource/{id}/source/{host}": { | |
"delete": { | |
"summary": "Удалить ресурс с указанного хоста", | |
"operationId": "resource_data_delete", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор ресурса", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "host", | |
"description": "Название хоста, с которого необходимо удалить ресурс", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"204": { | |
"description": "Операция завершена успешно" | |
} | |
}, | |
"tags": [ | |
"resource" | |
] | |
} | |
}, | |
"/scheduler": { | |
"get": { | |
"summary": "Получение списка планировщиков", | |
"description": "Параметры фильтра для списка необходимо указывать в query-параметрах", | |
"operationId": "schedulers_list", | |
"parameters": [ | |
{ | |
"name": "task_type", | |
"description": "Фильтр по типу задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "id", | |
"description": "Фильтр по идентификатор(у,ам) планировщик(а,ов)", | |
"required": false, | |
"type": "integer", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "status", | |
"description": "Фильтр по статус(у,ам) планировщиков, разделенных запятыми", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "owner", | |
"description": "Фильтр по владельцу планировщика", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "author", | |
"description": "Фильтр по автору планировщика", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "order", | |
"description": "Имя поля для сортировки (в соответствии с ключами возвращаемых записей в списке). Префикс `+` означает сортировку по возрастанию, `-`, соответственно, по убыванию.", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/SchedulersList" | |
}, | |
"headers": { | |
"X-Matched-Records": { | |
"description": "Количество объектов, совпадающих с заданным фильтром", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"scheduler" | |
] | |
}, | |
"post": { | |
"summary": "Создание планировщика", | |
"operationId": "scheduler_create", | |
"parameters": [ | |
{ | |
"name": "data", | |
"description": "Данные для создания планировщика", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/SchedulerNew" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Scheduler" | |
}, | |
"headers": { | |
"Location": { | |
"description": "URL на созданный планировщик", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"scheduler" | |
] | |
} | |
}, | |
"/scheduler/{id}": { | |
"get": { | |
"summary": "Детальная информация о планировщике", | |
"operationId": "scheduler_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор планировщика", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Scheduler" | |
} | |
} | |
}, | |
"tags": [ | |
"scheduler" | |
] | |
}, | |
"put": { | |
"summary": "Обновление информации о планировщике", | |
"description": "При успешном выполнении возвращается обновленный объект планировщика, если в запросе присутствовал заголовок X-Request-Updated-Data", | |
"operationId": "scheduler_update", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор планировщика", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Описание параметров планировщика подлежащих обновлению", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/SchedulerUpdate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Если в запросе будет фигурировать заголовок X-Request-Updated-Data, в ответе будет возвращен обновлённый объект", | |
"schema": { | |
"$ref": "#/definitions/Scheduler" | |
} | |
}, | |
"204": { | |
"description": "Планировщик обновлён успешно." | |
}, | |
"400": { | |
"description": "Bad request." | |
}, | |
"404": { | |
"description": "Scheduler {id} not found." | |
} | |
}, | |
"tags": [ | |
"scheduler" | |
] | |
} | |
}, | |
"/scheduler/{id}/custom/fields": { | |
"get": { | |
"summary": "Данные для просмотра информации о полях задач создаваемых планировщиком", | |
"description": "Необходимо получать для scheduler view/edit формы", | |
"operationId": "scheduler_task_custom_view", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор планировщика", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskCustomFieldMeta" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"scheduler" | |
] | |
}, | |
"post": { | |
"summary": "Валидация данных полей задачи формы планировщика", | |
"operationId": "scheduler_task_fields_validate", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор планировщика", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для валидации формы задачи", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateItem" | |
} | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateResultItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"scheduler" | |
] | |
}, | |
"put": { | |
"summary": "Обновление данных полей задачи формы планировщика", | |
"operationId": "scheduler_task_fields_update", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор планировщика", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для обновления полей создаваемых задач", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateItem" | |
} | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateResultItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"scheduler" | |
] | |
} | |
}, | |
"/suggest/quicksearch/{query}": { | |
"get": { | |
"summary": "Подсказки для быстрого поиска", | |
"operationId": "quicksearch_suggest", | |
"parameters": [ | |
{ | |
"name": "query", | |
"description": "Поисковый запрос", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
}, | |
{ | |
"name": "limit", | |
"description": "Ограничение на количество возвращаемых записей в каждом из блоков", | |
"required": true, | |
"type": "integer", | |
"format": "int32", | |
"in": "query", | |
"default": 3 | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/QuicksearchSuggest" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"suggest" | |
] | |
} | |
}, | |
"/suggest/resource": { | |
"get": { | |
"summary": "Подсказки для выбора типа ресурса - возвращает список всех известных типов ресурсов в качестве ключей и их описание в качестве значений", | |
"operationId": "resource_suggest", | |
"parameters": [ | |
{ | |
"name": "type", | |
"description": "Запрос по определенному типу ресурса", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/SuggestType" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"suggest" | |
] | |
} | |
}, | |
"/suggest/task": { | |
"get": { | |
"summary": "Подсказки для выбора типа задачи - возвращает список всех известных типов задач в качестве ключей и их описание в качестве значений", | |
"operationId": "task_suggest", | |
"parameters": [ | |
{ | |
"name": "type", | |
"description": "Запрос по определенному типу задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/SuggestType" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"suggest" | |
] | |
} | |
}, | |
"/suggest/group": { | |
"get": { | |
"summary": "Подсказки для выбора группы - возвращает список всех известных имен групп", | |
"operationId": "group_suggest", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/SuggestGroup" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"suggest" | |
] | |
} | |
}, | |
"/suggest/client": { | |
"get": { | |
"summary": "Подсказки для выбора клиента - возвращает список всех известных имен клиентов, моделей CPU и платформ для заданного запроса", | |
"operationId": "client_suggest", | |
"parameters": [ | |
{ | |
"name": "task_type", | |
"description": "Тип задачи для фильтрации списка подходящих хостов для данного типа задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "platform", | |
"description": "Фильтр по платформе", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "cpu", | |
"description": "Фильтр по модели CPU", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "host", | |
"description": "Фильтр по имени клиента", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/SuggestClient" | |
} | |
} | |
}, | |
"tags": [ | |
"suggest" | |
] | |
} | |
}, | |
"/service/status/threads": { | |
"get": { | |
"summary": "Информация о состоянии сервисных потоков", | |
"operationId": "service_threads", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ServiceThreadStatus" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/status/operation_mode": { | |
"get": { | |
"summary": "Текущий режим функционирования сервиса", | |
"operationId": "operation_mode", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "string", | |
"enum": [ | |
"normal", | |
"read_only", | |
"pre_read_only" | |
] | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
}, | |
"put": { | |
"summary": "Изменение текущего режима функционирования сервиса", | |
"operationId": "operation_mode_switch", | |
"parameters": [ | |
{ | |
"name": "mode", | |
"description": "Требуемый режим функционирования сервиса", | |
"required": true, | |
"in": "body", | |
"schema": { | |
"type": "string", | |
"enum": [ | |
"normal", | |
"read_only", | |
"pre_read_only" | |
] | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "" | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/status/database/shards": { | |
"get": { | |
"summary": "Информация о состоянии mongod процессов", | |
"operationId": "database", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/DatabaseShard" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/status/database/size": { | |
"get": { | |
"summary": "Информация о размере базы данных", | |
"operationId": "database", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/DatabaseSize" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/status/database/current_op": { | |
"get": { | |
"summary": "Информация о суммарной длительности текущих операций базы данных", | |
"operationId": "database", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/DatabaseCurrentOp" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/status/server": { | |
"get": { | |
"summary": "Информация о состоянии Web-сервера, обработавшего запрос", | |
"operationId": "web_server", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/WebServerStatus" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/statistics/task/status/absolute": { | |
"get": { | |
"summary": "Счетчики по состояниям задач в абсолютных значениях", | |
"operationId": "task_status_absolute_statistics", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/TaskStatusStatistics" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/statistics/task/status/delta": { | |
"get": { | |
"summary": "Изменения в счетчиках задач по состояниям плавающим окном за последний час", | |
"operationId": "task_status_delta_statistics", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/TaskStatusStatistics" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/statistics/task/types/not_used": { | |
"get": { | |
"summary": "Список типов задач, которые не запускались более N дней", | |
"operationId": "task_types_not_used_statistics", | |
"parameters": [ | |
{ | |
"name": "days_ago", | |
"description": "число дней", | |
"type": "integer", | |
"in": "query" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskTypesNotusedStatistics" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/statistics/storage/external_backup": { | |
"get": { | |
"summary": "Статистика о состоянии бэкапа ресурсов в флагом ttl=inf во внешнее хранилище (MDS)", | |
"operationId": "storage_external_backup_statistics", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/ExternalBackupStatistics" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/statistics/storage/size": { | |
"get": { | |
"summary": "Статистика о размере хранилища", | |
"operationId": "storage_external_backup_statistics", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/StorageSizeStatistics" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/ui/notification": { | |
"get": { | |
"summary": "Получение списка зарегистрированных UI-уведомлений", | |
"operationId": "ui_notification_list", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/UINotification" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
}, | |
"post": { | |
"summary": "Регистрация нового UI-уведомления", | |
"operationId": "ui_notification_create", | |
"parameters": [ | |
{ | |
"name": "notification", | |
"description": "UI-уведомление", | |
"required": true, | |
"in": "body", | |
"schema": { | |
"$ref": "#/definitions/UINotificationCreate" | |
} | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"headers": { | |
"Location": { | |
"description": "URL на вновь созданное уведомление", | |
"type": "string" | |
} | |
}, | |
"schema": { | |
"$ref": "#/definitions/UINotification" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/ui/notification/{id}": { | |
"delete": { | |
"summary": "Удаление UI-уведомления", | |
"operationId": "ui_notification_delete", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "24x-символьный уникальный идентификатор сообщения", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"204": { | |
"description": "Операция завершена успешно" | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/q": { | |
"get": { | |
"summary": "Информация о состоянии планировщика (список задач в очереди)", | |
"operationId": "service_q", | |
"parameters": [ | |
{ | |
"name": "client", | |
"description": "Идентификатор клиента для фильтрации списка", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/QueuedTasksList" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/shortify/client": { | |
"post": { | |
"summary": "Сервис для получения сокращенного списка из списка идентификаторв клиентов", | |
"operationId": "shortify_clients_list", | |
"parameters": [ | |
{ | |
"name": "clients_list", | |
"description": "Список идентификаторов клиентов для сокращения", | |
"in": "body", | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"schema": { | |
"type": "string", | |
"description": "Строчка с сокращенным списком имен хостов клиентов" | |
} | |
} | |
}, | |
"produces": [ | |
"text/plain; charset=utf8" | |
], | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/binding": { | |
"get": { | |
"summary": "Получение списка типов задач и списка привязанных к ним идентификаторов клиентов", | |
"operationId": "task_type_bindings_list", | |
"responses": { | |
"200": { | |
"description": "Типы задач в качестве ключей и список привязанных к ним идентификаторов клиентов в качестве значений", | |
"schema": { | |
"type": "object" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/binding/{type}": { | |
"get": { | |
"summary": "Получение списка идентификаторов клиентов, привязанных к указанному типу задач", | |
"operationId": "task_type_bindings_get", | |
"parameters": [ | |
{ | |
"name": "type", | |
"description": "Тип задачи", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Список идентификаторов клиентов, привязаных к исполнению данного типа задач", | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
}, | |
"put": { | |
"summary": "Изменение списока идентификаторов клиентов, привязанных к указанному типу задач", | |
"operationId": "task_type_bindings_set", | |
"parameters": [ | |
{ | |
"name": "type", | |
"description": "Тип задачи", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
}, | |
{ | |
"name": "update", | |
"description": "Список идентификаторов клиентов, привязаных к исполнению данного типа задач", | |
"in": "body", | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Список идентификаторов клиентов, привязаных к исполнению данного типа задач, в случае, если был передан заголовок X-Request-Updated-Data", | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"204": { | |
"description": "Список идентификаторов успешно изменен" | |
}, | |
"404": { | |
"description": "Неизвестный тип задачи" | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/service/time/current": { | |
"get": { | |
"summary": "Получение текущего времени сервера", | |
"operationId": "current_time", | |
"responses": { | |
"200": { | |
"description": "Строка с текущим UTC временем сервера в формате ISO 8601", | |
"schema": { | |
"type": "string" | |
} | |
} | |
}, | |
"tags": [ | |
"service" | |
] | |
} | |
}, | |
"/user/current": { | |
"get": { | |
"summary": "Получение информации о текущем пользователе", | |
"operationId": "current_user", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/User" | |
} | |
} | |
}, | |
"tags": [ | |
"user" | |
] | |
} | |
}, | |
"/user/current/groups": { | |
"get": { | |
"summary": "Подсказки для выбора группы - возвращает список всех известных имен групп, куда входит текущий пользователь", | |
"operationId": "current_user_groups", | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/SuggestGroup" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"user" | |
] | |
} | |
}, | |
"/user/current/preferences/{subnode}": { | |
"get": { | |
"summary": "Получение произвольных данных предпочтений (до 64Кб), сохраняемых для текущего пользователя, например, настройки фильтров", | |
"operationId": "user_preferences", | |
"parameters": [ | |
{ | |
"name": "subnode", | |
"description": "Идентификатор узла данных", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "object" | |
} | |
} | |
}, | |
"tags": [ | |
"user" | |
] | |
}, | |
"put": { | |
"summary": "Создание или замена узла с произвольными данными предпочтений (до 64Кб), сохраняемых для текущего пользователя", | |
"operationId": "user_preferences", | |
"parameters": [ | |
{ | |
"name": "subnode", | |
"description": "Идентификатор узла данных", | |
"required": true, | |
"type": "string", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "object" | |
} | |
} | |
}, | |
"tags": [ | |
"user" | |
] | |
} | |
}, | |
"/task": { | |
"get": { | |
"summary": "Получение списка задач", | |
"description": "Параметры фильтра для списка необходимо указывать в query-параметрах", | |
"operationId": "tasks_list", | |
"parameters": [ | |
{ | |
"name": "type", | |
"description": "Фильтр типа задачи", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "id", | |
"description": "Фильтр по идентификатор(у,ам) задач", | |
"required": false, | |
"type": "integer", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "status", | |
"description": "Фильтр по статус(у,ам) задачи, разделенных запятыми", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "parent", | |
"description": "Фильтр по идентификатор(у,ам) родительской задачи", | |
"required": false, | |
"type": "integer", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "scheduler", | |
"description": "Фильтр по идентификатор(у,ам) планировщика", | |
"required": false, | |
"type": "integer", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "requires", | |
"description": "Фильтр по идентификатор(у,ам) ресурсов, от которых зависит задача", | |
"required": false, | |
"type": "integer", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "host", | |
"description": "Фильтр задач по идентификатору клиента", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "arch", | |
"description": "Фильтр по идентификатору архитектуры клиента", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "owner", | |
"description": "Фильтр по владельцу задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "author", | |
"description": "Фильтр по автору задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "desc_re", | |
"description": "Регулярное выражение для поиска по описанию задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "model", | |
"description": "Фильтр по модели CPU клиента", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "children", | |
"description": "Флаг, включать ли в список дочерние задачи", | |
"required": false, | |
"type": "boolean", | |
"in": "query" | |
}, | |
{ | |
"name": "hidden", | |
"description": "Флаг, включать ли в список скрытые задачи", | |
"required": false, | |
"type": "boolean", | |
"in": "query" | |
}, | |
{ | |
"name": "se_tag", | |
"description": "Фильтр по тегу ограничивающему количество одновременно исполняемых задач", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "important", | |
"description": "Флаг, исключать ли из списока задачи, не отмеченные как важные", | |
"required": false, | |
"type": "boolean", | |
"in": "query" | |
}, | |
{ | |
"name": "created", | |
"description": "Фильтр с парой значений UTC дат в формате ISO 8601, разделенными двумя точками (..), для указания диапазона времени создания задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "updated", | |
"description": "Фильтр с парой значений UTC дат в формате ISO 8601, разделенными двумя точками (..), для указания диапазона времени последнего изменения задачи", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "fields", | |
"description": "Модификатор отображения информации о списке задач, ограничивает список выдаваемых полей", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
}, | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "order", | |
"description": "Имя поля для сортировки (в соответствии с ключами возвращаемых записей в списке). Префикс `+` означает сортировку по возрастанию, `-`, соответственно, по убыванию.", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/TasksList" | |
}, | |
"headers": { | |
"X-Matched-Records": { | |
"description": "Количество объектов, совпадающих с заданным фильтром", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
}, | |
"post": { | |
"summary": "Создание задачи", | |
"operationId": "task_create", | |
"parameters": [ | |
{ | |
"name": "data", | |
"description": "Данные для создания задачи", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/TaskNew" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Task" | |
}, | |
"headers": { | |
"Location": { | |
"description": "URL на вновь созданную задачу", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}": { | |
"get": { | |
"summary": "Детальная информация о задаче", | |
"description": "Данные возвращаются только для объекта задачи, связанные объекты получаются дополнительными запросами", | |
"operationId": "tasks_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Task" | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
}, | |
"put": { | |
"summary": "Обновление информации о задаче", | |
"description": "При успешном выполнении возвращается ответ без данных со статусом 204", | |
"operationId": "tasks_update", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Описание параметров задачи подлежащих обновлению", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/TaskUpdate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Если в запросе будет фигурировать заголовок X-Request-Updated-Data, в ответе будет возвращен обновлённый объект", | |
"schema": { | |
"$ref": "#/definitions/Task" | |
} | |
}, | |
"204": { | |
"description": "Task {id} successfully updated." | |
}, | |
"400": { | |
"description": "Incorrect task id {id}." | |
}, | |
"404": { | |
"description": "Task {id} not found." | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/execution": { | |
"put": { | |
"summary": "Обновление инфoрмация для пользователя, переданной кодом задачи в процессе выполнения", | |
"operationId": "task_execution_description_update", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Объект описывающий изменения", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/TaskExecutionUpdate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "" | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/resources": { | |
"get": { | |
"summary": "Информация о ресурсах задачи", | |
"description": "Формирует HTTP redirect на список ресурсов с соответсвующими фильтрами", | |
"operationId": "task_resources", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"301": { | |
"description": "", | |
"headers": { | |
"location": { | |
"description": "URL для получения данных", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/audit": { | |
"get": { | |
"summary": "Данные для просмотра зарегистрированных изменений задачи", | |
"operationId": "task_audit", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskAuditItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
}, | |
"post": { | |
"summary": "Создание новой записи об изменение статуса задачи", | |
"operationId": "task_audit_create", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Объект с аудит-записью", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/TaskAuditNew" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "" | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/audit/hosts": { | |
"get": { | |
"summary": "Данные для просмотра хостов на которых исполнялась задача для вкладки Profile", | |
"operationId": "task_audit_hosts", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskAuditHostsItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/custom/fields": { | |
"get": { | |
"summary": "Данные для просмотра информации о полях задачи, определяемых пользователем", | |
"description": "Необходимо получать для task view/edit формы", | |
"operationId": "task_custom_view", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskCustomFieldMeta" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
}, | |
"post": { | |
"summary": "Валидация данных полей формы задачи", | |
"operationId": "task_fields_validate", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для валидации формы задачи", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateItem" | |
} | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateResultItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
}, | |
"put": { | |
"summary": "Обновление данных полей формы задачи", | |
"operationId": "task_fields_update", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для обновления формы задачи", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateItem" | |
} | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateResultItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/custom/footer": { | |
"get": { | |
"summary": "Данные для получения дополнительных данных страницы просмотра задачи, определяемых пользователем", | |
"description": "Необходимо получать для task view form", | |
"operationId": "task_custom_footer", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskCustomFooter" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/context": { | |
"get": { | |
"summary": "Контекст задачи", | |
"operationId": "task_context", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "object" | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/queue": { | |
"get": { | |
"summary": "Информация о положении задачи в очереди", | |
"operationId": "tasks_queue", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "all", | |
"description": "Флаг указывающий возвращять ли информацию о клиентах не подходящих для объекта данной задачи, по-умолчанию false", | |
"required": false, | |
"type": "boolean", | |
"in": "query" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskQueueItem" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/dependant": { | |
"get": { | |
"summary": "Список зависимостей задачи", | |
"description": "Запрос перенаправляется на ресурс с зависимостями", | |
"operationId": "tasks_dependencies", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"301": { | |
"description": "", | |
"headers": { | |
"location": { | |
"description": "URL представляющий ресурс с зависимостями", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/children": { | |
"get": { | |
"summary": "Список дочерних задач", | |
"description": "Запрос перенаправляется на список задач с фильтром по родительской задаче", | |
"operationId": "tasks_children", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"301": { | |
"description": "", | |
"headers": { | |
"location": { | |
"description": "URL представляющий ресурс со списком задач", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/trigger/time": { | |
"get": { | |
"summary": "Получение информации о действующих триггерах запуска задачи по наступлении определенного момента времени", | |
"operationId": "task_time_trigger_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskTimeTrigger" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
}, | |
"post": { | |
"summary": "Регистрация триггера запуска задачи по наступлении определенного момента времени", | |
"operationId": "task_time_trigger_create", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для валидации формы задачи", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskTimeTriggerCreate" | |
} | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskTimeTrigger" | |
} | |
}, | |
"headers": { | |
"Location": { | |
"description": "URL для получения данных о действующих триггерах запуска задачи по наступлении определенного момента времени", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/task/{id}/trigger/task": { | |
"get": { | |
"summary": "Получение информации о действующих триггерах запуска задачи по изменению статуса других задач", | |
"operationId": "task_task_trigger_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskTaskTrigger" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
}, | |
"post": { | |
"summary": "Регистрация триггера запуска задачи по изменению статуса других задач", | |
"operationId": "task_time_trigger_create", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор задачи", | |
"required": true, | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0, | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для валидации формы задачи", | |
"required": true, | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskTaskTriggerCreate" | |
} | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskTaskTrigger" | |
} | |
}, | |
"headers": { | |
"Location": { | |
"description": "URL для получения данных о действующих триггерах запуска задачи по изменению статуса других задач", | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"task" | |
] | |
} | |
}, | |
"/vault": { | |
"get": { | |
"summary": "Получение списка элементов хранилища", | |
"operationId": "vault_list", | |
"parameters": [ | |
{ | |
"name": "name", | |
"description": "Фильтр поиска подстроки в названии элемента", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "owner", | |
"description": "Поиск по (части) имени владельца элемента", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "shared", | |
"description": "Поиск по (части) имени пользователя/группы, кому доступен элемент", | |
"required": false, | |
"type": "string", | |
"in": "query" | |
}, | |
{ | |
"name": "limit", | |
"description": "Максимальное количество записей, которые необходимо вернуть в списке", | |
"required": true, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "offset", | |
"description": "Количество записей, которые необходимо упустить из выборки", | |
"required": false, | |
"type": "integer", | |
"in": "query" | |
}, | |
{ | |
"name": "order", | |
"description": "Имя поля для сортировки (в соответствии с ключами возвращаемых записей в списке). Префикс `+` означает сортировку по возрастанию, `-`, соответственно, по убыванию.", | |
"required": false, | |
"type": "string", | |
"in": "query", | |
"collectionFormat": "multi" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/VaultList" | |
}, | |
"headers": { | |
"X-Matched-Records": { | |
"description": "Количество объектов, совпадающих с заданным фильтром", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
} | |
} | |
} | |
}, | |
"tags": [ | |
"vault" | |
] | |
}, | |
"post": { | |
"summary": "Регистрация элемента в хранилище", | |
"operationId": "vault_create", | |
"parameters": [ | |
{ | |
"name": "data", | |
"description": "Информация для регистрации элемента в хранилище", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/VaultCreate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"201": { | |
"description": "", | |
"headers": { | |
"location": { | |
"description": "URL на вновь созданный элемент", | |
"type": "string" | |
} | |
}, | |
"schema": { | |
"$ref": "#/definitions/Vault" | |
} | |
} | |
}, | |
"tags": [ | |
"vault" | |
] | |
} | |
}, | |
"/vault/{id}": { | |
"get": { | |
"summary": "Детальная информация об элементе хранилища", | |
"operationId": "vault_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор элемента хранилища", | |
"required": true, | |
"type": "integer", | |
"format": "int32", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "", | |
"schema": { | |
"$ref": "#/definitions/Vault" | |
} | |
} | |
}, | |
"tags": [ | |
"vault" | |
] | |
}, | |
"put": { | |
"summary": "Изменение элемента хранилища", | |
"operationId": "vault_update", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор элемента хранилища", | |
"required": true, | |
"type": "integer", | |
"format": "int32", | |
"in": "path" | |
}, | |
{ | |
"name": "body", | |
"description": "Данные для изменения", | |
"required": true, | |
"schema": { | |
"$ref": "#/definitions/VaultUpdate" | |
}, | |
"in": "body" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Если в запросе будет фигурировать заголовок X-Request-Updated-Data, в ответе будет возвращен обновлённый объект", | |
"schema": { | |
"$ref": "#/definitions/Vault" | |
} | |
}, | |
"204": { | |
"description": "Вольт успешно обновлён." | |
} | |
}, | |
"tags": [ | |
"vault" | |
] | |
}, | |
"delete": { | |
"summary": "Удаление элемента хранилища", | |
"operationId": "vault_delete", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор элемента хранилища", | |
"required": true, | |
"type": "integer", | |
"format": "int32", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"204": { | |
"description": "Элемент хранилища удален." | |
} | |
}, | |
"tags": [ | |
"vault" | |
] | |
} | |
}, | |
"/vault/{id}/data": { | |
"get": { | |
"summary": "Сервисный метод получения данных записи из vault", | |
"operationId": "vault_data_get", | |
"parameters": [ | |
{ | |
"name": "id", | |
"description": "Идентификатор элемента хранилища", | |
"required": true, | |
"type": "integer", | |
"format": "int32", | |
"in": "path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Ответ зашифрован уникальным ключем исполняющейся задачи", | |
"schema": { | |
"$ref": "#/definitions/Vault" | |
} | |
} | |
}, | |
"produces": [ | |
"application/octet-stream" | |
], | |
"tags": [ | |
"vault" | |
] | |
} | |
} | |
}, | |
"definitions": { | |
"BatchResults": { | |
"description": "Результаты выполнения массовой операции", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Идентификатор объекта" | |
}, | |
"status": { | |
"description": "Результат выполнения операции", | |
"type": "string", | |
"enum": [ | |
"SUCCESS", | |
"WARNING", | |
"ERROR" | |
] | |
}, | |
"message": { | |
"description": "Сообщение от сервера в случае ошибки или предупреждения", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"id", | |
"status" | |
] | |
}, | |
"DiskInfo": { | |
"description": "", | |
"properties": { | |
"status": { | |
"type": "string", | |
"enum": [ | |
"ok", | |
"warning", | |
"critical" | |
] | |
}, | |
"total_space": { | |
"type": "integer", | |
"minimum": 0 | |
}, | |
"free_space": { | |
"type": "integer", | |
"minimum": 0 | |
} | |
}, | |
"required": [ | |
"status", | |
"total_space", | |
"free_space" | |
] | |
}, | |
"ClientOs": { | |
"description": "Данные об операционной системе клиента", | |
"properties": { | |
"name": { | |
"description": "Дистрибутив операционной системы клиента", | |
"type": "string" | |
}, | |
"version": { | |
"description": "Версия операционной системы клиента", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"name", | |
"version" | |
] | |
}, | |
"ClientTask": { | |
"description": "Данные о задаче, исполняемой на клиенте", | |
"properties": { | |
"task_id": { | |
"description": "Идентификатор выполняемой на клиенте задачи", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"task_type": { | |
"description": "Тип выполняемой на клиенте задачи", | |
"type": "string" | |
}, | |
"owner": { | |
"description": "Владелец выполняемой на клиенте задачи", | |
"type": "string" | |
}, | |
"url": { | |
"description": "URL выполняемой на клиенте задачи", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"task_id", | |
"task_type", | |
"owner", | |
"url" | |
] | |
}, | |
"ClientsList": { | |
"description": "Список клиентов с мета-информацией", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ClientEntity" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total" | |
] | |
}, | |
"ClientEntity": { | |
"description": "Элемент списка клиентов", | |
"properties": { | |
"id": { | |
"description": "Идентификатор клиента", | |
"type": "string" | |
}, | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
}, | |
"os": { | |
"description": "Операционная система клиента", | |
"$ref": "#/definitions/ClientOs" | |
}, | |
"cpu": { | |
"description": "Модель операционной системы клиента", | |
"type": "string" | |
}, | |
"ncpu": { | |
"description": "Количество ядер процессора клиента", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"ram": { | |
"description": "Объем памяти клиента в байтах", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"platform": { | |
"description": "Идентификатор платформы клиента", | |
"type": "string" | |
}, | |
"platforms": { | |
"description": "Идентификаторы платформ контейнеров клиента", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"lxc": { | |
"description": "Признак, есть ли возможность у данного клиента выполнять задачи в LXC-контейнерах", | |
"type": "boolean" | |
}, | |
"fqdn": { | |
"description": "FQDN сервера", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"fileserver": { | |
"description": "Корневой URL файлового HTTP сервера", | |
"type": "string" | |
}, | |
"dc": { | |
"description": "Трехбуквенный идентификатор вычислительного центра, где расположен сервер, либо null, если информация недоступна", | |
"type": "string" | |
}, | |
"task": { | |
"description": "Исполняет ли клиент задачу", | |
"$ref": "#/definitions/ClientTask" | |
}, | |
"alive": { | |
"description": "Жив ли клиент", | |
"type": "boolean" | |
}, | |
"disk": { | |
"description": "Информация о дисковой памяти", | |
"$ref": "#/definitions/DiskInfo" | |
}, | |
"tags": { | |
"description": "Тэги клиента", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"server": { | |
"description": "Версия кода сервера", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"client": { | |
"description": "Версия кода клиента", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"sdk": { | |
"description": "Версия кода SDK", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"tasks": { | |
"description": "Версия кода задач", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"venv": { | |
"description": "Версия кода VirtualEnvironment", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"configs": { | |
"description": "Версия кода конфигов", | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0 | |
}, | |
"last_activity": { | |
"description": "Время последнего API-вызова с указанного хоста в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"net_unreachable": { | |
"description": "Время UTC в формате ISO 8601 последней проверки, выявившей недоступность по сети. Если null, то всё хорошо.", | |
"format": "date-time", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"os", | |
"cpu", | |
"ncpu", | |
"ram", | |
"platform", | |
"platforms", | |
"lxc", | |
"fqdn", | |
"fileserver", | |
"dc", | |
"task", | |
"alive", | |
"disk", | |
"tags", | |
"server", | |
"client", | |
"sdk", | |
"tasks", | |
"venv", | |
"configs" | |
] | |
}, | |
"ClientStarted": { | |
"description": "Передача данных о запуске (нового) клиента", | |
"properties": { | |
"id": { | |
"description": "Идентификатор клиента", | |
"type": "string" | |
}, | |
"uuid": { | |
"description": "Единожды генерируемый UUID, хранящийся на клиенте", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"id", | |
"uuid" | |
] | |
}, | |
"ClientPing": { | |
"description": "Обновление информации о клиенте", | |
"properties": { | |
"os": { | |
"description": "Информация об операционной системе клиенте", | |
"$ref": "#/definitions/ClientOS" | |
}, | |
"containers": { | |
"description": "Информация о работающих контейнерах на клиенте", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ClientOS" | |
} | |
}, | |
"hardware": { | |
"description": "Системная информация о клиенте", | |
"$ref": "#/definitions/ClientPingHardware" | |
}, | |
"action": { | |
"description": "Текущее действие, выполняемое клиентом", | |
"$ref": "#/definitions/ClientPingAction" | |
} | |
}, | |
"required": [ | |
"os", | |
"hardware" | |
] | |
}, | |
"ClientOS": { | |
"description": "Информация об операционной системе клиенте", | |
"properties": { | |
"name": { | |
"description": "Человеко-читаемая строка, определяющее наименование конкретной версии операционной системы, например \"Windows(R) XP Enterprise Service Pack 3 @ 2008\"", | |
"type": "string" | |
}, | |
"family": { | |
"description": "Идентификатор семейства операционных систем, например, \"Windows\"", | |
"type": "string", | |
"enum": [ | |
"osx", | |
"bsd", | |
"linux", | |
"windows" | |
] | |
}, | |
"distributive": { | |
"description": "Идентификатор дистрибутива ОС, например, \"Enterprise\"", | |
"type": "string" | |
}, | |
"architecture": { | |
"description": "архитектура CPU, для которой скомпилированы бинарные файлы", | |
"type": "string", | |
"enum": [ | |
"i386", | |
"x86_64", | |
"ia64" | |
] | |
}, | |
"vendor": { | |
"description": "Идентификатор поставщика ОС, например, \"Lenovo\"", | |
"type": "string" | |
}, | |
"version": { | |
"description": "Информация о версии операционной системы", | |
"$ref": "#/definitions/ClientOSVersion" | |
}, | |
"kernel": { | |
"description": "Информация о ядре операционной системы", | |
"$ref": "#/definitions/ClientOSKernel" | |
} | |
}, | |
"required": [ | |
"name", | |
"family", | |
"architecture", | |
"version", | |
"kernel" | |
] | |
}, | |
"ClientOSVersion": { | |
"description": "Информация о версии операционной системы", | |
"properties": { | |
"major": { | |
"description": "Старшая часть версии ОС, например, 5", | |
"type": "integer", | |
"format": "int8" | |
}, | |
"minor": { | |
"description": "Младшая часть версии ОС, например, 0", | |
"type": "integer", | |
"format": "int8" | |
}, | |
"alias": { | |
"description": "Идентификатор ОС, например, \"whistler\"", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"major", | |
"minor" | |
] | |
}, | |
"ClientOSKernel": { | |
"description": "Информация о ядре операционной системы", | |
"properties": { | |
"name": { | |
"description": "Человеко-читаемая строка, определяющее наименование конкретной версии ядра операционной системы, например \"Windows NT 5.0\"", | |
"type": "string" | |
}, | |
"family": { | |
"description": "Идентификатор семейства ядер ОС, например, \"windows nt\"", | |
"type": "string" | |
}, | |
"vendor": { | |
"description": "Идентификатор производителя ядера ОС, например, \"microsoft\"", | |
"type": "string" | |
}, | |
"version": { | |
"description": "Информация о версии ядра операционной системы", | |
"$ref": "#/definitions/ClientOSKernelVersion" | |
} | |
}, | |
"required": [ | |
"name", | |
"family", | |
"version" | |
] | |
}, | |
"ClientOSKernelVersion": { | |
"description": "Информация о версии ядра операционной системы", | |
"properties": { | |
"major": { | |
"description": "Старшая часть версии ядра ОС, например, 5", | |
"type": "integer", | |
"format": "int8" | |
}, | |
"minor": { | |
"description": "Младшая часть версии ядра ОС, например, 0", | |
"type": "integer", | |
"format": "int8" | |
}, | |
"build": { | |
"description": "Номер сборки ядра", | |
"type": "integer", | |
"format": "int16" | |
}, | |
"tag": { | |
"description": "Тэг сборки ядра, например \"SMP\"", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"major", | |
"minor" | |
] | |
}, | |
"ClientPingHardware": { | |
"description": "Системная информация о клиенте", | |
"properties": { | |
"cpu": { | |
"description": "Информация o CPU", | |
"$ref": "#/definitions/ClientPingHardwareCPU" | |
}, | |
"ram": { | |
"description": "Информация oб операционной памяти", | |
"$ref": "#/definitions/ClientPingHardwareRAM" | |
}, | |
"disk": { | |
"description": "Информация o дисковой подсистеме", | |
"$ref": "#/definitions/ClientPingHardwareDisk" | |
}, | |
"network": { | |
"description": "Информация o сетевых интерфейсах", | |
"$ref": "#/definitions/ClientPingHardwareNetwork" | |
} | |
}, | |
"required": [ | |
"cpu", | |
"ram", | |
"disk", | |
"network" | |
] | |
}, | |
"ClientPingHardwareCPU": { | |
"description": "Информация o CPU", | |
"properties": { | |
"cores": { | |
"description": "Количество ядер CPU", | |
"type": "integer", | |
"format": "int8" | |
}, | |
"model": { | |
"description": "Идентификационная строка модели CPU", | |
"type": "string" | |
}, | |
"vendor": { | |
"description": "Наименование производителя CPU", | |
"type": "string", | |
"enum": [ | |
"intel", | |
"amd" | |
] | |
}, | |
"frequency": { | |
"description": "Номинальная тактовая частота в ГГц", | |
"type": "number" | |
}, | |
"architecture": { | |
"description": "Архитектура CPU", | |
"type": "string", | |
"enum": [ | |
"i386", | |
"x86_64", | |
"ia64" | |
] | |
} | |
}, | |
"required": [ | |
"cores", | |
"model", | |
"vendor", | |
"frequency", | |
"architecture" | |
] | |
}, | |
"ClientPingHardwareRAM": { | |
"description": "Информация oб операционной памяти", | |
"properties": { | |
"total": { | |
"description": "Количество оперативной памяти в байтах", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"free": { | |
"description": "Количество доступной оперативной памяти в байтах", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"total", | |
"free" | |
] | |
}, | |
"ClientPingHardwareDisk": { | |
"description": "Информация o дисковой подсистеме", | |
"properties": { | |
"type": { | |
"description": "Тип носителя", | |
"type": "string", | |
"enum": [ | |
"hdd", | |
"sdd" | |
] | |
}, | |
"total": { | |
"description": "Общий объем дисковой подсистемы, выделенный для использования задачими", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"free": { | |
"description": "Объем дисковой подсистемы, доступный для использования задачими", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"type", | |
"total", | |
"free" | |
] | |
}, | |
"ClientPingHardwareNetwork": { | |
"description": "Информация o сетевых интерфейсах", | |
"properties": { | |
"fastbone": { | |
"description": "Признак наличия fastbone", | |
"type": "boolean" | |
}, | |
"ipv4": { | |
"description": "Признак наличия IPv4", | |
"type": "boolean" | |
}, | |
"ipv6": { | |
"description": "Признак наличия IPv6", | |
"type": "boolean" | |
}, | |
"fqdn": { | |
"description": "Полное доменное имя сервера", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"fastbone", | |
"ipv4", | |
"ipv6", | |
"fqdn" | |
] | |
}, | |
"ClientPingAction": { | |
"description": "Текущее действие, выполняемое клиентом", | |
"properties": { | |
"service": { | |
"description": "Сервисная активность", | |
"type": "string", | |
"enum": [ | |
"PREPARING", | |
"TERMINATING", | |
"CLEANING" | |
] | |
}, | |
"task": { | |
"description": "Выполнение задачи", | |
"$ref": "#/definitions/ClientPingActionTask" | |
} | |
} | |
}, | |
"ClientPingActionTask": { | |
"description": "Информация о выполняющейся задаче", | |
"properties": { | |
"id": { | |
"description": "Идентификатор задачи", | |
"type": "integer", | |
"format": "int32" | |
}, | |
"url": { | |
"description": "URL для получения данных о задаче", | |
"type": "string" | |
}, | |
"action": { | |
"description": "Действие для задачи", | |
"type": "string", | |
"enum": [ | |
"EXECUTE", | |
"RELEASE", | |
"DELETE", | |
"STOP" | |
] | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"action" | |
] | |
}, | |
"ClientAction": { | |
"description": "Данные для инициации действия на клиенте", | |
"properties": { | |
"id": { | |
"description": "Идентификатор задачи", | |
"type": "integer", | |
"format": "int32" | |
}, | |
"token": { | |
"description": "Сессионный токен для аутентификации API-запросов в процессе исполнения задачи", | |
"type": "string" | |
}, | |
"vault_key": { | |
"description": "Ключ для расшифровки секретной информации", | |
"type": "string" | |
}, | |
"action": { | |
"description": "Действие для задачи", | |
"type": "string", | |
"enum": [ | |
"EXECUTE", | |
"RELEASE", | |
"DELETE", | |
"STOP" | |
] | |
} | |
}, | |
"required": [ | |
"id", | |
"token", | |
"action" | |
] | |
}, | |
"KeyChallengeResponse": { | |
"description": "Информация для аутентификации пользователя с использованием SSH-ключа. Содержит подпись с использование случайного числа, сгенерированого сервервером, идентификатор пользователя и случайного числа, сгенерированного клиентом", | |
"properties": { | |
"login": { | |
"type": "string", | |
"description": "Логин пользователя, который производит аутентификацию" | |
}, | |
"digest": { | |
"type": "string", | |
"description": "Контрольная сумма случайного числа из ответа сервера первой фазы и номера сессии, в шестнадцатеричном формате" | |
}, | |
"session_id": { | |
"type": "string", | |
"description": "Случайное число, сгенерированное клиентом, в шестнадцатеричном формате" | |
} | |
}, | |
"required": [ | |
"login", | |
"digest", | |
"session_id" | |
] | |
}, | |
"OAuthClientInfo": { | |
"description": "Информация, необходимая для генерации OAuth-токенов", | |
"properties": { | |
"url": { | |
"type": "string", | |
"description": "URL OAuth-сервера" | |
}, | |
"client": { | |
"type": "string", | |
"description": "Идентификатор клиентского приложения, зарегистрированного на указанном OAuth-сервере" | |
} | |
}, | |
"required": [ | |
"url", | |
"client" | |
] | |
}, | |
"OAuthTokenCreate": { | |
"description": "Информация, необходимая для генерации OAuth-токена — либо код от OAuth-сервера, либо пара login/password", | |
"properties": { | |
"code": { | |
"type": "string", | |
"description": "Код ответа OAuth-сервера, для генерации токена по коду" | |
}, | |
"login": { | |
"type": "string", | |
"description": "login пользователя, для генерации токена по паре login/password" | |
}, | |
"password": { | |
"type": "string", | |
"description": "password пользователя, для генерации токена по паре login/password" | |
} | |
} | |
}, | |
"GroupList": { | |
"description": "Список групп с мета-информацией", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Group" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total" | |
] | |
}, | |
"Group": { | |
"description": "Информация о группе пользователей", | |
"properties": { | |
"url": { | |
"description": "URL получения детальной информации о группе", | |
"type": "string" | |
}, | |
"name": { | |
"description": "Имя группы", | |
"type": "string" | |
}, | |
"rights": { | |
"description": "Максимально возможные права на данный ресурс у текущего пользователя", | |
"type": "string", | |
"enum": [ | |
"read", | |
"write" | |
] | |
}, | |
"members": { | |
"description": "Список имен пользователей группы", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"email": { | |
"description": "Email-адрес группы.", | |
"type": "string" | |
}, | |
"priority_limits": { | |
"$ref": "#/definitions/GroupPriorityLimits", | |
"description": "Максимально допустимые приоритеты задачи, создаваемой в этой группе" | |
}, | |
"sync": { | |
"$ref": "#/definitions/GroupSyncSource", | |
"description": "Внешний источник для синхронизации состава группы" | |
} | |
}, | |
"required": [ | |
"url", | |
"name", | |
"rights", | |
"members", | |
"email", | |
"priority_limits" | |
] | |
}, | |
"GroupPriorityLimits": { | |
"description": "Максимально допустимые приоритеты задачи, создаваемой в этой группе", | |
"properties": { | |
"api": { | |
"description": "Максимально допустимые приоритеты задачи, создаваемой посредством API", | |
"$ref": "#/definitions/TaskPriority" | |
}, | |
"ui": { | |
"description": "Максимально допустимые приоритеты задачи, создаваемой посредством UI", | |
"$ref": "#/definitions/TaskPriority" | |
} | |
}, | |
"required": [ | |
"api", | |
"ui" | |
] | |
}, | |
"GroupSyncSource": { | |
"description": "Внешний источник для синхронизации состава группы", | |
"properties": { | |
"source": { | |
"description": "Тип источника для синхронизации", | |
"type": "string", | |
"enum": [ | |
"RB", | |
"STAFF" | |
] | |
}, | |
"group": { | |
"description": "Имя группы во внешнем источнике", | |
"type": "string" | |
} | |
} | |
}, | |
"GroupCreate": { | |
"description": "Регистрация группы пользователей", | |
"properties": { | |
"name": { | |
"description": "Имя группы", | |
"type": "string" | |
}, | |
"members": { | |
"description": "Участники группы", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"email": { | |
"description": "Email-адрес группы, если задан", | |
"type": "string" | |
}, | |
"sync": { | |
"$ref": "#/definitions/GroupSyncSource", | |
"description": "Внешний источник для синхронизации состава группы" | |
} | |
}, | |
"required": [ | |
"name", | |
"members" | |
] | |
}, | |
"GroupUpdate": { | |
"description": "Изменение информации о группе пользователей", | |
"properties": { | |
"name": { | |
"description": "Имя группы", | |
"type": "string" | |
}, | |
"members": { | |
"description": "Участники группы", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"email": { | |
"description": "Email-адрес группы, если задан", | |
"type": "string" | |
}, | |
"sync": { | |
"$ref": "#/definitions/GroupSyncSource", | |
"description": "Внешний источник для синхронизации состава группы" | |
} | |
} | |
}, | |
"NotificationList": { | |
"description": "Список элементов хранилища с мета-информацией", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/NotificationListItem" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total" | |
] | |
}, | |
"NotificationListItem": { | |
"description": "Информация об оповещении", | |
"properties": { | |
"id": { | |
"description": "Уникальный идентификатор уведомления", | |
"type": "string" | |
}, | |
"url": { | |
"description": "URL получения детальной информации об уведомлении", | |
"type": "string" | |
}, | |
"created": { | |
"description": "Время создания уведомления", | |
"type": "string", | |
"format": "date-time" | |
}, | |
"recipients": { | |
"description": "Список получателей уведомления", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"subject": { | |
"description": "Тема уведомления", | |
"type": "string" | |
}, | |
"transport": { | |
"description": "Трансопрт доставки уведомления", | |
"type": "string", | |
"enum": [ | |
"email", | |
"jabber" | |
] | |
}, | |
"type": { | |
"description": "Вид представления уведомления", | |
"type": "string", | |
"enum": [ | |
"plain", | |
"html" | |
] | |
}, | |
"sent": { | |
"description": "Флаг уведомляющий было ли отправленно оповещение", | |
"type": "boolean" | |
}, | |
"task_id": { | |
"description": "Идентификатор задачи из которой сгенерировано уведомление", | |
"type": "integer" | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"created", | |
"recipients", | |
"subject", | |
"transport", | |
"type", | |
"sent" | |
] | |
}, | |
"Notification": { | |
"description": "Информация об оповещении", | |
"properties": { | |
"id": { | |
"description": "Уникальный идентификатор уведомления", | |
"type": "string" | |
}, | |
"author": { | |
"description": "Автор уведомления", | |
"type": "string" | |
}, | |
"created": { | |
"description": "Время создания уведомления", | |
"type": "string", | |
"format": "date-time" | |
}, | |
"recipients": { | |
"description": "Список получателей уведомления", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"subject": { | |
"description": "Тема уведомления", | |
"type": "string" | |
}, | |
"body": { | |
"description": "Содержание уведомления", | |
"type": "string" | |
}, | |
"transport": { | |
"description": "Трансопрт доставки уведомления", | |
"type": "string", | |
"enum": [ | |
"email", | |
"jabber" | |
] | |
}, | |
"type": { | |
"description": "Вид представления уведомления", | |
"type": "string", | |
"enum": [ | |
"plain", | |
"html" | |
] | |
}, | |
"sent": { | |
"description": "Флаг уведомляющий было ли отправленно оповещение", | |
"type": "boolean" | |
}, | |
"host": { | |
"description": "Хост с которого инициировалась отправка уведомления", | |
"type": "string" | |
}, | |
"headers": { | |
"description": "Заголовки уведомления", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"charset": { | |
"description": "Используемый набор символов в уведомлении", | |
"type": "string", | |
"enum": [ | |
"us-ascii", | |
"utf-8" | |
] | |
}, | |
"view": { | |
"description": "Вид уведомления", | |
"type": "string", | |
"enum": [ | |
"DEFAULT", | |
"EXECUTION", | |
"RELEASE" | |
] | |
}, | |
"task_id": { | |
"description": "Идентификатор задачи из которой сгенерировано уведомление", | |
"type": "integer" | |
}, | |
"inconsistent": { | |
"description": "Флаг неконсистентности уведомления, проставляемый сервисным потоком mailman", | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"id", | |
"author", | |
"created", | |
"recipients", | |
"subject", | |
"body", | |
"transport", | |
"type", | |
"sent", | |
"host", | |
"headers", | |
"charset", | |
"view", | |
"task_id", | |
"inconsistent" | |
] | |
}, | |
"NotificationCreate": { | |
"description": "Информация о создаваемом оповещении", | |
"properties": { | |
"recipients": { | |
"description": "Список получателей уведомления", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"subject": { | |
"description": "Тема уведомления", | |
"type": "string" | |
}, | |
"body": { | |
"description": "Содержание уведомления", | |
"type": "string" | |
}, | |
"transport": { | |
"description": "Трансопрт доставки уведомления", | |
"type": "string", | |
"enum": [ | |
"email", | |
"jabber" | |
] | |
}, | |
"type": { | |
"description": "Вид представления уведомления", | |
"type": "string", | |
"enum": [ | |
"plain", | |
"html" | |
] | |
}, | |
"headers": { | |
"description": "Заголовки уведомления", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"charset": { | |
"description": "Используемый набор символов в уведомлении", | |
"type": "string", | |
"enum": [ | |
"us-ascii", | |
"utf-8" | |
] | |
}, | |
"view": { | |
"description": "Вид уведомления", | |
"type": "string", | |
"enum": [ | |
"DEFAULT", | |
"EXECUTION", | |
"RELEASE" | |
] | |
}, | |
"task_id": { | |
"description": "Идентификатор задачи из которой сгенерировано уведомление", | |
"type": "integer" | |
} | |
}, | |
"required": [ | |
"recipients", | |
"subject", | |
"body", | |
"transport", | |
"type", | |
"headers", | |
"charset" | |
] | |
}, | |
"ResourceBase": { | |
"description": "Базовые данные о ресурсе. Вообще, это должен быть базовый класс для типов `ResourceListItem` и `Resource`, однако, судя по всему, swagger-ui не понимает наследования, поэтому свойства этого класса будут тупо скопированы", | |
"properties": { | |
"id": { | |
"description": "Глобальный идентификатор ресурса", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"rights": { | |
"description": "Максимально возможные права на данный ресурс у текущего пользователя", | |
"type": "string", | |
"enum": [ | |
"read", | |
"write" | |
] | |
}, | |
"task": { | |
"description": "Ссылка на задачу создавшую ресурс", | |
"$ref": "#/definitions/ResourceTask" | |
}, | |
"http": { | |
"description": "Список http-ссылок на ресурс", | |
"$ref": "#/definitions/ResourceDataLinks" | |
}, | |
"arch": { | |
"description": "Идентификатор архитектуры для которой создан ресурс", | |
"type": "string" | |
}, | |
"state": { | |
"description": "Текущее состояние ресурса", | |
"type": "string", | |
"enum": [ | |
"NOT_READY", | |
"READY", | |
"BROKEN", | |
"DELETED" | |
] | |
}, | |
"type": { | |
"description": "Класс (тип) ресурса", | |
"type": "string" | |
}, | |
"description": { | |
"description": "Описание ресурса", | |
"type": "string" | |
}, | |
"owner": { | |
"description": "Владелец ресурса", | |
"type": "string" | |
}, | |
"time": { | |
"$ref": "#/definitions/ResourceTime", | |
"description": "Временные метки задач" | |
}, | |
"attributes": { | |
"description": "Аттрибуты ресурса", | |
"type": "object" | |
}, | |
"size": { | |
"description": "Размер ресурса в байтах", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"md5": { | |
"description": "MD5 ресурса", | |
"type": "string" | |
}, | |
"skynet_id": { | |
"description": "skynet id", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"id", | |
"rights", | |
"task", | |
"arch", | |
"state", | |
"type", | |
"description", | |
"owner", | |
"time", | |
"attributes", | |
"size" | |
] | |
}, | |
"ResourceTime": { | |
"description": "Базовые временные метки ресурса", | |
"properties": { | |
"created": { | |
"description": "Время создания ресурса в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"accessed": { | |
"description": "Время последнего использования ресурса в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"expires": { | |
"description": "Приблизительное время, когда ресурс будет помечен, как устаревший в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"created", | |
"accessed", | |
"expires" | |
] | |
}, | |
"ResourceList": { | |
"description": "Список ресурсов с мета-информацией", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ResourceListItem" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total" | |
] | |
}, | |
"ResourceListItem": { | |
"description": "Элемент списка ресурсов", | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/ResourceBase" | |
} | |
], | |
"properties": { | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"url" | |
] | |
}, | |
"ResourceUrlItem": { | |
"description": "Элемент списка адресов ресурса", | |
"properties": { | |
"url": { | |
"description": "Адрес ресурса", | |
"type": "string" | |
}, | |
"host": { | |
"description": "Название хоста на котором находится ресурс", | |
"type": "string" | |
}, | |
"storage": { | |
"description": "Является ли хост хранилищем", | |
"type": "boolean" | |
}, | |
"state": { | |
"description": "Состояние ресурса на хосте", | |
"type": "string", | |
"enum": [ | |
"OK", | |
"MARK_TO_DELETE" | |
] | |
}, | |
"alive": { | |
"description": "Жив ли хост", | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"url", | |
"host", | |
"storage", | |
"state", | |
"alive" | |
] | |
}, | |
"Resource": { | |
"description": "Детальная информация о ресурсе", | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/ResourceBase" | |
} | |
], | |
"properties": { | |
"sources": { | |
"description": "Список идентификаторов клиентов, являющихся источниками данных ресурса", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"file_name": { | |
"description": "Относительный путь к файл ресурса", | |
"type": "string" | |
}, | |
"rsync": { | |
"description": "Список rsync-ссылок на ресурс", | |
"$ref": "#/definitions/ResourceDataLinks" | |
} | |
}, | |
"required": [ | |
"sources", | |
"file_name", | |
"md5" | |
] | |
}, | |
"ResourceTask": { | |
"description": "Ссылка на задачу создавшую ресурс", | |
"properties": { | |
"id": { | |
"description": "Глобальный идентификатор задачи создавшей ресурс", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"url": { | |
"description": "URI для получения данных", | |
"type": "string" | |
}, | |
"status": { | |
"description": "Статус задачи, создавшей ресурс", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"status" | |
] | |
}, | |
"ResourceAttribute": { | |
"description": "Атрибут ресурса", | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Имя атрибута" | |
}, | |
"value": { | |
"type": "string", | |
"description": "Значение атрибута" | |
} | |
}, | |
"required": [ | |
"name", | |
"value" | |
] | |
}, | |
"ResourceDataLinks": { | |
"description": "Список ссылок на ресурс", | |
"properties": { | |
"links": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"links" | |
] | |
}, | |
"SchedulerNew": { | |
"description": "Данные для создания планировщика (одно из двух)", | |
"properties": { | |
"task_type": { | |
"description": "Тип задач для которых создается планировщик", | |
"type": "string" | |
}, | |
"source": { | |
"description": "Идентификатор планировщика для копирования", | |
"type": "integer", | |
"format": "int64" | |
} | |
} | |
}, | |
"SchedulersList": { | |
"description": "Список планировщиков с мета-информацией", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/SchedulerListItem" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total" | |
] | |
}, | |
"SchedulerListItem": { | |
"description": "Элемент списка планировщиков", | |
"properties": { | |
"id": { | |
"description": "Глобальный идентификатор планировщика", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
}, | |
"rights": { | |
"description": "Максимально возможные права на данный планировщик у текущего пользователя", | |
"type": "string", | |
"enum": [ | |
"read", | |
"write" | |
] | |
}, | |
"status": { | |
"description": "Текущее состояние планировщика", | |
"type": "string", | |
"enum": [ | |
"STOPPED", | |
"WATCHING", | |
"WAITING", | |
"FAILURE", | |
"UNKNOWN", | |
"DELETED" | |
] | |
}, | |
"task": { | |
"description": "Свойства задач создаваемых планировщиком.", | |
"$ref": "#/definitions/SchedulerTask" | |
}, | |
"owner": { | |
"description": "Владелец планировщика", | |
"type": "string" | |
}, | |
"author": { | |
"description": "Автор (создатель) планировщика", | |
"type": "string" | |
}, | |
"time": { | |
"description": "Характеристики времени планировщика.", | |
"$ref": "#/definitions/SchedulerTime" | |
}, | |
"schedule": { | |
"description": "Интервалы запусков/перезапусков задач плнировщиком.", | |
"$ref": "#/definitions/SchedulerInterval" | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"rights", | |
"status", | |
"task", | |
"owner", | |
"author", | |
"time", | |
"schedule" | |
] | |
}, | |
"SchedulerInterval": { | |
"description": "Интервальные свойства планировщика.", | |
"properties": { | |
"start_time": { | |
"description": "Время запуска планировщика в UTC в формате ISO 8601. Если не задано, то запускается сразу", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"repetition": { | |
"description": "Интервал запусков задач планировщиком", | |
"$ref": "#/definitions/Repetition" | |
}, | |
"retry": { | |
"description": "Интервал запуска задач планировщиком в случае если предыдущая задача планировщика завершилась ошибкой", | |
"$ref": "#/definitions/Retry" | |
}, | |
"fail_on_error": { | |
"description": "Переводить планировщик в состояние FAILURE в случае крушения задачи", | |
"type": "boolean" | |
}, | |
"sequential_run": { | |
"description": "Запускать новую задачу только после завершения старой", | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"repetition" | |
] | |
}, | |
"Repetition": { | |
"description": "Должен содержать одно из значений no=true | Interval | Weekly", | |
"properties": { | |
"interval": { | |
"description": "Интервалы времени в секундах через которые происходит запуск задач.", | |
"type": "integer" | |
}, | |
"weekly": { | |
"description": "Недельное расписание запусков задач. 0 - Mon, 1 - Tue, ... 6 - Sun", | |
"type": "array", | |
"items": { | |
"type": "integer", | |
"format": "int16", | |
"minimum": 0, | |
"maximum": 6 | |
} | |
} | |
} | |
}, | |
"Retry": { | |
"description": "Параметры перезапуска задачи после крушения предыдущей задачи.", | |
"properties": { | |
"ignore": { | |
"type": "boolean", | |
"description": "Крушение будет проигнорировано, перезапуск будет происходить в обычном режиме." | |
}, | |
"interval": { | |
"description": "Перезапуск через заданный интервал времени в секундах.", | |
"type": "integer" | |
} | |
} | |
}, | |
"SchedulerTime": { | |
"description": "Свойства планировщика выражающиеся временем.", | |
"properties": { | |
"created": { | |
"description": "Время создания задачи в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"next": { | |
"description": "Время следующего запуска задачи", | |
"type": "string", | |
"format": "date-time" | |
}, | |
"last": { | |
"description": "Время последнего запуска задачи", | |
"type": "string", | |
"format": "date-time" | |
} | |
}, | |
"required": [ | |
"created", | |
"next" | |
] | |
}, | |
"SchedulerTask": { | |
"description": "Информация о задаче созданной планировщиком", | |
"properties": { | |
"last": { | |
"description": "Последняя запущенная планировщиком задача.", | |
"$ref": "#/definitions/SchedulerLastTask" | |
}, | |
"type": { | |
"description": "Тип задач запускаемых планировщиком", | |
"type": "string" | |
}, | |
"description": { | |
"description": "Определяемое пользователем описание планировщика", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"type", | |
"description" | |
] | |
}, | |
"SchedulerLastTask": { | |
"description": "Информация о последней запущенной задаче планировщиком.", | |
"properties": { | |
"id": { | |
"description": "Глобальный идентификатор задачи", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
}, | |
"status": { | |
"description": "Текущее состояние задачи", | |
"type": "string" | |
} | |
} | |
}, | |
"Scheduler": { | |
"description": "Информация о планировщике", | |
"properties": { | |
"id": { | |
"description": "Глобальный идентификатор планировщика", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
}, | |
"rights": { | |
"description": "Максимально возможные права на планировщик у текущего пользователя", | |
"type": "string", | |
"enum": [ | |
"read", | |
"write" | |
] | |
}, | |
"owner": { | |
"description": "Владелец планировщика", | |
"type": "string" | |
}, | |
"author": { | |
"description": "Автор (создатель) планировщика", | |
"type": "string" | |
}, | |
"schedule": { | |
"description": "Интервалы запусков/перезапусков задач планировщиком.", | |
"$ref": "#/definitions/SchedulerInterval" | |
}, | |
"time": { | |
"description": "Характеристики времени планировщика.", | |
"$ref": "#/definitions/SchedulerTime" | |
}, | |
"task": { | |
"description": "Общие настройки задач", | |
"$ref": "#/definitions/TaskConfig" | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"rights", | |
"author", | |
"schedule", | |
"time", | |
"task" | |
] | |
}, | |
"TaskConfig": { | |
"description": "Общие настройки задач запускаемых планировщиком", | |
"properties": { | |
"type": { | |
"description": "Тип задач запускаемых планировщиком", | |
"type": "string" | |
}, | |
"description": { | |
"description": "Определяемое пользователем описание планировщика", | |
"type": "string" | |
}, | |
"owner": { | |
"description": "Владелец задачи", | |
"type": "string" | |
}, | |
"priority": { | |
"$ref": "#/definitions/TaskPriority" | |
}, | |
"requirements": { | |
"$ref": "#/definitions/TaskRequirementsBase" | |
}, | |
"important": { | |
"description": "Флаг важности задачи", | |
"type": "boolean" | |
}, | |
"kill_timeout": { | |
"description": "Максимально разрешенное время исполнения задачи в секундах", | |
"type": "integer", | |
"format": "int32" | |
}, | |
"fail_on_any_error": { | |
"description": "Переводить задачу в состояние FAILURE в случае возникновения любой ошибки", | |
"type": "boolean" | |
}, | |
"hidden": { | |
"description": "Признак скрытой задачи", | |
"type": "boolean" | |
}, | |
"notifications": { | |
"description": "Настройки уведомлений", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskNotifications", | |
"description": "Правило уведомлений" | |
} | |
}, | |
"custom_fields": { | |
"description": "Определяемые пользователем поля задачи (shortcut to PUT request for '/scheduler/{id}/custom/fields' path)", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateItem" | |
} | |
} | |
}, | |
"required": [ | |
"type", | |
"description", | |
"owner", | |
"priority", | |
"requirements", | |
"kill_timeout", | |
"fail_on_any_error", | |
"hidden" | |
] | |
}, | |
"SchedulerUpdate": { | |
"description": "Информация об обновляемой задаче", | |
"properties": { | |
"owner": { | |
"description": "Владелец планировщика и создаваемых им задач", | |
"type": "string" | |
}, | |
"schedule": { | |
"description": "Интервалы запусков/перезапусков задач плнировщиком.", | |
"$ref": "#/definitions/SchedulerInterval" | |
}, | |
"task": { | |
"description": "Данные обновления настроек задач. (owner будет наследоваться из планировщика)", | |
"$ref": "#/definitions/TaskUpdate" | |
} | |
} | |
}, | |
"ReleaseTemplate": { | |
"description": "Подсказка для заполнения формы создания релиза", | |
"properties": { | |
"types": { | |
"description": "Список типов релизов", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"cc": { | |
"description": "Список получателей оповещения о релизе", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"subject": { | |
"description": "Тема сообщения к релизу", | |
"type": "string" | |
}, | |
"message": { | |
"description": "Содержимое сообщения к релизу", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"types" | |
] | |
}, | |
"ReleaseResource": { | |
"description": "Идентификатор ресурса и список пользователей которые могут его релизить", | |
"properties": { | |
"resource_id": { | |
"description": "Идентификатор ресурса", | |
"type": "integer" | |
}, | |
"type": { | |
"description": "Тип ресурса", | |
"type": "string" | |
}, | |
"description": { | |
"description": "Описание ресурса", | |
"type": "string" | |
}, | |
"releasers": { | |
"description": "Список логинов пользователей, которые могут производить релиз ресурса", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"resource_id" | |
] | |
}, | |
"Release": { | |
"description": "Информация связанная с релизами задачи", | |
"properties": { | |
"resources": { | |
"description": "Список ресурсов к релизу, с пользователями которые могут производить их релиз", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ReleaseResource" | |
} | |
}, | |
"author": { | |
"description": "Автор релиза", | |
"type": "string" | |
}, | |
"type": { | |
"description": "Тип релиза", | |
"type": "string" | |
}, | |
"created": { | |
"description": "Время создания релиза в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"subject": { | |
"description": "Тема сообщения к релизу", | |
"type": "string" | |
}, | |
"message": { | |
"description": "Содержимое сообщения к релизу", | |
"type": "string" | |
} | |
} | |
}, | |
"ReleaseCreate": { | |
"description": "Информация о релизе при создании", | |
"properties": { | |
"to": { | |
"description": "Список адресов получателей уведомления о релизе", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"cc": { | |
"description": "Список адресов получателей уведомления о релизе в копии", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"subject": { | |
"description": "Тема указанная при релизе", | |
"type": "string" | |
}, | |
"message": { | |
"description": "Содержимое сообщения к релизу", | |
"type": "string" | |
}, | |
"type": { | |
"description": "Тип релиза", | |
"type": "string" | |
}, | |
"task_id": { | |
"description": "Идентификатор задачи", | |
"type": "integer", | |
"format": "int64", | |
"minimum": 1 | |
}, | |
"params": { | |
"description": "Дополнительные параметры передаваемые в метод `on_release` задачи", | |
"type": "object" | |
} | |
}, | |
"required": [ | |
"subject", | |
"type", | |
"task_id" | |
] | |
}, | |
"ReleaseList": { | |
"description": "Список релизов", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ReleaseListItem" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total" | |
] | |
}, | |
"ReleaseListItem": { | |
"description": "Элемент списка релизов", | |
"properties": { | |
"task_id": { | |
"description": "Идентификатор задачи из которой был создан релиз", | |
"type": "integer", | |
"format": "int64", | |
"minimum": 1 | |
}, | |
"type": { | |
"description": "Тип релиза", | |
"type": "string" | |
}, | |
"subject": { | |
"description": "Тема указанная при релизе", | |
"type": "string" | |
}, | |
"author": { | |
"description": "Автор релиза", | |
"type": "string" | |
}, | |
"created": { | |
"description": "Время создания релиза в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"task_id", | |
"type", | |
"subject", | |
"author", | |
"created" | |
] | |
}, | |
"ServiceThreadStatus": { | |
"description": "Информация о состоянии сервисного потока", | |
"properties": { | |
"id": { | |
"type": "string", | |
"description": "Идентификатор сервисного потока" | |
}, | |
"run_time": { | |
"description": "Информация о времени запуска сервисного потока", | |
"$ref": "#/definitions/ServiceThreadStatusTime" | |
}, | |
"locks": { | |
"description": "Информация о блокировках (первый в списке владеет блокировкой)", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"id", | |
"run_time", | |
"locks" | |
] | |
}, | |
"ServiceThreadStatusTime": { | |
"description": "Информация о времени запуска сервисного потока", | |
"properties": { | |
"last": { | |
"description": "Время последнего запуска в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"next": { | |
"description": "Время следующего запуска в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"last", | |
"next" | |
] | |
}, | |
"DatabaseShard": { | |
"description": "Информация о шарде MongoDB", | |
"properties": { | |
"id": { | |
"description": "Идентификатор шарда", | |
"type": "string" | |
}, | |
"updated": { | |
"description": "Время последнего обновления информации о шарде в UTC в формате ISO 8601", | |
"type": "string", | |
"format": "date-time" | |
}, | |
"replicaset": { | |
"description": "Информация о процессах mongod в составе replica set'а данного шарда", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/DatabaseShardReplicaInstance" | |
} | |
} | |
}, | |
"required": [ | |
"id", | |
"updated", | |
"replicaset" | |
] | |
}, | |
"DatabaseSize": { | |
"description": "Информация о размере базы данных", | |
"properties": { | |
"indexsize": { | |
"description": "Размер всех индексов в батайх", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"datasize": { | |
"description": "Размер всех данных в байтах", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"filesize": { | |
"description": "Размер всех файлов БД в байтах", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"avgobjsize": { | |
"description": "Средний размер объекта в байтах", | |
"type": "number" | |
} | |
} | |
}, | |
"DatabaseCurrentOp": { | |
"description": "Информация о длительности запросов к базе данных", | |
"properties": { | |
"duration": { | |
"description": "", | |
"type": "number" | |
}, | |
"read": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"current_op": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"read_lock": { | |
"description": "", | |
"type": "number" | |
}, | |
"write_lock": { | |
"description": "", | |
"type": "number" | |
} | |
} | |
}, | |
"DatabaseShardReplicaInstance": { | |
"description": "Информация о процессе mongod в составе replica set'а данного шарда", | |
"properties": { | |
"id": { | |
"description": "Идентификатор процесса mongod в формате <hostname>:<port>", | |
"type": "string" | |
}, | |
"uptime": { | |
"description": "Время работы процесса в секундах с момента запуска", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"optime": { | |
"description": "Идентификатор последней синхронизированной записи журнала операций в формате <timestamp>.<operation_number>", | |
"type": "string" | |
}, | |
"ping": { | |
"description": "Время прохождения последней команды ping до данного сервера в миллисекундах", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"sync_source": { | |
"description": "Идентификатор процесса mongod в формате <hostname>:<port>, с которого происходит синхронизация данных", | |
"type": "string" | |
}, | |
"last_heartbeat": { | |
"description": "Время последнего информационного пакета данного процесса UTC в формате ISO 8601", | |
"type": "string", | |
"format": "date-time" | |
}, | |
"state": { | |
"description": "Состояние данного процесса", | |
"type": "string", | |
"enum": [ | |
"STARTUP", | |
"PRIMARY", | |
"SECONDARY", | |
"RECOVERING", | |
"STARTUP2", | |
"UNKNOWN", | |
"ARBITER", | |
"DOWN", | |
"ROLLBACK", | |
"REMOVED" | |
] | |
}, | |
"elected": { | |
"description": "Время в формате UTC в формате ISO 8601 выбора данного процесса в качестве PRIMARY", | |
"format": "date-time", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"id", | |
"uptime", | |
"optime", | |
"ping", | |
"sync_source", | |
"last_heartbeat", | |
"state" | |
] | |
}, | |
"WebServerStatus": { | |
"description": "Информация о состоянии Web-сервера", | |
"properties": { | |
"host": { | |
"description": "Идентификатор Web-сервера, обработавшего запрос", | |
"type": "string" | |
}, | |
"uptime": { | |
"description": "Время работы сервера в секундах, с точностью до миллисекунд", | |
"type": "number" | |
}, | |
"requests": { | |
"description": "Информация об обработанных сервером запросах", | |
"$ref": "#/definitions/WebServerStatusRequests" | |
}, | |
"processes": { | |
"description": "Информация о потребляемых серверными процессами системных ресурсах", | |
"$ref": "#/definitions/WebServerStatusProcesses" | |
} | |
}, | |
"required": [ | |
"host", | |
"uptime", | |
"requests", | |
"processes" | |
] | |
}, | |
"WebServerStatusRequests": { | |
"description": "Информация об обработанных сервером запросах", | |
"properties": { | |
"count": { | |
"description": "Счетчики обработанных сервером запросов", | |
"$ref": "#/definitions/WebServerStatusRequestsCount" | |
}, | |
"rate": { | |
"description": "Скорость обработки запросов сервером", | |
"$ref": "#/definitions/WebServerStatusRequestsRate" | |
}, | |
"processing": { | |
"description": "Количество запросов, обрабатываемых сервером в данный момент", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"queued": { | |
"description": "Примерное количество запросов, ожидающих обработки в данный момент", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"count", | |
"rate", | |
"processing", | |
"queued" | |
] | |
}, | |
"WebServerStatusRequestsCount": { | |
"description": "Счетчики обработанных сервером запросов", | |
"properties": { | |
"low_priority": { | |
"description": "Количество запросов высокоприоритетных (UI) запросов, обработанных сервером с момента запуска", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"high_priority": { | |
"description": "Количество запросов низкоприоритетных (API) запросов, обработанных сервером с момента запуска", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"low_priority", | |
"high_priority" | |
] | |
}, | |
"WebServerStatusRequestsRate": { | |
"description": "Скорость обработки запросов сервером", | |
"properties": { | |
"s5": { | |
"description": "Среднее количество запросов, обработанных сервером за последние 5 секунд", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"s15": { | |
"description": "Среднее количество запросов, обработанных сервером за последние 15 секунд", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"s30": { | |
"description": "Среднее количество запросов, обработанных сервером за последние 30 секунд", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"s5", | |
"s15", | |
"s30" | |
] | |
}, | |
"WebServerStatusProcesses": { | |
"description": "Информация о потребляемых серверными процессами системных ресурсах", | |
"properties": { | |
"self": { | |
"description": "Информация о потребляемых системных ресурсах процессом web-сервера", | |
"$ref": "#/definitions/WebServerStatusProcessInfo" | |
}, | |
"service": { | |
"description": "Информация о потребляемых системных ресурсах сервисным процессом web-сервера", | |
"$ref": "#/definitions/WebServerStatusProcessInfo" | |
}, | |
"workers": { | |
"description": "Скорость обработки запросов сервером", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/WebServerStatusProcessInfo" | |
} | |
} | |
}, | |
"required": [ | |
"self", | |
"service", | |
"workers" | |
] | |
}, | |
"WebServerStatusProcessInfo": { | |
"description": "Информация о потребляемых системных ресурсах процессом web-сервера", | |
"properties": { | |
"cpu": { | |
"description": "Информация о потреблении CPU процессом", | |
"$ref": "#/definitions/WebServerStatusProcessInfoCPU" | |
}, | |
"memory": { | |
"description": "Информация о потреблении памяти процессом", | |
"$ref": "#/definitions/WebServerStatusProcessInfoMemory" | |
} | |
}, | |
"required": [ | |
"cpu", | |
"memory" | |
] | |
}, | |
"WebServerStatusProcessInfoCPU": { | |
"description": "Информация о потреблении CPU процессом", | |
"properties": { | |
"s5": { | |
"description": "Среднее потребление CPU в процентах за последние 5 секунд", | |
"$ref": "#/definitions/WebServerStatusProcessInfoCPUDetails" | |
}, | |
"s15": { | |
"description": "Среднее потребление CPU в процентах за последние 15 секунд", | |
"$ref": "#/definitions/WebServerStatusProcessInfoCPUDetails" | |
}, | |
"s30": { | |
"description": "Среднее потребление CPU в процентах за последние 30 секунд", | |
"$ref": "#/definitions/WebServerStatusProcessInfoCPUDetails" | |
} | |
}, | |
"required": [ | |
"s5", | |
"s15", | |
"s30" | |
] | |
}, | |
"WebServerStatusProcessInfoCPUDetails": { | |
"description": "Детальная информация о потреблении CPU процессом", | |
"properties": { | |
"system": { | |
"description": "Среднее потребление системного времени процессом в процентах", | |
"type": "number" | |
}, | |
"user": { | |
"description": "Среднее потребление пользовательского времени процессом в процентах", | |
"type": "number" | |
}, | |
"idle": { | |
"description": "Средний простой процесса в процентах", | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"system", | |
"user", | |
"idle" | |
] | |
}, | |
"WebServerStatusProcessInfoMemory": { | |
"description": "Информация о потреблении памяти процессом", | |
"properties": { | |
"vms": { | |
"description": "Объем доступной процессу виртуальной памяти в килобайтах", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"rss": { | |
"description": "Объем использованной процессом оперативной памяти в килобайтах", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"vms", | |
"rss" | |
] | |
}, | |
"TaskStatusStatistics": { | |
"description": "Счетчики по состояниям задач", | |
"properties": { | |
"draft": { | |
"description": "Количество задач в группе статусов DRAFT", | |
"$ref": "#/definitions/TaskStatusStatisticsDraft" | |
}, | |
"queue": { | |
"description": "Количество задач в группе статусов QUEUE", | |
"$ref": "#/definitions/TaskStatusStatisticsQueue" | |
}, | |
"execute": { | |
"description": "Количество задач в группе статусов EXECUTE", | |
"$ref": "#/definitions/TaskStatusStatisticsExecute" | |
}, | |
"wait": { | |
"description": "Количество задач в группе статусов WAIT", | |
"$ref": "#/definitions/TaskStatusStatisticsWait" | |
}, | |
"break": { | |
"description": "Количество задач в группе статусов BREAK", | |
"$ref": "#/definitions/TaskStatusStatisticsBreak" | |
}, | |
"finish": { | |
"description": "Количество задач в группе статусов FINISH", | |
"$ref": "#/definitions/TaskStatusStatisticsFinish" | |
} | |
}, | |
"required": [ | |
"draft", | |
"queue", | |
"execute", | |
"wait", | |
"break", | |
"finish" | |
] | |
}, | |
"TaskStatusStatisticsDraft": { | |
"description": "Количество задач в группе статусов DRAFT", | |
"properties": { | |
"draft": { | |
"description": "Количество задач в состоянии DRAFT", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"draft" | |
] | |
}, | |
"TaskStatusStatisticsQueue": { | |
"description": "Количество задач в группе статусов QUEUE", | |
"properties": { | |
"enqueuing": { | |
"description": "Количество задач в состоянии ENQUEUING", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"enqueued": { | |
"description": "Количество задач в состоянии ENQUEUED", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"enqueuing", | |
"enqueued" | |
] | |
}, | |
"TaskStatusStatisticsExecute": { | |
"description": "Количество задач в группе статусов EXECUTE", | |
"properties": { | |
"preparing": { | |
"description": "Количество задач в состоянии PREPARING", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"executing": { | |
"description": "Количество задач в состоянии EXECUTING", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"temporary": { | |
"description": "Количество задач в состоянии TEMPORARY", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"finishing": { | |
"description": "Количество задач в состоянии FINISHING", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"preparing", | |
"executing", | |
"temporary", | |
"finishing" | |
] | |
}, | |
"TaskStatusStatisticsWait": { | |
"description": "Количество задач в группе статусов WAIT", | |
"properties": { | |
"wait_res": { | |
"description": "Количество задач в состоянии WAIT_RES", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"wait_task": { | |
"description": "Количество задач в состоянии WAIT_TASK", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"wait_time": { | |
"description": "Количество задач в состоянии WAIT_TIME", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"wait_res", | |
"wait_task", | |
"wait_time" | |
] | |
}, | |
"TaskStatusStatisticsFinish": { | |
"description": "Количество задач в группе статусов FINISH", | |
"properties": { | |
"success": { | |
"description": "Количество задач в состоянии SUCCESS", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"releasing": { | |
"description": "Количество задач в состоянии RELEASING", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"released": { | |
"description": "Количество задач в состоянии RELEASED", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"not_released": { | |
"description": "Количество задач в состоянии NOT_RELEASED", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"failure": { | |
"description": "Количество задач в состоянии FAILURE", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"deleting": { | |
"description": "Количество задач в состоянии DELETING", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"deleted": { | |
"description": "Количество задач в состоянии DELETED", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"success", | |
"releasing", | |
"released", | |
"not_released", | |
"failure", | |
"deleting", | |
"deleted" | |
] | |
}, | |
"TaskStatusStatisticsBreak": { | |
"description": "Количество задач в группе статусов BREAK", | |
"properties": { | |
"exception": { | |
"description": "Количество задач в состоянии EXCEPTION", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"no_res": { | |
"description": "Количество задач в состоянии NO_RES", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"timeout": { | |
"description": "Количество задач в состоянии TIMEOUT", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"stopping": { | |
"description": "Количество задач в состоянии STOPPING", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"stopped": { | |
"description": "Количество задач в состоянии STOPPED", | |
"type": "integer", | |
"format": "int64" | |
} | |
}, | |
"required": [ | |
"exception", | |
"no_res", | |
"timeout", | |
"stopping", | |
"stopped" | |
] | |
}, | |
"ExternalBackupStatistics": { | |
"description": "Информация о состоянии бэкапа ресурсов в флагом ttl=inf во внешнее хранилище (MDS)", | |
"properties": { | |
"immortal_resource_size": { | |
"description": "Размер в байтах всех ресурсов с флагом ttl=inf", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"external_backup_size": { | |
"description": "Размер в байтах всех забэкапленых ресурсов", | |
"type": "integer", | |
"format": "int64" | |
} | |
} | |
}, | |
"StorageSizeStatistics": { | |
"description": "", | |
"properties": { | |
"storage_ready_resources_size": { | |
"description": "Размер (в байтах) всех READY-ресурсов в хранилище", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"client_side_ready_resources_size": { | |
"description": "Размер (в байтах) всех READY-ресурсов на клиетах", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"ready_resources_size": { | |
"description": "Размер (в байтах) всех READY-ресурсов в Sandbox", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"size_pure": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"size_total": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"size_unique": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"disk_total": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"amount_unique": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"disk_free": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"amount_pure": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"delta": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"disk_used": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"amount_total": { | |
"description": "", | |
"type": "integer", | |
"format": "int64" | |
} | |
} | |
}, | |
"UINotification": { | |
"description": "Информация о зарегистрированном UI-уведомлении", | |
"properties": { | |
"id": { | |
"description": "24x-символьный уникальный идентификатор сообщения", | |
"type": "string" | |
}, | |
"severity": { | |
"description": "Важность сообщения", | |
"type": "string", | |
"enum": [ | |
"INFO", | |
"WARNING", | |
"CRITICAL" | |
] | |
}, | |
"content": { | |
"description": "Содержимое сообщение в формате HTML и кодировке UTF8", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"id", | |
"severity", | |
"content" | |
] | |
}, | |
"UINotificationCreate": { | |
"description": "Информация о новом UI-уведомлении", | |
"properties": { | |
"severity": { | |
"description": "Важность сообщения", | |
"type": "string", | |
"enum": [ | |
"INFO", | |
"WARNING", | |
"CRITICAL" | |
] | |
}, | |
"content": { | |
"description": "Содержимое сообщение в формате HTML и кодировке UTF8", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"severity", | |
"content" | |
] | |
}, | |
"QueuedTasksList": { | |
"description": "Список задач в очереди планировщика", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/QueuedTask" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total", | |
"items" | |
] | |
}, | |
"QueuedTask": { | |
"description": "Информация о задаче в очереди планировщика", | |
"properties": { | |
"id": { | |
"description": "Глобальный идентификатор задачи", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
}, | |
"priority": { | |
"description": "Приоритет задачи", | |
"$ref": "#/definitions/TaskPriority" | |
}, | |
"clients": { | |
"description": "Список подходящих задаче клиентов, отсортированный по host_match_score, в форме пар (идентификатор клиента, cпециализированный вес клиента (host_match_score) для данной задачи)", | |
"type": "array", | |
"items": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"priority", | |
"clients" | |
] | |
}, | |
"TaskPriority": { | |
"description": "Приоритет задачи", | |
"properties": { | |
"class": { | |
"description": "Класс приоритета задачи", | |
"type": "string", | |
"enum": [ | |
"USER", | |
"SERVICE", | |
"BACKGROUND" | |
] | |
}, | |
"subclass": { | |
"description": "Подкласс приоритета задачи", | |
"type": "string", | |
"enum": [ | |
"HIGH", | |
"NORMAL", | |
"LOW" | |
] | |
} | |
} | |
}, | |
"TaskTypesNotusedStatistics": { | |
"description": "Список неиспользуемых типов задач", | |
"properties": { | |
"type": { | |
"description": "Название типа задачи", | |
"type": "string" | |
}, | |
"last_run": { | |
"description": "Время последнего запуска задач данного типа в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
} | |
} | |
}, | |
"QuicksearchSuggest": { | |
"description": "Варианты подсказок для быстрого поиска", | |
"properties": { | |
"task": { | |
"$ref": "#/definitions/QuicksearchSuggestObject", | |
"description": "Совпадение с объектом задачи" | |
}, | |
"task_type": { | |
"$ref": "#/definitions/SuggestType", | |
"description": "Совпадение с классом задач" | |
}, | |
"resource": { | |
"$ref": "#/definitions/QuicksearchSuggestObject", | |
"description": "Совпадение с объектом ресурса" | |
}, | |
"resource_type": { | |
"$ref": "#/definitions/SuggestType", | |
"description": "Совпадение с классом ресурса" | |
}, | |
"group": { | |
"$ref": "#/definitions/SuggestGroup", | |
"description": "Совпадение с именем группы" | |
} | |
} | |
}, | |
"QuicksearchSuggestObject": { | |
"description": "Описание совпадения с объектом", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Идентификатор объекта" | |
}, | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
}, | |
"type": { | |
"type": "string", | |
"description": "Класс (тип) объекта" | |
}, | |
"status": { | |
"type": "string", | |
"description": "Состояние объекта" | |
}, | |
"owner": { | |
"type": "string", | |
"description": "Владелец объекта" | |
}, | |
"match": { | |
"$ref": "#/definitions/QuicksearchSuggestObjectMatch", | |
"description": "Информация для отображения совпадения поискового запроса" | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"type", | |
"status", | |
"owner", | |
"match" | |
] | |
}, | |
"SuggestType": { | |
"description": "Описание совпадения с классом (типом) объектов", | |
"properties": { | |
"type": { | |
"type": "string", | |
"description": "Класс (тип) объектов" | |
}, | |
"color": { | |
"type": "string", | |
"description": "Цвет типа задачи для отображении в графиках и статистике" | |
}, | |
"owners": { | |
"description": "Список владельцев задачи", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"description": { | |
"type": "string", | |
"description": "Описание класса объектов, заданное в коде задачи" | |
} | |
}, | |
"required": [ | |
"type", | |
"color", | |
"owners", | |
"description" | |
] | |
}, | |
"QuicksearchSuggestObjectMatch": { | |
"description": "Информация для отображения совпадения поискового запроса", | |
"properties": { | |
"highlights": { | |
"$ref": "#/definitions/QuicksearchSuggestObjectMatchHighlight", | |
"description": "Информация для отображения подстроки совпадения запроса" | |
}, | |
"score": { | |
"type": "number", | |
"description": "Итоговая оценка совпадения" | |
} | |
}, | |
"required": [ | |
"highlights", | |
"score" | |
] | |
}, | |
"QuicksearchSuggestObjectMatchHighlight": { | |
"description": "Информация для отображения подстроки совпадения запроса", | |
"properties": { | |
"type": { | |
"type": "array", | |
"items": { | |
"type": "array", | |
"items": { | |
"type": "integer", | |
"format": "int32" | |
} | |
}, | |
"description": "Список пар (первый и последний символ) подстроки совпадения типа объекта" | |
}, | |
"description": { | |
"type": "array", | |
"items": { | |
"type": "array", | |
"items": { | |
"type": "integer", | |
"format": "int32" | |
} | |
}, | |
"description": "Список пар (первый и последний символ) подстроки совпадения описания объекта" | |
} | |
} | |
}, | |
"SuggestGroup": { | |
"description": "Описание совпадения с группой пользователей", | |
"properties": { | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
}, | |
"name": { | |
"type": "string", | |
"description": "Имя группы" | |
}, | |
"priority_limits": { | |
"$ref": "#/definitions/GroupPriorityLimits", | |
"description": "Максимально допустимые приоритеты задачи, создаваемой в этой группе" | |
} | |
}, | |
"required": [ | |
"url", | |
"name", | |
"priority_limits" | |
] | |
}, | |
"SuggestClient": { | |
"description": "Доступные варианты выбора имен клиентов, моделей CPU и платформ для заданного запроса", | |
"properties": { | |
"platforms": { | |
"type": "array", | |
"description": "Список доступных платформ для заданного фильтра", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"cpu_models": { | |
"type": "array", | |
"description": "Список доступных моделей CPU для заданного фильтра", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"hosts": { | |
"type": "array", | |
"description": "Список доступных клиентов для заданного фильтра", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"platforms", | |
"cpu_models", | |
"hosts" | |
] | |
}, | |
"TaskNew": { | |
"description": "Данные для создания задачи. Задаётся либо type, либо source, либо scheduler_id", | |
"properties": { | |
"type": { | |
"description": "Тип задачи (взаимоисключающий с параметрами source и scheduler_id)", | |
"type": "string" | |
}, | |
"source": { | |
"description": "Идентификатор задачи для копирования (взаимоисключающий с параметрами type и scheduler_id)", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"scheduler_id": { | |
"description": "Идентификатор планировщика, из которого берётся шаблон задачи (взаимоисключающий с параметрами source и type)", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"children": { | |
"description": "Отметить новую задачу как дочернюю по отношению к задаче в текущей сессии авторизации", | |
"type": "boolean" | |
}, | |
"context": { | |
"description": "Значения, которыми будет обновлён контекст задачи после её создания.", | |
"type": "object" | |
} | |
} | |
}, | |
"TaskBase": { | |
"description": "Базовые данные о задаче. Вообще, это должен быть базовый класс для типов `TaskListItem` и `Task`, однако, судя по всему, swagger-ui не понимает наследования, поэтому свойства этого класса будут тупо скопированы", | |
"properties": { | |
"id": { | |
"description": "Глобальный идентификатор задачи", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"url": { | |
"description": "Ссылка для получения данных об объекте", | |
"type": "string" | |
}, | |
"parent": { | |
"description": "Ссылка на родительскую задачу", | |
"$ref": "#/definitions/TaskParent" | |
}, | |
"rights": { | |
"description": "Максимально возможные права на данную задачу у текущего пользователя", | |
"type": "string", | |
"enum": [ | |
"read", | |
"write" | |
] | |
}, | |
"priority": { | |
"$ref": "#/definitions/TaskPriority" | |
}, | |
"requirements": { | |
"$ref": "#/definitions/TaskRequirements" | |
}, | |
"important": { | |
"description": "Флаг важности задачи", | |
"type": "boolean" | |
}, | |
"status": { | |
"description": "Текущее состояние задачи", | |
"type": "string" | |
}, | |
"type": { | |
"description": "Класс (тип) задачи", | |
"type": "string" | |
}, | |
"scores": { | |
"description": "Оценка успешности выполнения последних 10 запусков", | |
"type": "integer", | |
"minimum": 1, | |
"maximum": 10 | |
}, | |
"description": { | |
"description": "Определяемое пользователем описание задачи", | |
"type": "string" | |
}, | |
"author": { | |
"description": "Автор задачи", | |
"type": "string" | |
}, | |
"owner": { | |
"description": "Владелец задачи", | |
"type": "string" | |
}, | |
"time": { | |
"$ref": "#/definitions/TaskTime", | |
"description": "Временные метки задач" | |
}, | |
"execution": { | |
"$ref": "#/definitions/TaskExecution", | |
"description": "Данные об исполняющейся задачи" | |
} | |
}, | |
"required": [ | |
"id", | |
"rights", | |
"priority", | |
"requirements", | |
"important", | |
"status", | |
"type", | |
"scores", | |
"description", | |
"author", | |
"owner", | |
"time" | |
] | |
}, | |
"TaskExecution": { | |
"description": "Данные об исполняющейся задачи", | |
"properties": { | |
"client": { | |
"description": "Идентификатор клиента, исполняющего задачу", | |
"$ref": "#/definitions/ClientRef" | |
}, | |
"current": { | |
"type": "integer", | |
"format": "int32", | |
"description": "Прошедшее время в секундах с момента начала исполнения задачи" | |
}, | |
"estimated": { | |
"type": "integer", | |
"format": "int32", | |
"description": "Ожидаемое время в секундах исполнения задачи" | |
}, | |
"action": { | |
"$ref": "#/definitions/TaskExecutionAction", | |
"description": "Определяемое кодом задачи текущее действие" | |
}, | |
"ps_url": { | |
"type": "string", | |
"description": "Ссылка на HTTP-ручку отдающую список процессов задачи" | |
}, | |
"shell_url": { | |
"type": "string", | |
"description": "Ссылка на Shell для отладки задачи из UI" | |
} | |
}, | |
"required": [ | |
"client", | |
"current", | |
"estimated" | |
] | |
}, | |
"TaskExecutionAction": { | |
"description": "Определяемое кодом задачи текущее действие", | |
"properties": { | |
"message": { | |
"description": "Текстовое описание текущего действия", | |
"type": "string" | |
}, | |
"duration": { | |
"type": "integer", | |
"format": "int32", | |
"description": "Прошедшее время в секундах с момента начала исполнения действия" | |
} | |
}, | |
"required": [ | |
"message", | |
"duration" | |
] | |
}, | |
"TaskExecutionUpdate": { | |
"description": "Данные для обновления информации об исполняющейся задаче", | |
"properties": { | |
"description": { | |
"type": "string", | |
"description": "Инфoрмация для пользователя, о процессе выполнения задачи" | |
}, | |
"action": { | |
"type": "string", | |
"description": "Определяемое кодом задачи текущее действие" | |
}, | |
"disk_usage": { | |
"description": "Информация по потреблению дискового пространства задачей в процессе ее выполнени", | |
"$ref": "#/definitions/TaskResultsDiskUsage" | |
} | |
} | |
}, | |
"TaskTime": { | |
"description": "Базовые временные метки задач", | |
"properties": { | |
"created": { | |
"description": "Время создания задачи в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"updated": { | |
"description": "Время последнего изменения задачи в UTC в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"created", | |
"updated" | |
] | |
}, | |
"TaskRelease": { | |
"description": "Информация связанная с релизами задачи.", | |
"properties": { | |
"resources": { | |
"description": "Список ресурсов к релизу, с пользователями которые могут производить их релиз.", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ReleaseResource" | |
} | |
}, | |
"template": { | |
"description": "Информация для заполнения информации о релизе.", | |
"$ref": "#/definitions/ReleaseTemplate" | |
}, | |
"url": { | |
"description": "Ссылка для получения данных о релизе", | |
"type": "string" | |
}, | |
"id": { | |
"description": "Id релиза", | |
"type": "integer", | |
"format": "int64" | |
} | |
} | |
}, | |
"TasksList": { | |
"description": "Список задач с мета-информацией", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskListItem" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total" | |
] | |
}, | |
"TaskListItem": { | |
"description": "Элемент списка задач", | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/TaskBase" | |
} | |
], | |
"properties": { | |
"children": { | |
"type": "array", | |
"description": "Список дочерних задач с их статусами", | |
"items": { | |
"type": "object", | |
"properties": { | |
"key": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Идентификатор дочерней задачи" | |
}, | |
"value": { | |
"type": "string", | |
"description": "Состояние дочерней задачи" | |
} | |
}, | |
"required": [ | |
"key", | |
"value" | |
] | |
} | |
}, | |
"short_task_result": { | |
"type": "object", | |
"description": "Результат метода task.get_short_task_result(). Присутствует только в запросах, сделаных пользователями, авторизованными через WEB (для new UI)." | |
} | |
}, | |
"required": [ | |
"url" | |
] | |
}, | |
"Task": { | |
"description": "Детальная информация о задаче", | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/TaskBase" | |
} | |
], | |
"properties": { | |
"release": { | |
"$ref": "#/definitions/TaskRelease", | |
"description": "Информация о релизе к задаче." | |
}, | |
"scheduler": { | |
"description": "Ссылка планировщик, породивший задачу", | |
"$ref": "#/definitions/TaskParent" | |
}, | |
"kill_timeout": { | |
"description": "Максимально разрешенное время исполнения задачи в секундах", | |
"type": "integer", | |
"format": "int32" | |
}, | |
"fail_on_any_error": { | |
"description": "Переводить задачу в состояние FAILURE в случае возникновения любой ошибки", | |
"type": "boolean" | |
}, | |
"tasks_archive_resource": { | |
"description": "ID ресурса с архивом кода задач (SANDBOX_TASKS_ARCHIVE) к исполнению", | |
"type": "integer" | |
}, | |
"hidden": { | |
"description": "Признак скрытой задачи", | |
"type": "boolean" | |
}, | |
"se_tags": { | |
"description": "Доступные теги для ограничения количества одновременно исполняемых задач", | |
"type": "array", | |
"items": { | |
"type": "string", | |
"description": "Доступные теги для ограничения количества одновременно исполняемых задач" | |
} | |
}, | |
"se_tag": { | |
"description": "Тег для ограничения количества одновременно исполняемых задач", | |
"type": "string" | |
}, | |
"lock_host": { | |
"description": "Хост который взял задачу на исполнение (имеет значение если задача в состоянии ENQUEUED)", | |
"type": "string" | |
}, | |
"max_restarts": { | |
"description": "Максимальное количество автоматических перезапусков из статуса TEMPORARY", | |
"type": "integer" | |
}, | |
"notifications": { | |
"description": "Настройки уведомлений", | |
"$ref": "#/definitions/TaskNotifications" | |
}, | |
"results": { | |
"description": "Результаты выполнения задачи", | |
"$ref": "#/definitions/TaskResults" | |
}, | |
"short_task_result": { | |
"type": "object", | |
"description": "Результат метода task.get_short_task_result(). Присутствует только в запросах, сделаных пользователями, авторизованными через WEB (для new UI)." | |
}, | |
"resources": { | |
"description": "Ресурсы, порожденные задачей", | |
"$ref": "#/definitions/TaskSubCollection" | |
}, | |
"dependant": { | |
"description": "Список задач, зависящих от данной задачи", | |
"$ref": "#/definitions/TaskSubCollection" | |
}, | |
"children": { | |
"description": "Список дочерних задач", | |
"$ref": "#/definitions/TaskSubCollection" | |
}, | |
"audit": { | |
"description": "История зарегистрированных событий для данной задачи", | |
"$ref": "#/definitions/TaskSubCollection" | |
}, | |
"queue": { | |
"description": "Информация о состоянии очереди для данной задачи", | |
"$ref": "#/definitions/TaskSubCollection" | |
}, | |
"logs": { | |
"description": "Список с доступными файлами логов исполнения задачи", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskLogItem", | |
"description": "Ссылка на лог исполнения задачи" | |
} | |
} | |
}, | |
"required": [ | |
"url", | |
"kill_timeout", | |
"fail_on_any_error", | |
"tasks_archive_resource", | |
"hidden", | |
"notifications" | |
] | |
}, | |
"TaskUpdate": { | |
"description": "Информация об обновляемой задаче", | |
"properties": { | |
"priority": { | |
"$ref": "#/definitions/TaskPriority" | |
}, | |
"important": { | |
"description": "Флаг важности задачи", | |
"type": "boolean" | |
}, | |
"description": { | |
"description": "Определяемое пользователем описание задачи", | |
"type": "string" | |
}, | |
"owner": { | |
"description": "Владелец задачи", | |
"type": "string" | |
}, | |
"kill_timeout": { | |
"description": "Максимально разрешенное время исполнения задачи в секундах", | |
"type": "integer", | |
"format": "int32" | |
}, | |
"fail_on_any_error": { | |
"description": "Переводить задачу в состояние FAILURE в случае возникновения любой ошибки", | |
"type": "boolean" | |
}, | |
"tasks_archive_resource": { | |
"description": "ID ресурса с архивов кода задач (SANDBOX_TASKS_ARCHIVE) к исполнению", | |
"type": "integer" | |
}, | |
"hidden": { | |
"description": "Признак скрытой задачи", | |
"type": "boolean" | |
}, | |
"se_tag": { | |
"description": "Тег для ограничения количества одновременно исполняемых задач", | |
"type": "string" | |
}, | |
"max_restarts": { | |
"description": "Максимальное количество автоматических перезапусков из статуса TEMPORARY", | |
"type": "integer" | |
}, | |
"requirements": { | |
"description": "Требования задачи для запуска", | |
"$ref": "#/definitions/TaskRequirementsUpdate" | |
}, | |
"notifications": { | |
"description": "Настройки уведомлений", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskNotifications", | |
"description": "Правило уведомлений" | |
} | |
}, | |
"custom_fields": { | |
"description": "Обновление определяемых пользователем полей задачи (shortcut to PUT request for '/task/{id}/custom/fields' path)", | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/TaskFieldValidateItem" | |
} | |
} | |
} | |
}, | |
"TaskParent": { | |
"description": "Ссылка на родительскую задачу", | |
"properties": { | |
"id": { | |
"description": "Глобальный идентификатор родительской задачи", | |
"type": "integer", | |
"format": "int64" | |
}, | |
"url": { | |
"description": "URI для получения данных", | |
"type": "string" | |
} | |
} | |
}, | |
"TaskResults": { | |
"description": "Результаты выполнения задачи", | |
"properties": { | |
"info": { | |
"description": "Инфoрмация для пользователя, переданная кодом задачи в процессе выполнения", | |
"type": "string" | |
}, | |
"traceback": { | |
"description": "Python Traceback исключения, приведшего к остановке задачи", | |
"type": "string" | |
}, | |
"disk_usage": { | |
"description": "Информация по потреблению дискового пространства задачей в процессе ее выполнени", | |
"$ref": "#/definitions/TaskResultsDiskUsage" | |
} | |
}, | |
"required": [ | |
"disk_usage" | |
] | |
}, | |
"TaskResultsDiskUsage": { | |
"description": "Информация по потреблению дискового пространства задачей в процессе ее выполнени", | |
"properties": { | |
"max": { | |
"description": "Максимальное количество места, потребленного задачей в процессе выполнения в байтах", | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0 | |
}, | |
"last": { | |
"description": "Количество места, потребленного задачей при завершении в байтах", | |
"type": "integer", | |
"format": "int64", | |
"minimum": 0 | |
} | |
} | |
}, | |
"TaskRequirementsBase": { | |
"description": "Базовая информация о требованиях задачи для запуска", | |
"properties": { | |
"platform": { | |
"type": "string", | |
"description": "Идентификатор платформы, где возможно исполнение задачи" | |
} | |
} | |
}, | |
"TaskRequirements": { | |
"description": "Требования задачи для запуска", | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/TaskRequirementsBase" | |
} | |
], | |
"properties": { | |
"resources": { | |
"$ref": "#/definitions/TaskSubCollection", | |
"description": "Зависимости задачи от внешних по отношению к ней ресурсов" | |
}, | |
"cpu_model": { | |
"type": "string", | |
"description": "Модель CPU, где возможно исполнение задачи" | |
}, | |
"host": { | |
"type": "string", | |
"description": "Идентификатор клиента, где возможно исполнение задачи" | |
}, | |
"disk_space": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Требования задачи к свободному месту на диске" | |
}, | |
"ram": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Требование задачи к RAM в байтах" | |
}, | |
"ramdrive": { | |
"$ref": "#/definitions/TaskRequirementsRamdisk", | |
"description": "Требования задачи к наличию RAM-диска" | |
} | |
}, | |
"required": [ | |
"disk_space" | |
] | |
}, | |
"TaskRequirementsRamdisk": { | |
"description": "Требования задачи к наличию RAM-диска", | |
"properties": { | |
"type": { | |
"description": "Тип требуемого RAM-диска", | |
"type": "string", | |
"enum": [ | |
"tmpfs" | |
] | |
}, | |
"size": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Необходимый объем RAM-диска в байтах" | |
} | |
}, | |
"required": [ | |
"type", | |
"size" | |
] | |
}, | |
"TaskRequirementsUpdate": { | |
"description": "Обновляемые требования задачи для запуска", | |
"properties": { | |
"platform": { | |
"type": "string", | |
"description": "Идентификатор платформы, где возможно исполнение задачи" | |
}, | |
"cpu_model": { | |
"type": "string", | |
"description": "Модель CPU, где возможно исполнение задачи" | |
}, | |
"host": { | |
"type": "string", | |
"description": "Идентификатор клиента, где возможно исполнение задачи" | |
}, | |
"disk_space": { | |
"type": "string", | |
"description": "Требования задачи к свободному месту на диске с суфиксом MB, GB, TB" | |
}, | |
"ram": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Требование задачи к RAM в байтах" | |
} | |
} | |
}, | |
"TaskNotifications": { | |
"description": "Настройки уведомлений", | |
"properties": { | |
"transport": { | |
"type": "string", | |
"description": "Метод доставки уведомлений", | |
"enum": [ | |
"jabber", | |
"email" | |
] | |
}, | |
"statuses": { | |
"type": "array", | |
"description": "Список статусов задачи, при достижении которых происходит отправка данного типа уведомлений", | |
"items": { | |
"type": "string", | |
"description": "Статус задачи" | |
} | |
}, | |
"recipients": { | |
"type": "array", | |
"description": "Список логинов для получения уведомлений", | |
"items": { | |
"type": "string", | |
"description": "Логин пользователя для уведомления" | |
} | |
} | |
}, | |
"required": [ | |
"transport", | |
"statuses", | |
"recipients" | |
] | |
}, | |
"TaskSubCollection": { | |
"description": "Ссылка на коллекцию объектов, владеемых задачей", | |
"properties": { | |
"url": { | |
"type": "string", | |
"description": "URL для получения коллекции" | |
}, | |
"count": { | |
"type": "integer", | |
"format": "int32", | |
"description": "Количество элементов в коллекции" | |
} | |
}, | |
"required": [ | |
"url", | |
"count" | |
] | |
}, | |
"TaskLogItem": { | |
"description": "Ссылка на лог исполнения задачи", | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Имя файла или директории" | |
}, | |
"node_type": { | |
"type": "string", | |
"description": "Тип места назначаения ссылки", | |
"enum": [ | |
"file", | |
"directory" | |
] | |
}, | |
"url": { | |
"type": "string", | |
"description": "Ссылка для получения данных" | |
}, | |
"size": { | |
"type": "integer", | |
"format": "int64", | |
"description": "Размер в байтах (только для директорий)" | |
} | |
}, | |
"required": [ | |
"name", | |
"node_type", | |
"url", | |
"size" | |
] | |
}, | |
"TaskCustomFieldMeta": { | |
"description": "Данные c информацией о поле задачи, определяемых пользователем", | |
"properties": { | |
"type": { | |
"type": "string", | |
"description": "Поле, определяющее метод отображения информации поля" | |
}, | |
"name": { | |
"type": "string", | |
"description": "Идентификатор поля" | |
}, | |
"title": { | |
"type": "string", | |
"description": "Краткое описание поля" | |
}, | |
"description": { | |
"type": "string", | |
"description": "Подробное описание поля" | |
}, | |
"required": { | |
"type": "boolean", | |
"description": "Признак обязательности поля" | |
}, | |
"sub_fields": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
}, | |
"description": "Список полей с условной активацией по значению данного поля" | |
}, | |
"modifers": { | |
"type": "object", | |
"description": "Различные модификаторы режима отображения/валидации поля" | |
}, | |
"context": { | |
"type": "object", | |
"description": "Контекстно-зависимая информация для отображания поля" | |
}, | |
"value": { | |
"type": "object", | |
"description": "Значение поля" | |
} | |
}, | |
"required": [ | |
"type", | |
"name", | |
"title", | |
"required", | |
"value" | |
] | |
}, | |
"TaskCustomFooter": { | |
"description": "Данные c информацией, необходимой для отображения дополнительной секции формы задачи, определяемой пользователем", | |
"properties": { | |
"content": { | |
"type": "object", | |
"description": "Данные, необходимые для отображения" | |
}, | |
"helper": { | |
"type": "string", | |
"description": "Идентификатор процессора для данных" | |
} | |
}, | |
"required": [ | |
"content", | |
"helper" | |
] | |
}, | |
"TaskAuditItem": { | |
"description": "Данные для просмотра зарегистрированных изменений задачи", | |
"properties": { | |
"time": { | |
"type": "string", | |
"format": "date-time", | |
"description": "Время события в UTC в формате ISO 8601" | |
}, | |
"message": { | |
"type": "string", | |
"description": "Дополнительное описание события" | |
}, | |
"status": { | |
"type": "string", | |
"description": "Состояние, в которое перешла задача по событию" | |
}, | |
"author": { | |
"type": "string", | |
"description": "Инициатор события" | |
}, | |
"target": { | |
"type": "string", | |
"description": "Хост, обработавший событие" | |
}, | |
"request_id": { | |
"type": "string", | |
"description": "Уникальный идентификатор запроса, переданный клиентом (для XMLRPC или REST API)" | |
}, | |
"source": { | |
"type": "string", | |
"description": "Сетевой адрес инициатора события" | |
}, | |
"iface": { | |
"type": "string", | |
"description": "Интерфейс, посредством которого инициировано событие", | |
"enum": [ | |
"sys", | |
"rpc", | |
"api", | |
"web" | |
] | |
} | |
}, | |
"required": [ | |
"time", | |
"target", | |
"iface" | |
] | |
}, | |
"TaskAuditHostsItem": { | |
"description": "Данные для просмотра хостов на которых исполнялась задача для вкладки Profile", | |
"properties": { | |
"host": { | |
"type": "string", | |
"description": "Хост, исполнявший задачу (FQDN или IP адрес)" | |
}, | |
"from": { | |
"type": "string", | |
"format": "date-time", | |
"description": "Время начала исполнения в UTC в формате ISO 8601" | |
}, | |
"till": { | |
"type": "string", | |
"format": "date-time", | |
"description": "Время окончания исполнения в UTC в формате ISO 8601" | |
}, | |
"partition": { | |
"type": "string", | |
"description": "Раздел на диске с артефактами задач" | |
} | |
}, | |
"required": [ | |
"host", | |
"from", | |
"partition" | |
] | |
}, | |
"TaskAuditNew": { | |
"description": "Данные для создания нового изменения статуса задачи и его изменения", | |
"properties": { | |
"message": { | |
"type": "string", | |
"description": "Дополнительное описание события" | |
}, | |
"status": { | |
"type": "string", | |
"description": "Состояние, в которое переходит задача" | |
}, | |
"lock": { | |
"type": "boolean", | |
"description": "Блокировать объект задачи на сессию отправляющего хоста" | |
}, | |
"force": { | |
"type": "boolean", | |
"description": "Не проверять корректность перехода состояния задачи" | |
} | |
}, | |
"required": [ | |
"status" | |
] | |
}, | |
"TaskQueueItem": { | |
"description": "Элемент очереди с информацией о клиенте, подходящим для задачи", | |
"properties": { | |
"client": { | |
"$ref": "#/definitions/ClientRef" | |
}, | |
"alive": { | |
"type": "boolean", | |
"description": "Признак доступности клиента" | |
}, | |
"platform": { | |
"type": "boolean", | |
"description": "Признак соответствия платформы клиента требованиям задачи" | |
}, | |
"cpu": { | |
"type": "boolean", | |
"description": "Признак соответствия процессора клиента требованиям задачи" | |
}, | |
"free_space": { | |
"type": "boolean", | |
"description": "Признак наличия свободного места на диске клиента в соответствии требованиям задачи" | |
}, | |
"position": { | |
"$ref": "#/definitions/QueuePosition", | |
"description": "Информация о положении задачи в очереди клиента" | |
} | |
}, | |
"required": [ | |
"client", | |
"alive", | |
"platform", | |
"cpu", | |
"free_space" | |
] | |
}, | |
"ClientRef": { | |
"description": "Информация о клиенте", | |
"properties": { | |
"id": { | |
"type": "string", | |
"description": "Идентификатор клиента" | |
}, | |
"url": { | |
"type": "string", | |
"description": "Ссылка для получения данных об объекте" | |
} | |
}, | |
"required": [ | |
"id", | |
"url" | |
] | |
}, | |
"QueuePosition": { | |
"description": "Информация о положении задачи в очереди клиента", | |
"properties": { | |
"index": { | |
"type": "integer", | |
"format": "int32", | |
"description": "Текущее положение в очереди" | |
}, | |
"size": { | |
"type": "integer", | |
"format": "int32", | |
"description": "Размер очереди" | |
} | |
}, | |
"required": [ | |
"index", | |
"size" | |
] | |
}, | |
"TaskFieldValidateItem": { | |
"description": "Данные для валидации поля формы задачи", | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Наименование поля задачи" | |
}, | |
"value": { | |
"type": "object", | |
"description": "Данные поля" | |
} | |
}, | |
"required": [ | |
"name", | |
"value" | |
] | |
}, | |
"TaskFieldValidateResultItem": { | |
"description": "Результат валидации поля задачи", | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Наименование поля задачи" | |
}, | |
"status": { | |
"description": "Результат выполнения операции", | |
"type": "string", | |
"enum": [ | |
"SUCCESS", | |
"WARNING", | |
"ERROR" | |
] | |
}, | |
"message": { | |
"description": "Сообщение от сервера в случае ошибки или предупреждения", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"name", | |
"status" | |
] | |
}, | |
"TaskTimeTrigger": { | |
"description": "Данные триггера запуска задачи по наступлении определенного момента времени", | |
"properties": { | |
"id": { | |
"description": "Уникальный 16ти-знаковый идентификатор триггера", | |
"type": "string" | |
}, | |
"period": { | |
"description": "Данные о момент срабатывания триггера в секундах", | |
"$ref": "#/definitions/TaskTimeTriggerPeriod" | |
}, | |
"time": { | |
"description": "Данные о времени триггера", | |
"$ref": "#/definitions/TaskTimeTriggerTime" | |
} | |
}, | |
"required": [ | |
"id", | |
"period", | |
"time" | |
] | |
}, | |
"TaskTimeTriggerPeriod": { | |
"description": "Данные о момент срабатывания триггера в секундах", | |
"properties": { | |
"original": { | |
"description": "Момент срабатывания триггера в секундах от момента регистрации", | |
"format": "int32", | |
"type": "integer" | |
}, | |
"remaining": { | |
"description": "Оставшееся время до срабатывания триггера в секундах от момента регистрации", | |
"format": "int32", | |
"type": "integer" | |
} | |
}, | |
"required": [ | |
"original", | |
"remaining" | |
] | |
}, | |
"TaskTimeTriggerTime": { | |
"description": "Данные о времени триггера", | |
"properties": { | |
"registered": { | |
"description": "UTC время регистрации триггера в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
}, | |
"expected": { | |
"description": "Ожидаемое UTC время срабатывание триггера в формате ISO 8601", | |
"format": "date-time", | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"registered", | |
"expected" | |
] | |
}, | |
"TaskTimeTriggerCreate": { | |
"description": "Данные для регистрации триггера запуска задачи по наступлении определенного момента времени", | |
"properties": { | |
"period": { | |
"description": "Момент срабатывания триггера в секундах от момента регистрации", | |
"format": "int32", | |
"type": "integer" | |
} | |
}, | |
"required": [ | |
"period" | |
] | |
}, | |
"TaskTaskTrigger": { | |
"description": "Данные триггера запуска задачи по изменению статуса других задач", | |
"properties": { | |
"id": { | |
"description": "Уникальный 16ти-знаковый идентификатор триггера", | |
"type": "string" | |
}, | |
"target": { | |
"description": "Идентификатор наблюдаемой задачи", | |
"format": "int32", | |
"type": "integer" | |
}, | |
"statuses": { | |
"description": "Список ожидаемых статусов задачи", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"id", | |
"target", | |
"statuses" | |
] | |
}, | |
"TaskTaskTriggerCreate": { | |
"description": "Данные для регистрации триггера запуска задачи по изменению статуса других задач", | |
"properties": { | |
"target": { | |
"description": "Идентификатор наблюдаемой задачи", | |
"format": "int32", | |
"type": "integer" | |
}, | |
"statuses": { | |
"description": "Список ожидаемых статусов задачи", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"target", | |
"statuses" | |
] | |
}, | |
"User": { | |
"description": "Информация о пользователе", | |
"properties": { | |
"login": { | |
"type": "string", | |
"description": "Логин пользователя, который авторизован в данный момент в системе" | |
}, | |
"role": { | |
"type": "string", | |
"description": "Роль текущего пользователя. Роль 'trusted' позволяет выбирать приоритет задач выше USER.NORMAL", | |
"enum": [ | |
"administrator", | |
"trusted", | |
"regular", | |
"anonymous" | |
] | |
} | |
}, | |
"required": [ | |
"login", | |
"role" | |
] | |
}, | |
"VaultList": { | |
"description": "Список элементов хранилища с мета-информацией", | |
"properties": { | |
"skipped": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для пропускания из выборки" | |
}, | |
"limit": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Указанное в запросе количество записей для возврата" | |
}, | |
"total": { | |
"type": "integer", | |
"format": "int32", | |
"minimum": 0, | |
"description": "Количество записей во всей выборке" | |
}, | |
"items": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Vault" | |
} | |
} | |
}, | |
"required": [ | |
"skipped", | |
"limit", | |
"total" | |
] | |
}, | |
"Vault": { | |
"description": "Информация об элементе хранилища", | |
"properties": { | |
"id": { | |
"description": "Уникальный идентификатор элемента", | |
"type": "integer", | |
"format": "int32" | |
}, | |
"url": { | |
"description": "URL получения детальной информации об элементе хранилища", | |
"type": "string" | |
}, | |
"name": { | |
"description": "Имя элемента", | |
"type": "string" | |
}, | |
"rights": { | |
"description": "Максимально возможные права на данный ресурс у текущего пользователя", | |
"type": "string", | |
"enum": [ | |
"read", | |
"write" | |
] | |
}, | |
"data_length": { | |
"description": "Длина данных в элементе хранилища", | |
"type": "integer", | |
"format": "int32" | |
}, | |
"owner": { | |
"description": "Пользователь или группа, кто может модифицировать данные элемента", | |
"type": "string" | |
}, | |
"shared": { | |
"description": "Список пользователей/групп, кому доступен элемент", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"id", | |
"url", | |
"name", | |
"rights", | |
"data_length", | |
"owner", | |
"shared" | |
] | |
}, | |
"VaultCreate": { | |
"description": "Регистрация нового элемента хранилища", | |
"properties": { | |
"name": { | |
"description": "Имя элемента хранилища", | |
"type": "string" | |
}, | |
"owner": { | |
"description": "Пользователь или группа, кто может модифицировать данные элемента", | |
"type": "string" | |
}, | |
"data": { | |
"description": "Данные элемента хранилища", | |
"type": "string" | |
}, | |
"shared": { | |
"description": "Список пользователей/групп, кому доступен элемент", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"name", | |
"owner", | |
"data" | |
] | |
}, | |
"VaultUpdate": { | |
"description": "Изменение информации об элементе хранилища", | |
"properties": { | |
"name": { | |
"description": "Имя элемента хранилища", | |
"type": "string" | |
}, | |
"owner": { | |
"description": "Пользователь или группа, кто может модифицировать данные элемента", | |
"type": "string" | |
}, | |
"data": { | |
"description": "Данные элемента хранилища", | |
"type": "string" | |
}, | |
"shared": { | |
"description": "Список пользователей/групп, кому доступен элемент", | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment