Документация Public API v1
Общее
API используется для автоматизации рутинных задач в облаке и позволяет управлять элементами инфраструктуры с помощью HTTP-запросов.
Формат запросов
При выполнении запроса, ID сущности передается в URL.
Остальные параметры передаются в теле запроса.
Токен передается в заголовке запроса (см. “Авторизация”).
Параметры ответа возвращаются в теле ответа.
Ошибки и коды ответа
В данном разделе представлено описание структуры ответа, ошибок и кодов. Сервис возвращает тело ответа в формате JSON.
Структура
Успешный ответ может не содержать тела, но содержит код ответа.
Ошибочный ответ содержит объект error
, который содержит в себе поля: code
— числовой идентификатор и message
— строковое пояснение к ошибке.
{
"code": 400,
"title": "Bad request",
"error": {
"message": "Volume must be in ('in-use',) statuses"
}
}
Успешный ответ имеет следующую структуру:
{
"code": 200,
"title": "Ok",
"result": {
...
}
}
Или такую:
{
"code": 200,
"title": "Ok",
"results": [
...
]
}
Где result
— объект, содержащий информацию о единичном ресурсе, а results
— массив таких объектов.
Успешный ответ
- 200 (OK) — запрос выполнен успешно, подробности в теле ответа.
- 201 (Created) — объект успешно создан.
- 202 (Accepted) — запрос на создание объекта принят.
- 204 (No Content) — запрос на удаление объекта принят.
Ошибки
Клиентские ошибки
- 400 (Bad request) — неверные данные запроса. Также возникает, если в параметре передан неверный тип, например,
str
вместоint
. - 401 (Unauthorized) — авторизация не пройдена или адрес источника заблокирован сервисом.
- 403 (Forbidden) — доступ к объекту с текущими правами запрещен.
- 404 (Not Found) — объект не найден.
- 405 (Method Not Allowed) — для данного объекта не применяется указанный метод.
- 409 (Conflict) — запрос не применим из-за текущего статуса ресурса, например, нельзя перезагрузить сервер, если изменяется количество ресурсов.
- 429 (Too Many Requests) — слишком много запросов в единицу времени. Применяется при лимитировании ресурса.
Ошибки сервиса
- 500 (Internal Server Error) — общая ошибка, сигнализирующая о проблеме.
Текстовый код ошибки
В теле ответа присутствует текстовый код ошибки. Коды могут добавляться, но не могут быть изменены или удалены в рамках одной мажорной версии API. Примеры кодов:
Bad request
— в запросе передан неверный аргументInternalError
— проблема в работе сервисаToo many Requests
— сработало ограничение на количество операций с данным ресурсом в единицу времениNot found
— ресурс не найденForbidden
— доступ к ресурсу запрещенUnauthorized
— авторизация не пройдена
Методы
Методы делятся на идемпотентные и неидемпотентные.
Метод HTTP является идемпотентным, если повторный идентичный запрос, сделанный один или несколько раз подряд, имеет один и тот же эффект, не изменяющий состояние ресурса инфраструктуры.
GET
Идемпотентный.
Запрос возвращает объект или список объектов. На GET
запрос к любому ресурсу сервис генерирует ответ, содержащий следующие поля:
- именованный объект — объект верхнего уровня или список объектов (например server или servers)
- id — уникальный идентификатор в рамках сервиса.
- status — текущий статус объекта (см ниже).
- links — список состоящий из объектов, которые содержат ссылку на подробную информацию о ресурсе (сервер, плавающий IP, диск или снапшот). В будущем в этом списке появятся ссылки на другие версии API.
rel
указывает версию API.
При успешном запросе возвращает 200 (ОК) с телом ответа или 404 (Not Found) без тела, если ресурс не найден.
POST
Неидемпотентный.
Возвращает 201 (Created), если объект успешно создан.
Если объект создается, ресурс возвращает 202 (Accepted). В этом случае изменение статуса объекта отображается в поле объекта status
, при GET-запросе.
При запросе с конкретным ID, например, POST /servers/1
— сервис возвращает 404 (Not Found) с текстовым кодом Not Found
.
DELETE
Неидемпотентный.
Возвращает 204 (No Content), если объект удалось удалить или соответствующую ошибку.
Может быть использован в длительных операциях. В этом случае изменение статуса объекта отображается в поле объекта status
при GET-запросе.
Фильтрация и сортировка
Сервис поддерживает сортировку и фильтрацию с помощью параметров запроса.
Сортировка поддерживается для разных страниц в режиме пагинации.
Ключевые слова для фильтрации:
{field_name}__{условие}={значение}
Условия:
- gt: > (Больше чем)
- gte: >= (Больше или равно)
- lt: < (Меньше чем)
- lte: <= (Меньше или равно)
- range: field_name >= value1 and field_name <= value2
value1 или value2 могу быть пустыми:
{field_name}__range={value1}:{value2}
- in:
{field_name}__in={value1},{value2},{value3},{value4}
Ключевое слово для сортировки:
order={field_name}
для сортировки по возрастанию (ASC)order=-{field_name}
для сортировки по убыванию (DESC)
Пагинация
Длинные коллекции объектов поддерживают пагинацию на стороне клиента. В параметрах запроса передается:
limit
— указывающий на количество записей, которые клиент хочет получитьoffset
— смещение, относительно начала списка
Если параметры не доступны для конкретного ресурса, сервис вернет ошибку с кодом 400.
Инфраструктура
В этом разделе описаны методы работы с инфраструктурными сущностями проекта.
Проект
Логическая структура, содержащая в себе другие элементы, такие как: серверы, диски, IP-адреса и т.д.
Проекты (список)
Параметры запроса
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив проектов
- results.itemobject
Объект, содержащий параметры проекта
- results.item.created_instring
Дата создания проекта
- results.item.has_abuseboolean
Наличие неразрешенного тикета за нарушение правил. Если это значение
true
, то проект может быть остановлен в течение 24 часов - results.item.idstring
Уникальный идентификатор проекта
- results.item.namestring
Название проекта
- results.item.statusstring
Статус проекта
- results.item.stopping_reasonstring
Причина остановки
- results.item.summaryobject
Общая информация о проекте
- results.item.summary.floating_ipsinteger
Количество используемых плавающих IP адресов
- results.item.summary.networksinteger
Количество используемых сетей
- results.item.summary.serversinteger
Количество используемых серверов
- results.item.summary.volumesinteger
Количество используемых дисков
Проекты (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "status": "ACTIVE", "summary": { "servers": 3, "volumes": 2, "floating_ips": 1, "networks": 1 }, "name": "visionary-fractal-tench", "id": "81de94b0-5749-4dea-aa2d-f8a0d328dfcc", "stopping_reason": null } ], "count": 1 }
Образы операционных систем (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив образов ОС
- results.itemobject
Объект, содержащий параметры образов ОС
- results.item.idstring
Уникальный идентификатор образа
- results.item.namestring
Наименование образа
- results.item.operation_systemobject
Объект операционной системы с параметрами ниже
- results.item.operation_system.distributionstring
Название дистрибутива
- results.item.operation_system.os_familystring
Семейство операционных систем
- results.item.operation_system.versionstring
Версия операционной системы
Образы операционных систем (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/images" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "operation_system": { "version": "10", "distribution": "debian", "os_family": "linux" }, "name": "Debian 10", "id": "29efc774-eeba-45ac-86e1-3a806eeaee45" }, { "operation_system": { "version": "20", "distribution": "ubuntu", "os_family": "linux" }, "name": "Ubuntu 20", "id": "a9a954ea-40ee-463a-814e-49070317556c" }, { "operation_system": { "version": "8", "distribution": "centos", "os_family": "linux" }, "name": "CentOS 8", "id": "d09ea90e-0a54-4342-b637-e31a022a47ab" }, ], "count": 3 }
Лимиты проекта (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта, для которого получаем список образов ОС. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив лимитов
- results.itemobject
Объект, содержащий параметры лимита
- results.item.maxinteger
Верхнее ограничение по использованию ресурса
- results.item.measurestring
Единица измерения
- results.item.namestring
Наименование ресурса
- results.item.usedinteger
Количество использованного ресурса
Лимиты проекта (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/limits" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "max": 0, "name": "bandwidth" }, { "max": 300, "name": "disk-space", "used": 60 }, { "max": 5, "name": "floating-ips", "used": 1 }, { "max": 5, "name": "servers", "used": 3 }, { "max": 100, "name": "ssh-keypair", "used": 1 }, { "max": 10, "name": "volumes", "used": 3 } ], "count": 6 }
Рецепты
Также называемое в сервисе Приложениями - это набор ПО, который может быть предустановлен автоматически вместе с операционной системой после создания сервера.
Рецепты (список)
Параметры запроса
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив рецептов
- results.itemobject
Объект, содержащий параметры рецепта
- results.item.idstring
Уникальный идентификатор рецепта
- results.item.min_diskinteger
Минимально допустимый объём диска для установки рецепта
- results.item.min_raminteger
Минимально допустимое количество RAM для установки рецепта
- results.item.min_vcpusinteger
Минимально допустимое количество vCPU для установки рецепта
- results.item.namestring
Наименование рецепта
- results.item.suitable_imagesarray
Список, содержащий объекты образов ОС, с которыми возможна установка рецепта
- results.item.suitable_images.itemstring
Объект, содержащий информацию об образах ОС, с которыми возможна установка рецепта
Рецепты (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/recipes" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
Объектное хранилище S3
Хранилище для долговременного хранения данных в облаке. Для использования хранилища необходимо создать отдельного пользователя S3. Данные в хранилище находятся в специальных объектах - бакетах.
Пользователи (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив пользователей S3
- results.itemobject
Объект, содержащий параметры пользователя S3
- results.item.canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- results.item.idstring
Уникальный идентификатор пользователя S3
- results.item.max_bucketsinteger
Лимит пользователя по количеству бакетов
- results.item.namestring
Имя пользователя S3. Может быть неуникальным.
- results.item.quotasarray
Массив лимитов пользователя S3
- results.item.quotas.itemobject
Объект, содержащий информацию о лимите пользователя
- results.item.quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- results.item.quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- results.item.quotas.item.typestring
Тип лимита пользователя - для каждого бакета, либо общая для пользователя S3
- results.item.statusstring
Статус пользователя S3
- results.item.tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Пользователи (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/s3_users" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
Создать пользователя
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
- bucket_quotaobject
Объект, который содержит параметры лимита пользователя для каждого бакета. При создании пользователя параметр необязательный . В лимите можно указать максимальное количество объектов в бакете и максимальный объем данных в Кб.
- bucket_quota.max_objectsinteger,
nullМаксимально допустимое количество объектов
- bucket_quota.max_sizeinteger,
nullМаксимально допустимый объем данных в Кб
- canonical_name*string
Каноническое имя пользователя S3. Уникальное имя пользователя.
- default_bucketboolean
При значении true создаст пользователя S3 вместе с бакетом
- max_buckets*integer
Лимит по количеству бакетов создаваемого пользователя S3
- namestring
Имя пользователя S3. Может быть неуникальным.
- user_quota*object
Объект, который содержит параметры общего лимита пользователя. В лимите необходимо указать максимальный занимаемый объем данных в Кб, также можно указать максимальное количество объектов (бакеты не учитываются).
- user_quota.max_objectsinteger,
nullМаксимально допустимое количество объектов
- user_quota.max_size*integer
Максимально допустимый объем данных в Кб
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит пользователя по количеству бакетов
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Создать пользователя
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/s3_users" # you need to replace JWT, "keys" and "values" here with your real data # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, data = {'key': 'value'})
Удалить пользователя
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
Удалить пользователя
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Пользователь (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий параметры пользователя S3
- result.canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- result.idstring
Уникальный идентификатор пользователя S3
- result.max_bucketsinteger
Лимит пользователя по количеству бакетов
- result.namestring
Имя пользователя S3. Может быть неуникальным.
- result.quotasarray
Массив лимитов пользователя S3
- result.quotas.itemobject
Объект, содержащий информацию о лимите
- result.quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- result.quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- result.quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- result.statusstring
Статус пользователя S3
- result.tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Пользователь (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
Получение ключей доступа пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- access_keystring
Уникальный идентификатор ключа пользователя S3
- secret_keystring
Секретный ключ пользователя S3
- userstring
Уникальный идентификатор пользователя в рамках хранилища S3
Получение ключей доступа пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/keys" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
Сброс ключей доступа пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- access_keystring
Уникальный идентификатор ключа пользователя S3
- secret_keystring
Секретный ключ пользователя S3
- userstring
Уникальный идентификатор пользователя в рамках хранилища S3
Сброс ключей доступа пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/keys" # you need to replace JWT, "keys" and "values" here with your real data # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, data = {'key': 'value'})
Изменение простых полей пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
- name*string
Новое имя пользователя S3. Неуникальное имя пользователя.
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит пользователя по количеству бакетов
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Изменение простых полей пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}" # you need to replace JWT, "keys" and "values" here with your real data # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.patch(url = URL, headers = HEADERS, data = {'key': 'value'})
Изменение лимитов пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
- bucket_quotaobject
Объект, который содержит параметры лимита для каждого бакета. Лимит может содержать ограничения на максимальное количество объектов в бакете и максимальный объем данных в Кб
- bucket_quota.max_objectsinteger,
nullМаксимально допустимое количество объектов
- bucket_quota.max_sizeinteger,
nullМаксимально допустимый объем данных в Кб
- max_bucketsinteger
Максимальное количество бакетов пользователя
- user_quotaobject
Объект, который содержит параметры общего лимита пользователя. В лимите обязательно указан максимальный занимаемый объем данных в Кб, также можно содержать ограничение на максимальное количество объектов (бакеты не учитываются).
- user_quota.max_objectsinteger,
nullМаксимально допустимое количество объектов
- user_quota.max_sizeinteger
Максимально допустимый объем данных в Кб
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит по количеству бакетов создаваемого пользователя S3
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Изменение лимитов пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/quotas" # you need to replace JWT, "keys" and "values" here with your real data # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.patch(url = URL, headers = HEADERS, data = {'key': 'value'})
Остановка пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит пользователя по количеству бакетов
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Остановка пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/suspend" # you need to replace JWT, "keys" and "values" here with your real data # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, data = {'key': 'value'})
Включение пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит по количеству бакетов
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Включение пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/unsuspend" # you need to replace JWT, "keys" and "values" here with your real data # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, data = {'key': 'value'})
Серверы
Блок вычислительных ресурсов, к которому подключаются диски и IP-адреса.
Серверы (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив серверов
- results.itemobject
Объект, содержащий параметры сервера
- results.item.created_instring
Дата создания сервера
- results.item.disk_dataarray
Список дисков, которые подключены к серверу
- results.item.disk_data.itemobject
Объект, содержащий информацию о диске
- results.item.disk_data.item.idstring
Уникальный идентификатор диска
- results.item.disk_data.item.linksarray
Список ссылок на детальную информацию о диске
- results.item.disk_data.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.disk_data.item.links.item.hrefstring
Ссылка
- results.item.disk_data.item.links.item.relstring
Версия API
- results.item.disk_data.item.storage_typestring
Тип диска.
volume
- для сетевых дисков,local
- для локальных - results.item.flavorobject
Объект, содержащий параметры о вычислительных ресурсах сервера
- results.item.flavor.raminteger
Количество RAM
- results.item.flavor.vcpusinteger
Количество vCPU
- results.item.idstring
Уникальный идентификатор сервера
- results.item.imagestring
Образ операционной системы, используемый для создания сервера
- results.item.in_rescuestring
Находится ли сервер в режиме восстановления
- results.item.linksarray
Список ссылок на детальную информацию о сервере
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя сервера
- results.item.project_idstring
Уникальный идентификатор проекта
- results.item.recipestring
Рецепт доп. ПО, используемый для создания сервера
- results.item.statusstring
Статус проекта
Серверы (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/servers" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "created_in": "2021-05-11T10:55:14Z", "name": "ubuntu20_1cpu_2048ram", "disk_data": [ { "id": "6597de43-fa80-406b-8317-0f09976f6ea0", "storage_type": "local", "links": [ { "href": "https://api.clo.ru/v1/local-disks/6597de43-fa80-406b-8317-0f09976f6ea0/detail", "rel": "self" } ] } ], "project_id": "81de94b0-5749-4dea-aa2d-f8a0d328dfcc", "status": "STOPPED", "id": "b7cd3947-84af-415a-ab26-59237db94221", "image": "a9a954ea-40ee-463a-814e-49070317556c", "links": [ { "href": "https://api.clo.ru/v1/servers/b7cd3947-84af-415a-ab26-59237db94221/detail", "rel": "self" } ], "flavor": { "cpu": 1, "ram": 2048 } }, { "created_in": "2021-05-12T07:11:23Z", "name": "ubuntu20_2cpu_4096ram", "disk_data": [ { "id": "59fc2585-d6ca-4f47-add5-3c89bcf0164f", "storage_type": "local", "links": [ { "href": "https://api.clo.ru/v1/local-disks/59fc2585-d6ca-4f47-add5-3c89bcf0164f/detail", "rel": "self" } ] } ], "project_id": "81de94b0-5749-4dea-aa2d-f8a0d328dfcc", "status": "BUILDING", "id": "548983bb-81bc-4baa-a91b-5ef86ceb2cea", "image": "a9a954ea-40ee-463a-814e-49070317556c", "links": [ { "href": "https://api.clo.ru/v1/servers/548983bb-81bc-4baa-a91b-5ef86ceb2cea/detail", "rel": "self" } ], "flavor": { "cpu": 2, "ram": 4096 } } ], "count": 2 }
Создать сервер
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
- addresses*array
Массив IP-адресов сервера
- addresses.item*object
Элемент, представляющий IP-адрес сервера. Если передать пустой массив, то создастся сервер без IP адреса
- addresses.item.ddos_protectionboolean
При установке флага вы получите защищенный от DDoS-атак IP
- addresses.item.external*boolean
При значении true создаст сервер со статическим IP-адресом
- addresses.item.floatingip_idstring
Если в проекте уже есть плавающий IP, то, передав ID этого IP, его можно подключить на этапе создания
- addresses.item.version*integer
Версия IP. Либо 4, Либо 6
- addresses.item.with_floatingboolean
При значении true создаст плавающий IP и подключит его к серверу
- flavor*object
Объект, указывающий количество ресурсов сервера
- flavor.ram*integer
Количество RAM создаваемого сервера
- flavor.vcpus*integer
Количество vCPU создаваемого сервера
- image*string
Образ операционной системы, используемый для создания сервера
- keypairsarray
Массив SSH-ключей сервера
- keypairs.itemstring
Значение SSH-ключа, передаваемого на сервер
- licensesarray
Массив лицензий сервера
- licenses.itemobject
Объект, содержащий параметры лицензии сервера
- licenses.item.addon*string
Тип лицензии. Например ISPmanager или Windows Server
- licenses.item.namestring
Наименование лицензии. Необходим для определения конкретной лицензии одного типа, если их несколько.
- licenses.item.valueinteger
Количество лицензий. Может потребоваться для ПО с несколькими однотипными лицензиями
- name*string
Имя сервера
- recipestring
Рецепт доп. ПО, используемый для создания сервера
- storages*array
Массив дисков сервера
- storages.item*object
Элемент, представляющий диск
- storages.item.bootableboolean
Является ли диск загрузочным. Только один диск, подключенный к серверу может быть загрузочным, на остальные диски ограничений нет.
- storages.item.size*integer
Размер диска сервера в гигабайтах
- storages.item.storage_typestring
Тип диска.
volume
- для сетевых дисков,local
- для локальных
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.created_instring
Дата создания сервера
- result.disk_dataarray
Список, содержащий объекты дисков сервера
- result.disk_data.itemobject
Объект, содержащий информацию о диске
- result.disk_data.item.idstring
Уникальный идентификатор диска
- result.disk_data.item.linksarray
Список ссылок на детальную информацию о диске
- result.disk_data.item.links.itemobject
Объект, содержащий ссылку и версию API
- result.disk_data.item.links.item.hrefstring
Ссылка
- result.disk_data.item.links.item.relstring
Версия API
- result.disk_data.item.storage_typestring
Тип диска.
volume
- для сетевых дисков,local
- для локальных - result.flavorobject
Шаблон, используемый для создания сервера.
- result.flavor.raminteger
Количество RAM
- result.flavor.vcpusinteger
Количество vCPU
- result.idstring
Уникальный идентификатор сервера
- result.imagestring
Образ операционной системы, используемый для создания сервера
- result.linksarray
Список ссылок на детальную информацию о сервере
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя сервера
- result.statusstring
Статус сервера
Создать сервер
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/servers" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post( url = URL, headers = HEADERS, json = { "name": "test", "flavor": { "ram": 4, "vcpus": 2 }, "image": "{{image_id}}", "addresses": [ {"version": 4, "external": True}, {"version": 4, "external": False, "with_floating": True}, ], "storages": [ { "size": 10, "bootable": True, "storage_type": "local" }, { "size": 10 } ] } )
{ "code": 201, "title": "Created", "result": { "name": "test", "created_in": "2021-05-21T06:36:07+00:00", "id": "30ad28ac-5d2d-446f-8b39-ee6df6d05834", "flavor": { "vcpus": 1, "ram": 2048 }, "status": "BUILDING", "disk_data": [ { "storage_type": "local", "links": [ { "rel": "self", "href": "https://api.clo.ru/v1/local-disks/7c1be79b-d196-4ee4-a1c0-24f7a97ddd30/detail" } ], "id": "7c1be79b-d196-4ee4-a1c0-24f7a97ddd30" } ], "image": "a9a954ea-40ee-463a-814e-49070317556c", "links": [ { "rel": "self", "href": "https://api.clo.ru/v1/servers/30ad28ac-5d2d-446f-8b39-ee6df6d05834/detail" } ] } }
Удаление сервера
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
Формат ответа
Удаление сервера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Сервер (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса.
- result.addressesarray
Массив IP-адресов сервера
- result.addresses.itemobject
Элемент, представляющий IP-адрес сервера
- result.addresses.item.ddos_protectionboolean
Защита от DDoS-атак
- result.addresses.item.externalboolean
Является ли IP-адрес внешним
- result.addresses.item.mac_addrstring
MAC-адрес интерфейса
- result.addresses.item.namestring
Имя IP-адреса
- result.addresses.item.ptrstring
Значение PTR-записи IP-адреса
- result.addresses.item.typestring
Тип IP-адреса
- result.addresses.item.versioninteger
Версия IP-адреса
- result.created_instring
Дата создания сервера
- result.disk_dataarray
Список, содержащий объекты дисков сервера
- result.disk_data.itemobject
Объект, содержащий информацию о диске
- result.disk_data.item.idstring
Уникальный идентификатор диска
- result.disk_data.item.linksarray
Список ссылок на детальную информацию о диске
- result.disk_data.item.links.itemobject
Объект, содержащий ссылку и версию API
- result.disk_data.item.links.item.hrefstring
Ссылка
- result.disk_data.item.links.item.relstring
Версия API
- result.disk_data.item.storage_typestring
Тип диска.
volume
- для сетевых дисков,local
- для локальных - result.flavorobject
Шаблон, используемый для создания сервера
- result.flavor.raminteger
Количество RAM
- result.flavor.vcpusinteger
Количество vCPU
- result.guest_agentboolean
Установлен ли guest-agent в систему
- result.idstring
Уникальный идентификатор сервера
- result.imagestring
Образ операционной системы, используемый для создания сервера
- result.namestring
Имя сервера
- result.project_idstring
Уникальный идентификатор проекта
- result.recipestring
Рецепт доп. ПО, используемый для создания сервера
- result.rescue_modestring
Находится ли сервер в режиме восстановления
- result.statusstring
Статус сервера
Сервер (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "created_in": "2021-05-11T10:55:14+00:00", "name": "ubuntu20_1cpu_2048ram", "disk_data": [ { "id": "6597de43-fa80-406b-8317-0f09976f6ea0", "storage_type": "local", "links": [ { "href": "https://api.clo.ru/v1/local-disks/6597de43-fa80-406b-8317-0f09976f6ea0/detail", "rel": "self" } ] } ], "project_id": "81de94b0-5749-4dea-aa2d-f8a0d328dfcc", "guest_agent": true, "status": "STOPPED", "id": "b7cd3947-84af-415a-ab26-59237db94221", "addresses": [ { "external": false, "name": "192.168.0.5" }, { "external": true, "name": "195.140.146.35" } ], "image": "a9a954ea-40ee-463a-814e-49070317556c", "flavor": { "cpu": 1, "ram": 2048 }, "rescue_mode": "NO" } }
Смена пароля сервера
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- password*string
Новое значение пароля
Формат ответа
Смена пароля сервера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/password" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'password': 'my_strong_password'})
Изменение PTR-записи статического IP
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- value*string
Новое значение PTR-записи
Формат ответа
Изменение PTR-записи статического IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/ptr" # you need to replace JWT, "keys" and "values" here with your real data # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.put(url = URL, headers = HEADERS, data = {'key': 'value'})
Перезагрузить сервер
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- rebootobject
Объект, содержащий параметры запроса на перезагрузку
- reboot.type*string
Либо HARD, либо SOFT
Формат ответа
Перезагрузить сервер
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/reboot" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'reboot': {'type': 'SOFT'}})
Изменить параметры сервера
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- ram*integer
Новое значение RAM
- vcpus*integer
Новое значение vCPU
Формат ответа
Изменить параметры сервера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/resize" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'ram': '5', 'vcpus': 4})
Включить сервер
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
Формат ответа
Включить сервер
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/start" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
Выключить сервер
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
Формат ответа
Выключить сервер
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/stop" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
Диски
Диски в инфраструктуре CLO — аналоги физических дисков для хранения оперативной информации и работы с ней. Диски отличаются по типу и назначению.
Локальный диск (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- local_disk_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса v1/projects/{project_id}/local-disks
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.attached_to_serverobject
Объект содержащий информацию о сервере, к которому прикреплен диск
- result.attached_to_server.idstring
Уникальный идентификатор сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.attached_to_server.links.item.hrefstring
Ссылка
- result.attached_to_server.links.item.relstring
Версия API
- result.bootableboolean
Является ли диск загрузочным
- result.created_instring
Дата создания диска
- result.idstring
Уникальный идентификатор диска
- result.linksarray
Массив ссылок на детальную информацию о локальном диске
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя диска
- result.sizeinteger
Размер диска в гигабайтах
- result.statusstring
Статус локального диска
Локальный диск (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/local-disks/{local_disk_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "size": 20, "status": "IN-USE", "bootable": true, "created_in": "2021-05-07T03:32:04Z", "name": "Local disk for ubuntu20_1cpu_2048ram", "id": "c5335cdd-a386-4f7e-9c00-fa361b3ae9c6", "attached_to_server": { "id": "dd30177a-2c06-46a8-8f1d-19830f44d389", "links": [ { "href": "https://api.clo.ru/v1/servers/dd30177a-2c06-46a8-8f1d-19830f44d389/detail", "rel": "self" } ] }, "links": [ { "href": "https://api.clo.ru/v1/local-disks/c5335cdd-a386-4f7e-9c00-fa361b3ae9c6/detail", "rel": "self" } ] } }
Локальные диски (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в списке
- resultsarray
Массив локальных дисков
- results.itemobject
Объект, содержащий параметры локального диска
- results.item.attached_to_serverobject
Объект содержащий информацию о сервере, к которому прикреплен диск
- results.item.attached_to_server.idstring
Уникальный идентификатор сервера
- results.item.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- results.item.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.attached_to_server.links.item.hrefstring
Ссылка
- results.item.attached_to_server.links.item.relstring
Версия API
- results.item.bootableboolean
Является ли диск загрузочным. В случае локальных дисков всегда будет возвращать true
- results.item.created_instring
Дата создания диска
- results.item.idstring
Уникальный идентификатор диска
- results.item.linksarray
Массив ссылок на детальную информацию о локальном диске
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя локального диска
- results.item.sizeinteger
Размер диска в гигабайтах
- results.item.statusstring
Статус локального диска
Локальные диски (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/local-disks" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "size": 20, "status": "IN-USE", "bootable": true, "created_in": "2021-05-07T03:32:04Z", "name": "Local disk for ubuntu20_1cpu_2048ram", "id": "c5335cdd-a386-4f7e-9c00-fa361b3ae9c6", "attached_to_server": { "id": "dd30177a-2c06-46a8-8f1d-19830f44d389", "links": [ { "href": "https://api.clo.ru/v1/servers/dd30177a-2c06-46a8-8f1d-19830f44d389/detail", "rel": "self" } ] }, "links": [ { "href": "https://api.clo.ru/v1/local-disks/c5335cdd-a386-4f7e-9c00-fa361b3ae9c6/detail", "rel": "self" } ] } ], "count": 1 }
Сетевые диски (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в списке
- resultsarray
Массив сетевых дисков
- results.itemobject
Объект, содержащий параметры сетевого диска
- results.item.attached_to_serverobject
Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск
- results.item.attached_to_server.idstring
Уникальный идентификатор сервера
- results.item.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- results.item.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.attached_to_server.links.item.hrefstring
Ссылка
- results.item.attached_to_server.links.item.relstring
Версия API
- results.item.bootableboolean
Является ли сетевой диск загрузочным
- results.item.created_instring
Дата создания диска
- results.item.descriptionstring
Комментарий к диску
- results.item.devicestring
Путь до устройства в операционной системе
- results.item.idstring
Уникальный идентификатор сетевого диска
- results.item.linksarray
Массив ссылок на детальную информацию о сетевом диске
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя сетевого диска
- results.item.sizeinteger
Размер диска в гигабайтах
- results.item.statusstring
Статус сетевого диска
- results.item.undetachableboolean
Является ли диск неотключаемым
Сетевые диски (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/volumes" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 2, "results": [ { "bootable": true, "name": "6159d234-ed37-4921-8c5f-90177d3287fb", "attached_to_server": { "id": "00c3903d-2974-47fb-bffe-86aa4c7b25a1", "links": [ { "href": "https://api.clo.ru/v1/servers/00c3903d-2974-47fb-bffe-86aa4c7b25a1/detail", "rel": "self" } ] }, "undetachable": false, "status": "IN-USE", "created_in": "2021-05-08T06:00:10Z", "size": 20, "device": "/dev/vda", "links": [ { "href": "https://api.clo.ru/v1/volumes/e84a00a1-c4d1-4627-baa4-37a958ddf48e/detail", "rel": "self" } ], "id": "e84a00a1-c4d1-4627-baa4-37a958ddf48e" }, { "bootable": true, "name": "13921f5d-8066-459b-a48e-b255b86d9628", "attached_to_server": { "id": "692b94d3-f9cb-4609-ad7c-7bc234892a6b", "links": [ { "href": "https://api.clo.ru/v1/servers/692b94d3-f9cb-4609-ad7c-7bc234892a6b/detail", "rel": "self" } ] }, "undetachable": false, "status": "IN-USE", "created_in": "2021-05-08T06:06:59Z", "size": 20, "device": "/dev/vda", "links": [ { "href": "https://api.clo.ru/v1/volumes/32b1bb31-3d67-4ef0-a833-a3ed7bffb6a8/detail", "rel": "self" } ], "id": "32b1bb31-3d67-4ef0-a833-a3ed7bffb6a8" } ] }
Создать сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects
- autorenameboolean
Автоматическое переименование диска
- name*string
Имя диска
- size*integer
Размер диска в гигабайтах
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.attached_to_serverobject
Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск. Отсутствует, если диск не подключен к серверу
- result.attached_to_server.idstring
Уникальный идентификатор сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.attached_to_server.links.item.hrefstring
Ссылка
- result.attached_to_server.links.item.relstring
Версия API
- result.bootableboolean
Является ли диск загрузочным
- result.created_instring
Дата создания диска
- result.descriptionstring
Комментарий к диску
- result.devicestring
Имя устройства в операционной системе
- result.idstring
Уникальный идентификатор диска
- result.linksarray
Массив ссылок на детальную информацию о сетевом диске
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя диска.
- result.sizeinteger
Размер диска в гигабайтах
- result.statusstring
Статус сетевого диска
- result.undetachableboolean
Является ли диск неотключаемым
Создать сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/volumes" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {"name": "test", "size": 10, "autorename": True})
{ "code": 201, "title": "Created", "result": { "size": 10, "status": "PROCESSING", "bootable": false, "created_in": "2021-05-08T08:00:19Z", "name": "test", "id": "ed735e62-3003-47e1-beaa-caf7f2221319", "links": [ { "href": "https://api.clo.ru/v1/volumes/ed735e62-3003-47e1-beaa-caf7f2221319/detail", "rel": "self" } ] } }
Подключить сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes
- mount_pathstring
Путь для подключения диска внутри файловой системы
- server_id*string
Уникальный идентификатор сервера, к которому нужно подключить диск
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.devicestring
Имя устройства в операционной системе
- result.mount_cmdstring
Команда монтирования устройства
- result.mountpointstring
Точка монтирования диска в операционной системе
- result.serverobject
Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск
- result.server.idstring
Уникальный идентификатор сервера
- result.server.linksarray
Массив ссылок на детальную информацию о сервере
- result.server.links.itemobject
Объект, содержащий ссылку и версию API
- result.server.links.item.hrefstring
Ссылка
- result.server.links.item.relstring
Версия API
- result.volumeobject
Объект содержащий в себе информацию о сетевом диске
- result.volume.idstring
Уникальный идентификатор сетевого диска
- result.volume.linksarray
Массив ссылок на детальную информацию о сетевом диске
- result.volume.links.itemobject
Объект, содержащий ссылку и версию API
- result.volume.links.item.hrefstring
Ссылка
- result.volume.links.item.relstring
Версия API
Подключить сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}/attach" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'server_id': '{server_id}'})
{ "code": 202, "title": "Accepted", "result": { "volume": { "id": "2ef2747a-b236-4a3f-891c-c0e634fd45ce", "links": [ { "href": "https://api.clo.ru/v1/volumes/2ef2747a-b236-4a3f-891c-c0e634fd45ce/detail", "rel": "self" } ] }, "server": { "id": "b7cd3947-84af-415a-ab26-59237db94221", "links": [ { "href": "https://api.clo.ru/v1/servers/b7cd3947-84af-415a-ab26-59237db94221/detail", "rel": "self" } ] }, "mountpoint": "/mnt/MyVolume", "device": "/dev/vdb", "mount_cmd": "mount -o discard, defaults /dev/vdb /mnt/MyVolume" } }
Удалить сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.
Формат ответа
Удалить сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Отключить сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.
- forceboolean
Игнорировать ошибки
Формат ответа
Отключить сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}/detach" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'force': False})
{ "code": 202, "title": "Accepted" }
Сетевой диск (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.attached_to_serverobject
Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск
- result.attached_to_server.idstring
Уникальный идентификатор сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.attached_to_server.links.item.hrefstring
Ссылка
- result.attached_to_server.links.item.relstring
Версия API
- result.bootableboolean
Является ли диск загрузочным
- result.created_instring
Дата создания диска
- result.descriptionstring
Комментарий к диску
- result.devicestring
Имя устройства в операционной системе
- result.idstring
Уникальный идентификатор диска
- result.linksarray
Массив ссылок на детальную информацию о сетевом диске
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя диска
- result.sizeinteger
Размер диска в гигабайтах
- result.statusstring
Статус сетевого диска
- result.undetachableboolean
Является ли диск неотключаемым
Сетевой диск (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "size": 20, "status": "AVAILABLE", "id": "2ef2747a-b236-4a3f-891c-c0e634fd45ce", "links": [ { "href": "https://api.clo.ru/v1/volumes/2ef2747a-b236-4a3f-891c-c0e634fd45ce/detail", "rel": "self" } ], "bootable": false, "created_in": "2021-05-11T10:52:30Z", "name": "MyVolume" } }
Увеличить сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.
- new_size*integer
Новый размер диска в гигабайтах
Формат ответа
Увеличить сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}/extend" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'new_size': 20})
Плавающие IP
Плавающий IP-адрес существует отдельно от сервера. Его можно отключить от сервера и подключить к другому в любой момент. После подключения адрес настраивается автоматически. Адрес остается закрепленным за клиентом всё время, пока клиент явно не удалит его. Через плавающий адрес сетевые операции проходят медленнее, чем через статический, поскольку адрес работает через NAT.
Подключить плавающий IP
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
- server_id*string
Уникальный идентификатор сервера, к которому нужно подключить адрес
Формат ответа
- ПараметрТип данныхОписание
- attached_to_serverobject
Информация о сервере, к которому подключен плавающий IP
- attached_to_server.idstring
Уникальный идентификатор сервера
- attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- attached_to_server.links.item.hrefstring
Ссылка
- attached_to_server.links.item.relstring
Версия API
- created_instring
Дата создания адреса
- ddos_protectionboolean
Защита от DDoS-атак
- fixed_ip_addressstring
IP адрес в серой сети, к которому подключен плавающий IP
- floating_ip_addressstring
IP адрес
- idstring
Уникальный идентификатор адреса
- linksarray
Массив ссылок на детальную информацию о плавающем IP
- links.itemobject
Объект, содержащий ссылку и версию API
- links.item.hrefstring
Ссылка
- links.item.relstring
Версия API
- ptrstring
Значение PTR-записи
- statusstring
Статус IP адреса
- updated_instring
Время последнего обновления элемента
Подключить плавающий IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}/attach" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'server_id': '0efafbaf-6918-4070-bc9b-e573b14fc7a3'})
{ "code": 200, "title": "OK", "result": { "id": "e4630ff9-6b93-4dac-8c8a-37721f46ed41", "status": "ACTIVE", "attached_to_server": { "id": "0efafbaf-6918-4070-bc9b-e573b14fc7a3", "links": [ { "href": "https://api.clo.ru/v1/servers/0efafbaf-6918-4070-bc9b-e573b14fc7a3/detail", "rel": "self" } ] }, "created_in": "2021-05-12T09:40:21+00:00", "updated_in": "2021-05-12T09:52:07+00:00", "fixed_ip_address": "195.140.146.54", "links": [ { "href": "https://api.clo.ru/v1/floatingips/e4630ff9-6b93-4dac-8c8a-37721f46ed41/detail", "rel": "self" } ], "floating_ip_address": "195.140.146.77" } }```
Удалить плавающий IP
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
Формат ответа
Удалить плавающий IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Отключить плавающий IP
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
Формат ответа
Отключить плавающий IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}/detach" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK" }
Плавающий IP (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.attached_to_serverobject
Информация о сервере, к которому подключен плавающий IP
- result.attached_to_server.idstring
ID сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.attached_to_server.links.item.hrefstring
Ссылка
- result.attached_to_server.links.item.relstring
Версия API
- result.created_instring
Дата создания адреса
- result.ddos_protectionboolean
Защита от DDoS-атак
- result.fixed_ip_addressstring
IP адрес в серой сети, к которому подключен плавающий IP
- result.floating_ip_addressstring
IP адрес
- result.idstring
Уникальный идентификатор адреса
- result.linksarray
Массив ссылок на детальную информацию о плавающем IP
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.ptrstring
Значение PTR-записи
- result.statusstring
Статус плавающего IP
- result.updated_instring
Время последнего обновления элемента
Плавающий IP (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "id": "e4630ff9-6b93-4dac-8c8a-37721f46ed41", "created_in": "2021-05-12T09:40:21+00:00", "status": "DOWN", "links": [ { "href": "https://api.clo.ru/v1/floatingips/e4630ff9-6b93-4dac-8c8a-37721f46ed41/detail", "rel": "self" } ], "attached_to_server": null, "floating_ip_address": "195.140.146.77", "updated_in": "2021-05-12T09:41:38+00:00" } }
Изменение PTR-записи плавающего IP
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
- value*string
Новое значение PTR-записи
Формат ответа
Изменение PTR-записи плавающего IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}/ptr" # you need to replace JWT, "keys" and "values" here with your real data # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.put(url = URL, headers = HEADERS, data = {'key': 'value'})
Список плавающих IP
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив плавающих IP
- results.itemobject
Объект, содержащий параметры плавающего IP
- results.item.attached_to_serverobject
Информация о сервере, к которому подключен плавающий IP
- results.item.attached_to_server.idstring
Уникальный идентификатор сервера
- results.item.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- results.item.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.attached_to_server.links.item.hrefstring
Ссылка
- results.item.attached_to_server.links.item.relstring
Версия API
- results.item.created_instring
Дата создания
- results.item.ddos_protectionboolean
Защита от DDoS-атак
- results.item.fixed_ip_addressstring
IP адрес в серой сети, к которому подключен плавающий IP
- results.item.floating_ip_addressstring
IP адрес
- results.item.idstring
Уникальный идентификатор плавающего IP
- results.item.linksarray
Массив ссылок на детальную информацию о плавающем IP
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.ptrstring
Значение PTR-записи
- results.item.statusstring
Состояние плавающего IP адреса
- results.item.updated_instring
Время последнего обновления элемента
Список плавающих IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/floatingips" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "id": "e4630ff9-6b93-4dac-8c8a-37721f46ed41", "created_in": "2021-05-12T09:40:21Z", "status": "DOWN", "links": [ { "href": "https://api.clo.ru/v1/floatingips/e4630ff9-6b93-4dac-8c8a-37721f46ed41/detail", "rel": "self" } ], "fixed_ip_address": null, "attached_to_server": null, "floating_ip_address": "195.140.146.77", "updated_in": "2021-05-12T09:41:38Z" } ], "count": 1 }
Создать плавающий IP
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
- ddos_protectionboolean
При установке флага вы получите защищенный от DDoS-атак IP-адрес
Формат ответа
- ПараметрТип данныхОписание
- fixed_ip_addressstring
IP адрес в серой сети, к которому подключен плавающий IP
- floating_ip_addressstring
IP адрес
- idstring
Уникальный идентификатор плавающего IP
- linksarray
Список ссылок на детальную информацию о плавающем IP
- links.itemobject
Объект, содержащий ссылку и версию API
- links.item.hrefstring
Ссылка
- links.item.relstring
Версия API
Создать плавающий IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/floatingips" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 201, "title": "Created", "result": { "id": "e4630ff9-6b93-4dac-8c8a-37721f46ed41", "floating_ip_address": null, "links": [ { "href": "https://api.clo.ru/v1/floatingips/e4630ff9-6b93-4dac-8c8a-37721f46ed41/detail", "rel": "self" } ] } }
Снапшоты
“Снимок” состояния сервера на определенный момент. Создается за пару секунд, не мешает работе сервера и хранится 24 часа. Из снимка можно восстановить сервер — создать новый, который будет копией исходного сервера на момент создания снапшота.
Снапшот (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в списке
- resultsarray
Массив снапшотов
- results.itemobject
Объект, содержащий параметры снапшота
- results.item.child_serversarray
Список дочерних серверов
- results.item.child_servers.itemobject
Объект, содержащий информацию о дочернем сервере
- results.item.child_servers.item.idstring
Уникальный идентификатор сервера
- results.item.child_servers.item.linksarray
Список ссылок на детальную информацию о сервере
- results.item.child_servers.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.child_servers.item.links.item.hrefstring
Ссылка
- results.item.child_servers.item.links.item.relstring
Версия API
- results.item.created_instring
Дата создания снапшота
- results.item.deleted_instring
Время в которое снапшот будет удалён
- results.item.idstring
Уникальный идентификатор снапшота
- results.item.linksarray
Список ссылок на детальную информацию о снапшоте
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.namestring
Название снапшота
- results.item.parent_serverobject
Объект, содержащий информацию о сервере, с которого был сделан снапшот
- results.item.parent_server.idstring
Уникальный идентификатор сервера
- results.item.parent_server.linksarray
Список ссылок на детальную информацию о сервере
- results.item.parent_server.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.parent_server.links.item.hrefstring
Ссылка
- results.item.parent_server.links.item.relstring
Версия API
- results.item.sizeinteger
Размер снапшота в гигабайтах
- results.item.statusstring
Статус снапшота
Снапшот (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/snapshots" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "child_servers": [], "size": 20971520, "deleted_in": "2021-05-12T20:50:56Z", "status": "ACTIVE", "parent_server": { "id": "0efafbaf-6918-4070-bc9b-e573b14fc7a3", "links": [ { "href": "https://api.clo.ru/v1/servers/0efafbaf-6918-4070-bc9b-e573b14fc7a3/detail", "rel": "self" } ] }, "id": "8c1f5fea-dd4c-4849-b416-6909f0bdea40", "links": [ { "href": "https://api.clo.ru/v1/snapshots/8c1f5fea-dd4c-4849-b416-6909f0bdea40/detail", "rel": "self" } ], "created_in": "2021-05-12T08:50:56Z", "name": "ubuntu20_1cpu_2048ram_16:50_12-05-2021" } ] }
Создать снапшот
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса v1/projects/{project_id}/servers
- name*string
Имя снапшота
Формат ответа
- ПараметрТип данныхОписание
- idstring
Уникальный идентификатор снапшота
- linksarray
Список ссылок на детальную информацию о снапшоте
- links.itemobject
Объект, содержащий ссылку и версию API
- links.item.hrefstring
Ссылка
- links.item.relstring
Версия API
Создать снапшот
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/snapshot" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'name': 'my_first_snapshot'})
{ "code": 202, "title": "Accepted", "result": { "id": "fa19daa5-ed77-4a01-817f-3a334c8bed30", "links": [ { "href": "https://api.clo.ru/v1/snapshots/fa19daa5-ed77-4a01-817f-3a334c8bed30/detail", "rel": "self" } ] } }
Удалить снапшот
Параметры запроса
- ПараметрТип данныхОписание
- snapshot_id*stringПередается в path.
Уникальный идентификатор снапшота
Формат ответа
Удалить снапшот
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/snapshots/{snapshot_id}/delete" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Снапшот (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- snapshot_id*stringПередается в path.
Уникальный идентификатор снапшота
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий параметры снапшота
- result.child_serversarray
Список дочерних серверов
- result.child_servers.itemobject
Объект, содержащий информацию о дочернем сервере
- result.child_servers.item.idstring
ID сервера
- result.child_servers.item.linksarray
Список ссылок на детальную информацию о сервере
- result.child_servers.item.links.itemobject
Объект, содержащий ссылку и версию API
- result.child_servers.item.links.item.hrefstring
Ссылка
- result.child_servers.item.links.item.relstring
Версия API
- result.created_instring
Дата создания снапшота
- result.deleted_instring
Дата удаления снапшота
- result.idstring
Уникальный идентификатор снапшота
- result.linksarray
Список ссылок на детальную информацию о снапшоте
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя снапшота
- result.parent_serverobject
Объект, содержащий информацию о сервере, с которого был сделан снапшот
- result.parent_server.idstring
Уникальный идентификатор сервера
- result.parent_server.linksarray
Список ссылок на детальную информацию о сервере
- result.parent_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.parent_server.links.item.hrefstring
Ссылка
- result.parent_server.links.item.relstring
Версия API
- result.sizeinteger
Размер снапшота в гигабайтах
- result.statusstring
Статус снапшота
Снапшот (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/snapshots/{snapshot_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "child_servers": [], "size": 20971520, "deleted_in": "2021-05-12T20:50:56Z", "status": "ACTIVE", "parent_server": { "id": "0efafbaf-6918-4070-bc9b-e573b14fc7a3", "links": [ { "href": "https://api.clo.ru/v1/servers/0efafbaf-6918-4070-bc9b-e573b14fc7a3/detail", "rel": "self" } ] }, "id": "8c1f5fea-dd4c-4849-b416-6909f0bdea40", "links": [ { "href": "https://api.clo.ru/v1/snapshots/8c1f5fea-dd4c-4849-b416-6909f0bdea40/detail", "rel": "self" } ], "created_in": "2021-05-12T08:50:56Z", "name": "ubuntu20_1cpu_2048ram_16:50_12-05-2021" } }
Восстановление сервера из снапшота
Параметры запроса
- ПараметрТип данныхОписание
- snapshot_id*stringПередается в path.
ID снапшота
- ddos_protectionboolean
Восстановить сервер с защищенным от DDoS-атак IP
- name*string
Название сервера
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса.
- result.namestring
Название сервера
- result.serverobject
Объект, содержащий информацию о сервере
- result.server.idstring
ID сервера
- result.server.linksarray
Список ссылок на детальную информацию о сервере
- result.server.links.itemobject
Объект, содержащий ссылку и версию API
- result.server.links.item.hrefstring
Ссылка
- result.server.links.item.relstring
Версия API
Восстановление сервера из снапшота
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/snapshots/{snapshot_id}/restore" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'name': 'restored_server'})
{ "code": 202, "title": "Accepted", "result": { "name": "restored_server", "server": { "id": "18b24279-ce05-4974-aa9d-ba818d460e4b", "links": [ { "href": "https://api.clo.ru/v1/servers/18b24279-ce05-4974-aa9d-ba818d460e4b/detail", "rel": "self" } ] } } }
SSH-ключи
Ключи нужны для доступа к серверам проекта по протоколу ssh. Используется как альтернатива аутентификации по логину и паролю.
Удалить SSH-ключ
Параметры запроса
- ПараметрТип данныхОписание
- keypair_id*stringПередается в path.
Уникальный идентификатор SSH-ключа, который необходимо удалить
Формат ответа
Удалить SSH-ключ
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/keypairs/{keypair_id}/delete" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending delete request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
SSH-ключ (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- keypair_id*stringПередается в path.
Уникальный идентификатор SSH-ключа
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.idstring
Уникальный идентификатор SSH-ключа
- result.namestring
Имя ключа
- result.public_keystring
Значение публичного ключа
SSH-ключ (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/keypairs/{keypair_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "id": "d4671e8e-212a-401e-86bf-22d7f0430952", "public_key": "123", "name": "test2" } }
Список SSH-ключей
Параметры запроса
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в списке
- resultsarray
Массив SSH-ключей
- results.itemobject
Объект, содержащий параметры SSH-ключа
- results.item.idstring
Уникальный идентификатор SSH-ключа
- results.item.namestring
Имя SSH-ключа
- results.item.public_keystring
Значение публичного ключа
Список SSH-ключей
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/keypairs" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "id": "d4671e8e-212a-401e-86bf-22d7f0430952", "public_key": "123", "name": "test2" } ] }
Создать SSH-ключ
Параметры запроса
- ПараметрТип данныхОписание
- name*string
Имя SSH-ключа
- public_key*string
Значение публичного SSH-ключа
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.idstring
Уникальный идентификатор SSH-ключа
- result.namestring
Имя SSH-ключа
- result.public_keystring
Значение публичного SSH-ключа
Создать SSH-ключ
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/keypairs" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'name': 'test4', 'public_key': '1asd23'})
{ "code": 201, "title": "Created", "result": { "id": "93fe3a6a-1bda-4845-b7e9-f92e0939e801", "public_key": "1asd23", "name": "test4" } }