Документация API
v1

Документация Public API v1

Общее

API используется для автоматизации рутинных задач в облаке и позволяет управлять элементами инфраструктуры с помощью HTTP-запросов.

Формат запросов

При выполнении запроса, ID сущности передается в URL.
Остальные параметры передаются в теле запроса.
Токен передается в заголовке запроса (см. “Авторизация”).
Параметры ответа возвращаются в теле ответа.

Авторизация

Доступ к API осуществляется с помощью JWT-токена, сгенерированного сервисом.

Токенами можно управлять в личном кабинете в разделе Аккаунт → Токены API. Его необходимо передавать в заголовке каждого запроса в формате:

Authorization: Bearer <JWT>

где <JWT> — сгенерированный токен.

Ошибки и коды ответа

В данном разделе представлено описание структуры ответа, ошибок и кодов. Сервис возвращает тело ответа в формате 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)

Инфраструктура

В этом разделе описаны методы работы с инфраструктурными сущностями проекта.

Проект

Логическая структура, содержащая в себе другие элементы, такие как: серверы, диски, IP-адреса и т.д.

Проекты (список)

Запрос возвращает список проектов.
GET
/v1/projects

Параметры запроса

Отсутствуют

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в результирующем ответе

  • results
    array

    Массив проектов

  • results.item
    object

    Объект, содержащий параметры проекта

  • results.item.created_in
    string

    Дата создания проекта

  • results.item.has_abuse
    boolean

    Наличие неразрешенного тикета за нарушение правил. Если это значение true, то проект может быть остановлен в течение 24 часов

  • results.item.id
    string

    Уникальный идентификатор проекта

  • results.item.name
    string

    Название проекта

  • results.item.status
    string

    Статус проекта

  • results.item.stopping_reason
    string

    Причина остановки

  • results.item.summary
    object

    Общая информация о проекте

  • results.item.summary.floating_ips
    integer

    Количество используемых плавающих IP адресов

  • results.item.summary.networks
    integer

    Количество используемых сетей

  • results.item.summary.servers
    integer

    Количество используемых серверов

  • results.item.summary.volumes
    integer

    Количество используемых дисков

Пример запроса:
  • 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 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",
			"has_abuse": false,
			"stopping_reason": null
		}
	],
	"count": 1
}

Образы операционных систем (список)

Запрос возвращает список образов ОС, доступных для установки. В случае успешного выполнения возвращает код 200
GET
/v1/projects/{project_id}/images

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в результирующем ответе

  • results
    array

    Массив образов ОС

  • results.item
    object

    Объект, содержащий параметры образов ОС

  • results.item.id
    string

    Уникальный идентификатор образа

  • results.item.name
    string

    Наименование образа

  • results.item.operation_system
    object

    Объект операционной системы с параметрами ниже

  • results.item.operation_system.distribution
    string

    Название дистрибутива

  • results.item.operation_system.os_family
    string

    Семейство операционных систем

  • results.item.operation_system.version
    string

    Версия операционной системы

Пример запроса:
  • 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 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
}

Лимиты проекта (список)

Запрос возвращает информацию по лимитам ресурсов, доступным на проекте.
GET
/v1/projects/{project_id}/limits

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта, для которого получаем список образов ОС. Можно получить из запроса GET /v1/projects.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в результирующем ответе

  • results
    array

    Массив лимитов

  • results.item
    object

    Объект, содержащий параметры лимита

  • results.item.max
    integer

    Верхнее ограничение по использованию ресурса

  • results.item.measure
    string

    Единица измерения

  • results.item.name
    string

    Наименование ресурса

  • results.item.used
    integer

    Количество использованного ресурса

Пример запроса:
  • 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 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
}

Рецепты

Также называемое в сервисе Приложениями - это набор ПО, который может быть предустановлен автоматически вместе с операционной системой после создания сервера.

Рецепты (список)

Запрос возвращает список рецептов доп. ПО, доступных на проекте
GET
/v1/recipes

Параметры запроса

Отсутствуют

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в результирующем ответе

  • results
    array

    Массив рецептов

  • results.item
    object

    Объект, содержащий параметры рецепта

  • results.item.id
    string

    Уникальный идентификатор рецепта

  • results.item.min_disk
    integer

    Минимально допустимый объём диска для установки рецепта

  • results.item.min_ram
    integer

    Минимально допустимое количество RAM для установки рецепта

  • results.item.min_vcpus
    integer

    Минимально допустимое количество vCPU для установки рецепта

  • results.item.name
    string

    Наименование рецепта

  • results.item.suitable_images
    array

    Список, содержащий объекты образов ОС, с которыми возможна установка рецепта

  • results.item.suitable_images.item
    string

    Объект, содержащий информацию об образах ОС, с которыми возможна установка рецепта

Пример запроса:
  • 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)
Пример ответа:
{
	"code": 200,
	"title": "OK",
	"count": 1,
	"results": [
		{
			"min_ram": 1,
			"name": "Bitrix Env Crm",
			"min_vcpus": 1,
			"id": "a10ffcb5-a068-4aac-9e76-5641be05d0d4",
			"suitable_images": [
				"d016331e-6260-45e2-b429-c598188e21f3"
				],
			"min_disk": 10
		}
	]
}

Объектное хранилище S3

Хранилище для долговременного хранения данных в облаке. Для использования хранилища необходимо создать отдельного пользователя S3. Данные в хранилище находятся в специальных объектах - бакетах.

Пользователи (список)

Запрос возвращает список пользователей S3, созданных на проекте
GET
/v1/projects/{project_id}/s3_users

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в результирующем ответе

  • results
    array

    Массив пользователей S3

  • results.item
    object

    Объект, содержащий параметры пользователя S3

  • results.item.canonical_name
    string

    Каноническое имя пользователя S3. Уникальное имя пользователя.

  • results.item.id
    string

    Уникальный идентификатор пользователя S3

  • results.item.max_buckets
    integer

    Лимит пользователя по количеству бакетов

  • results.item.name
    string

    Имя пользователя S3. Может быть неуникальным.

  • results.item.quotas
    array

    Массив лимитов пользователя S3

  • results.item.quotas.item
    object

    Объект, содержащий информацию о лимите пользователя

  • results.item.quotas.item.max_objects
    integer

    Максимально допустимое количество объектов

  • results.item.quotas.item.max_size
    integer

    Максимально допустимый объем данных в Кб

  • results.item.quotas.item.type
    string

    Тип лимита пользователя - для каждого бакета, либо общая для пользователя S3

  • results.item.status
    string

    Статус пользователя S3

  • results.item.tenant
    string

    Уникальный идентификатор тенанта. По умолчанию используется имя проекта.

Пример запроса:
  • 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)
Пример ответа:
{
	"code": 200,
	"title": "OK",
	"count": 1,
	"results": [
		{
			"tenant": "energetic_spectacular_lynxy",
			"max_buckets": 5,
			"name": "test_bucket",
			"quotas": [
				{
					"max_objects": 10,
					"type": "user",
					"max_size": 500
				},
				{
					"max_objects": 10,
					"type": "bucket",
					"max_size": 500
				}
			],
			"canonical_name": "test_name1223",
			"id": "5c0a5361-bccb-40e6-a145-240bdb0f8d59",
			"status": "AVAILABLE"
		}
	]
}

Создать пользователя

Запрос создает пользователя S3 с указанными параметрами
POST
/v1/projects/{project_id}/s3_users

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.

  • bucket_quota
    object

    Объект, который содержит параметры лимита пользователя для каждого бакета. При создании пользователя параметр необязательный . В лимите можно указать максимальное количество объектов в бакете и максимальный объем данных в Кб.

  • bucket_quota.max_objects
    integer,
    null

    Максимально допустимое количество объектов

  • bucket_quota.max_size
    integer,
    null

    Максимально допустимый объем данных в Кб

  • canonical_name*
    string

    Каноническое имя пользователя S3. Уникальное имя пользователя.

  • default_bucket
    boolean

    При значении true создаст пользователя S3 вместе с бакетом

  • max_buckets*
    integer

    Лимит по количеству бакетов создаваемого пользователя S3

  • name
    string

    Имя пользователя S3. Может быть неуникальным.

  • user_quota*
    object

    Объект, который содержит параметры общего лимита пользователя. В лимите необходимо указать максимальный занимаемый объем данных в Кб, также можно указать максимальное количество объектов (бакеты не учитываются).

  • user_quota.max_objects
    integer,
    null

    Максимально допустимое количество объектов

  • user_quota.max_size*
    integer

    Максимально допустимый объем данных в Кб

Формат ответа

  • Параметр
    Тип данных
    Описание
  • canonical_name
    string

    Каноническое имя пользователя S3. Уникальное имя пользователя.

  • id
    string

    Уникальный идентификатор пользователя S3

  • max_buckets
    integer

    Лимит пользователя по количеству бакетов

  • name
    string

    Имя пользователя S3. Может быть неуникальным.

  • quotas
    array

    Массив лимитов пользователя S3

  • quotas.item
    object

    Объект, содержащий информацию о лимите

  • quotas.item.max_objects
    integer

    Максимально допустимое количество объектов

  • quotas.item.max_size
    integer

    Максимально допустимый объем данных в Кб

  • quotas.item.type
    string

    Тип лимита - для каждого бакета, либо общая для пользователя S3

  • status
    string

    Статус пользователя S3

  • tenant
    string

    Уникальный идентификатор тенанта. По умолчанию используется имя проекта.

Пример запроса:
  • 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
	url = URL,
	headers = HEADERS,
	json = {
		"bucket_quota": {
			"max_objects": 10,
			"max_size": 1000
		},
		"canonical_name": "test",
		"default_bucket": true,
		"max_buckets": 10,
		"name": "test_name",
		"user_quota": {
			"max_objects": 10,
			"max_size": 1000
		}
	}
)
Пример ответа:
{
	"code": 201,
	"title": "Created"
}

Удалить пользователя

Запрос удаляет пользователя и все бакеты, которыми он владеет
DELETE
/v1/s3_users/{s3_user_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • 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)

Пользователь (подробности)

Возвращает детальную информацию по пользователю с указанным ID
GET
/v1/s3_users/{s3_user_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • s3_user_id*
    string
    Передается в path.

    Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий параметры пользователя S3

  • result.canonical_name
    string

    Каноническое имя пользователя S3. Уникальное имя пользователя.

  • result.id
    string

    Уникальный идентификатор пользователя S3

  • result.max_buckets
    integer

    Лимит пользователя по количеству бакетов

  • result.name
    string

    Имя пользователя S3. Может быть неуникальным.

  • result.quotas
    array

    Массив лимитов пользователя S3

  • result.quotas.item
    object

    Объект, содержащий информацию о лимите

  • result.quotas.item.max_objects
    integer

    Максимально допустимое количество объектов

  • result.quotas.item.max_size
    integer

    Максимально допустимый объем данных в Кб

  • result.quotas.item.type
    string

    Тип лимита - для каждого бакета, либо общая для пользователя S3

  • result.status
    string

    Статус пользователя S3

  • result.tenant
    string

    Уникальный идентификатор тенанта. По умолчанию используется имя проекта.

Пример запроса:
  • 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)
Пример ответа:
{
	"code": 200,
	"title": "OK",
	"count": 1,
	"result": {
		"tenant": "energetic_spectacular_lynxy",
		"max_buckets": 5,
		"name": "test_bucket",
		"quotas": [
			{
				"max_objects": 10,
				"type": "user",
				"max_size": 500
			},
			{
				"max_objects": 10,
				"type": "bucket",
				"max_size": 500
			}
		],
		"canonical_name": "test_name1223",
		"id": "5c0a5361-bccb-40e6-a145-240bdb0f8d59",
		"status": "AVAILABLE"
	}
}

Получение ключей доступа пользователя S3

Запрос предоставляет последнюю сгенерированную пару ключей выбранного пользователя S3
GET
/v1/s3_users/{s3_user_id}/keys

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • s3_user_id*
    string
    Передается в path.

    Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users

Формат ответа

  • Параметр
    Тип данных
    Описание
  • access_key
    string

    Уникальный идентификатор ключа пользователя S3

  • secret_key
    string

    Секретный ключ пользователя S3

  • user
    string

    Уникальный идентификатор пользователя в рамках хранилища 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)
Пример ответа:
{
    "code": 200,
    "title": "OK"
}

Сброс ключей доступа пользователя S3

Запрос генерирует новую пару ключей выбранного пользователя S3
POST
/v1/s3_users/{s3_user_id}/keys

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • s3_user_id*
    string
    Передается в path.

    Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users

Формат ответа

  • Параметр
    Тип данных
    Описание
  • access_key
    string

    Уникальный идентификатор ключа пользователя S3

  • secret_key
    string

    Секретный ключ пользователя S3

  • user
    string

    Уникальный идентификатор пользователя в рамках хранилища 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.post(url = URL, headers = HEADERS)
Пример ответа:
{
	"code": 201,
	"title": "Created"
}

Изменение простых полей пользователя S3

Запрос изменяет простые данные выбранного пользователя S3
PATCH
/v1/s3_users/{s3_user_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • s3_user_id*
    string
    Передается в path.

    Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users

  • name*
    string

    Новое имя пользователя S3. Неуникальное имя пользователя.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • canonical_name
    string

    Каноническое имя пользователя S3. Уникальное имя пользователя.

  • id
    string

    Уникальный идентификатор пользователя S3

  • max_buckets
    integer

    Лимит пользователя по количеству бакетов

  • name
    string

    Имя пользователя S3. Может быть неуникальным.

  • quotas
    array

    Массив лимитов пользователя S3

  • quotas.item
    object

    Объект, содержащий информацию о лимите

  • quotas.item.max_objects
    integer

    Максимально допустимое количество объектов

  • quotas.item.max_size
    integer

    Максимально допустимый объем данных в Кб

  • quotas.item.type
    string

    Тип лимита - для каждого бакета, либо общая для пользователя S3

  • status
    string

    Статус пользователя S3

  • tenant
    string

    Уникальный идентификатор тенанта. По умолчанию используется имя проекта.

Пример запроса:
  • 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.patch(url = URL, headers = HEADERS, json = {"name": "new_name"})
Пример ответа:
{
	"code": 200,
	"title": "OK"
}

Изменение лимитов пользователя S3

Запрос изменяет параметры лимитов выбранного пользователя S3
PATCH
/v1/s3_users/{s3_user_id}/quotas

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • s3_user_id*
    string
    Передается в path.

    Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users

  • bucket_quota
    object

    Объект, который содержит параметры лимита для каждого бакета. Лимит может содержать ограничения на максимальное количество объектов в бакете и максимальный объем данных в Кб

  • bucket_quota.max_objects
    integer,
    null

    Максимально допустимое количество объектов

  • bucket_quota.max_size
    integer,
    null

    Максимально допустимый объем данных в Кб

  • max_buckets
    integer

    Максимальное количество бакетов пользователя

  • user_quota
    object

    Объект, который содержит параметры общего лимита пользователя. В лимите обязательно указан максимальный занимаемый объем данных в Кб, также можно содержать ограничение на максимальное количество объектов (бакеты не учитываются).

  • user_quota.max_objects
    integer,
    null

    Максимально допустимое количество объектов

  • user_quota.max_size
    integer

    Максимально допустимый объем данных в Кб

Формат ответа

  • Параметр
    Тип данных
    Описание
  • canonical_name
    string

    Каноническое имя пользователя S3. Уникальное имя пользователя.

  • id
    string

    Уникальный идентификатор пользователя S3

  • max_buckets
    integer

    Лимит по количеству бакетов создаваемого пользователя S3

  • name
    string

    Имя пользователя S3. Может быть неуникальным.

  • quotas
    array

    Массив лимитов пользователя S3

  • quotas.item
    object

    Объект, содержащий информацию о лимите

  • quotas.item.max_objects
    integer

    Максимально допустимое количество объектов

  • quotas.item.max_size
    integer

    Максимально допустимый объем данных в Кб

  • quotas.item.type
    string

    Тип лимита - для каждого бакета, либо общая для пользователя S3

  • status
    string

    Статус пользователя S3

  • tenant
    string

    Уникальный идентификатор тенанта. По умолчанию используется имя проекта.

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/quotas"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.patch(
	url = URL,
	headers = HEADERS,
	json = {
		"bucket_quota": {
			"max_objects": 20,
			"max_size": 2000
		},
		"max_buckets": 20,
		"user_quota": {
			"max_objects": 20,
			"max_size": 2000
		}
	}
)
Пример ответа:
{
	"code": 202,
	"title": "Accepted"
}

Остановка пользователя S3

Запрос отключает выбранного пользователя S3. Авторизоваться под отключенным пользователем не удастся
POST
/v1/s3_users/{s3_user_id}/suspend

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • s3_user_id*
    string
    Передается в path.

    Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users

Формат ответа

  • Параметр
    Тип данных
    Описание
  • canonical_name
    string

    Каноническое имя пользователя S3. Уникальное имя пользователя.

  • id
    string

    Уникальный идентификатор пользователя S3

  • max_buckets
    integer

    Лимит пользователя по количеству бакетов

  • name
    string

    Имя пользователя S3. Может быть неуникальным.

  • quotas
    array

    Массив лимитов пользователя S3

  • quotas.item
    object

    Объект, содержащий информацию о лимите

  • quotas.item.max_objects
    integer

    Максимально допустимое количество объектов

  • quotas.item.max_size
    integer

    Максимально допустимый объем данных в Кб

  • quotas.item.type
    string

    Тип лимита - для каждого бакета, либо общая для пользователя S3

  • status
    string

    Статус пользователя S3

  • tenant
    string

    Уникальный идентификатор тенанта. По умолчанию используется имя проекта.

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/suspend"

# 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)
Пример ответа:
{
	"code": 202,
	"title": "Accepted"
}

Включение пользователя S3

Запрос включает выбранного пользователя S3
POST
/v1/s3_users/{s3_user_id}/unsuspend

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • s3_user_id*
    string
    Передается в path.

    Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users

Формат ответа

  • Параметр
    Тип данных
    Описание
  • canonical_name
    string

    Каноническое имя пользователя S3. Уникальное имя пользователя.

  • id
    string

    Уникальный идентификатор пользователя S3

  • max_buckets
    integer

    Лимит по количеству бакетов

  • name
    string

    Имя пользователя S3. Может быть неуникальным.

  • quotas
    array

    Массив лимитов пользователя S3

  • quotas.item
    object

    Объект, содержащий информацию о лимите

  • quotas.item.max_objects
    integer

    Максимально допустимое количество объектов

  • quotas.item.max_size
    integer

    Максимально допустимый объем данных в Кб

  • quotas.item.type
    string

    Тип лимита - для каждого бакета, либо общая для пользователя S3

  • status
    string

    Статус пользователя S3

  • tenant
    string

    Уникальный идентификатор тенанта. По умолчанию используется имя проекта.

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/unsuspend"

# 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)
Пример ответа:
{
	"code": 202,
	"title": "OK"
}

Серверы

Блок вычислительных ресурсов, к которому подключаются диски и IP-адреса.

Серверы (список)

Запрос возвращает список серверов, доступных на проекте
GET
/v1/projects/{project_id}/servers

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в результирующем ответе

  • results
    array

    Массив серверов

  • results.item
    object

    Объект, содержащий параметры сервера

  • results.item.addresses
    array

    Массив IP-адресов сервера

  • results.item.addresses.item
    object

    IP-адрес сервера

  • results.item.addresses.item.ddos_protection
    boolean

    Наличие защиты от DDoS-атак для конкретного адреса

  • results.item.addresses.item.external
    boolean

    Является ли IP-адрес внешним

  • results.item.addresses.item.id
    string

    Идентификатор IP-адреса

  • results.item.addresses.item.mac_addr
    string

    MAC-адрес, связанный с IP

  • results.item.addresses.item.name
    string

    Имя IP-адреса

  • results.item.addresses.item.ptr
    string

    PTR-запись для IP-адреса

  • results.item.addresses.item.type
    string

    Тип адреса

  • results.item.addresses.item.version
    integer

    Версия IP-адреса

  • results.item.created_in
    string

    Дата создания сервера

  • results.item.disk_data
    array

    Список дисков, которые подключены к серверу

  • results.item.disk_data.item
    object

    Объект, содержащий информацию о диске

  • results.item.disk_data.item.id
    string

    Уникальный идентификатор диска

  • results.item.disk_data.item.links
    array

    Список ссылок на детальную информацию о диске

  • results.item.disk_data.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.disk_data.item.links.item.href
    string

    Ссылка

  • results.item.disk_data.item.links.item.rel
    string

    Версия API

  • results.item.disk_data.item.storage_type
    string

    Тип диска. volume — для сетевых дисков, local — для локальных

  • results.item.flavor
    object

    Объект, содержащий параметры о вычислительных ресурсах сервера

  • results.item.flavor.ram
    integer

    Количество RAM

  • results.item.flavor.vcpus
    integer

    Количество vCPU

  • results.item.id
    string

    Уникальный идентификатор сервера

  • results.item.image
    string

    Образ операционной системы, используемый для создания сервера

  • results.item.in_rescue
    string

    Находится ли сервер в режиме восстановления

  • results.item.links
    array

    Список ссылок на детальную информацию о сервере

  • results.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.links.item.href
    string

    Ссылка

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Имя сервера

  • results.item.project_id
    string

    Уникальный идентификатор проекта

  • results.item.recipe
    string

    Рецепт доп. ПО, используемый для создания сервера

  • results.item.status
    string

    Статус проекта

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{object_id}/servers"

# 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)
Пример ответа:
{
	"code": 200,
	"title": "OK",
	"count": 1,
	"results": [
		{
			"links": [
				{
					"rel": "self",
					"href": "http://api.clo.ru/v1/servers/934d0fff-a3fc-4c43-8b0c-2f4762a7f63d/detail"
				}
			],
			"name": "test",
			"addresses": [
				{
					"ddos_protection": true,
					"name": "82.202.173.237",
					"mac_addr": "02:8b:72:43:40:d0",
					"ptr": "default.clo.ru",
					"id": "423e8ca6-bb34-43a6-8689-2e85d1a012dd",
					"type": "FIXED",
					"version": 4,
					"external": true
				}
			],
			"flavor":{
				"vcpus": 1,
				"ram": 2048
			},
			"status": "BUILDING",
			"id": "934d0fff-a3fc-4c43-8b0c-2f4762a7f63d",
			"project_id": "8104913be7b44ac4871b106e8104e1",
			"disk_data": [
				{
					"id": "cc7f8329-3083-412e-9c07-b59d06d895f4",
					"links": [
						{
							"rel": "self",
							"href": "http://api.clo.ru/v1/volumes/cc7f8329-3083-412e-9c07-b59d06d895f4/detail"
						}
					],
					"storage_type": "volume"
				}
			],
			"recipe": "e53e9b62-dd91-4a41-a794-4d6533b8139e",
			"created_in": "2023-07-17T04:27:45Z",
			"image": "25b600e9-8026-46e3-9c89-f002b24b0842"
		}
	]
}

Создать сервер

Запрос создает сервер с заданными параметрами
POST
/v1/projects/{project_id}/servers

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.

  • addresses*
    array

    Массив IP-адресов сервера

  • addresses.item*
    object

    Элемент, представляющий IP-адрес сервера. Если передать пустой массив, то создастся сервер без IP адреса

  • addresses.item.address_id
    string

    Идентификатор IP-адреса

  • addresses.item.ddos_protection
    boolean

    При установке флага вы получите защищенный от DDoS-атак IP

  • addresses.item.external*
    boolean

    При значении true создаст сервер со статическим IP-адресом

  • addresses.item.floatingip_id
    string

    Если в проекте уже есть плавающий IP, то, передав ID этого IP, его можно подключить на этапе создания

  • addresses.item.version*
    integer

    Версия IP. Либо 4, Либо 6

  • addresses.item.with_floating
    boolean

    При значении true создаст плавающий IP и подключит его к серверу

  • flavor*
    object

    Объект, указывающий количество ресурсов сервера

  • flavor.ram*
    integer

    Количество RAM создаваемого сервера

  • flavor.vcpus*
    integer

    Количество vCPU создаваемого сервера

  • image
    string

    Образ операционной системы, используемый для создания сервера

  • keypairs
    array

    Массив SSH-ключей сервера

  • keypairs.item
    string

    Значение SSH-ключа, передаваемого на сервер

  • licenses
    array

    Массив лицензий сервера

  • licenses.item
    object

    Объект, содержащий параметры лицензии сервера

  • licenses.item.addon*
    string

    Тип лицензии. Например ISPmanager или Windows Server

  • licenses.item.name
    string

    Наименование лицензии. Необходим для определения конкретной лицензии одного типа, если их несколько.

  • licenses.item.value
    integer

    Количество лицензий. Может потребоваться для ПО с несколькими однотипными лицензиями

  • name*
    string

    Имя сервера

  • recipe
    string

    Рецепт доп. ПО, используемый для создания сервера

  • storages*
    array

    Массив дисков сервера

  • storages.item*
    object

    Элемент, представляющий диск

  • storages.item.bootable
    boolean

    Является ли диск загрузочным. Только один диск, подключенный к серверу может быть загрузочным, на остальные диски ограничений нет.

  • storages.item.size*
    integer

    Размер диска сервера в гигабайтах

  • storages.item.storage_type
    string

    Тип диска. volume - для сетевых дисков, local - для локальных

  • user_data
    string

    Пользовательский скрипт cloud-init в виде строки base64

  • volume
    string

    Идентификатор диска, подключаемого к серверу

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса

  • result.created_in
    string

    Дата создания сервера

  • result.disk_data
    array

    Список, содержащий объекты дисков сервера

  • result.disk_data.item
    object

    Объект, содержащий информацию о диске

  • result.disk_data.item.id
    string

    Уникальный идентификатор диска

  • result.disk_data.item.links
    array

    Список ссылок на детальную информацию о диске

  • result.disk_data.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.disk_data.item.links.item.href
    string

    Ссылка

  • result.disk_data.item.links.item.rel
    string

    Версия API

  • result.disk_data.item.storage_type
    string

    Тип диска. volume - для сетевых дисков, local - для локальных

  • result.flavor
    object

    Шаблон, используемый для создания сервера.

  • result.flavor.ram
    integer

    Количество RAM

  • result.flavor.vcpus
    integer

    Количество vCPU

  • result.id
    string

    Уникальный идентификатор сервера

  • result.image
    string

    Образ операционной системы, используемый для создания сервера

  • result.links
    array

    Список ссылок на детальную информацию о сервере

  • result.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.links.item.href
    string

    Ссылка

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя сервера

  • result.status
    string

    Статус сервера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{object_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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
    url = URL,
    headers = HEADERS,
    json = {
		"name": "test",
		"flavor": {
			"ram": 2,
			"vcpus": 1
		},
		"storages": [
			{
				"bootable": true,
				"size": 10,
				"storage_type": "local"
			},
			{
				"size": 20,
				"type": "storage"
			}
		],
		"addresses": [
			{
				"ddos_protection": true,
				"external": true,
				"version": 4,
				"with_floating": true
			}
		],
		"image": "25b600e9-8026-46e3-9c89-f002b24b0842",
		"recipe": "e53e9b62-dd91-4a41-a794-4d6533b8139e",
		"keypairs": [
			"5e13f293-bcae-4551-b437-ca8cba47ce03"
		]
	}
)
Пример ответа:
{
	"code": 201,
	"title": "Created",
	"result": {
		"links": [
			{
				"rel": "self",
				"href": "http://api.clo.ru/v1/servers/934d0fff-a3fc-4c43-8b0c-2f4762a7f63d/detail"
			}
		],
		"name": "test",
		"flavor": {
			"vcpus": 1,
			"ram": 2048
		},
		"status": "BUILDING",
		"id": "934d0fff-a3fc-4c43-8b0c-2f4762a7f63d",
		"disk_data": [
			{
				"id": "cc7f8329-3083-412e-9c07-b59d06d895f4",
				"links": [
					{
						"rel": "self",
						"href": "http://api.clo.ru/v1/volumes/cc7f8329-3083-412e-9c07-b59d06d895f4/detail"
					}
				],
				"storage_type": "volume"
			},
			{
				"id": "d6595d27-83d6-472f-85d4-97eeb8c6f26b",
				"links": [
					{
						"rel": "self",
						"href": "http://api.clo.ru/v1/local-disks/d6595d27-83d6-472f-85d4-97eeb8c6f26b/detail"
					}
				],
				"storage_type": "local"
			}
		],
		"created_in": "2023-07-17T04:27:45.499221+00:00",
		"image": "25b600e9-8026-46e3-9c89-f002b24b0842"
	}
}

Удаление сервера

Запрос удаляет сервер из проекта
DELETE
/v1/servers/{server_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • server_id*
    string
    Передается в path.

    Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.

  • clear_fstab
    boolean

    Флаг очистки fstab

  • delete_addresses
    array,
    string

    Массив, содержащий список удаляемых адресов

  • delete_volumes
    array,
    string

    Список удаляемых виртуальных дисков

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/servers/{object_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)

Сервер (подробности)

Возвращает детальную информацию по серверу с указанным ID
GET
/v1/servers/{server_id}/detail

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • server_id*
    string
    Передается в path.

    Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса.

  • result.addresses
    array

    Массив IP-адресов сервера

  • result.addresses.item
    object

    Элемент, представляющий IP-адрес сервера

  • result.addresses.item.ddos_protection
    boolean

    Защита от DDoS-атак

  • result.addresses.item.external
    boolean

    Является ли IP-адрес внешним

  • result.addresses.item.id
    string

    Идентификатор IP-адреса

  • result.addresses.item.mac_addr
    string

    MAC-адрес интерфейса

  • result.addresses.item.name
    string

    Имя IP-адреса

  • result.addresses.item.ptr
    string

    Значение PTR-записи IP-адреса

  • result.addresses.item.type
    string

    Тип IP-адреса

  • result.addresses.item.version
    integer

    Версия IP-адреса

  • result.created_in
    string

    Дата создания сервера

  • result.disk_data
    array

    Список, содержащий объекты дисков сервера

  • result.disk_data.item
    object

    Объект, содержащий информацию о диске

  • result.disk_data.item.id
    string

    Уникальный идентификатор диска

  • result.disk_data.item.links
    array

    Список ссылок на детальную информацию о диске

  • result.disk_data.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.disk_data.item.links.item.href
    string

    Ссылка

  • result.disk_data.item.links.item.rel
    string

    Версия API

  • result.disk_data.item.storage_type
    string

    Тип диска. volume - для сетевых дисков, local - для локальных

  • result.flavor
    object

    Шаблон, используемый для создания сервера

  • result.flavor.ram
    integer

    Количество RAM

  • result.flavor.vcpus
    integer

    Количество vCPU

  • result.guest_agent
    boolean

    Установлен ли guest-agent в систему

  • result.id
    string

    Уникальный идентификатор сервера

  • result.image
    string

    Образ операционной системы, используемый для создания сервера

  • result.name
    string

    Имя сервера

  • result.project_id
    string

    Уникальный идентификатор проекта

  • result.recipe
    string

    Рецепт доп. ПО, используемый для создания сервера

  • result.rescue_mode
    string

    Находится ли сервер в режиме восстановления

  • result.status
    string

    Статус сервера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/servers/{object_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": {
		"name": "test",
		"guest_agent": true,
		"addresses": [
			{
				"ddos_protection": true,
				"name": "82.202.173.237",
				"mac_addr": "02:8b:72:43:40:d0",
				"ptr": "default.clo.ru",
				"id": "423e8ca6-bb34-43a6-8689-2e85d1a012dd",
				"type": "FIXED",
				"version": 4,
				"external": true
			}
		],
		"flavor":{
			"vcpus": 1,
			"ram": 2048
		},
		"status": "ACTIVE",
		"id": "934d0fff-a3fc-4c43-8b0c-2f4762a7f63d",
		"project_id": "8104913be7b44ac4871b106e8104e781",
		"disk_data": [
			{
				"id": "d6595d27-83d6-472f-85d4-97eeb8c6f26b",
				"links": [
					{
						"rel": "self",
						"href": "http://api.clo.ru/v1/local-disks/d6595d27-83d6-472f-85d4-97eeb8c6f26b/detail"
					}
				],
				"storage_type": "local"
			}
		],
		"rescue_mode": "NO",
		"recipe": "e53e9b62-dd91-4a41-a794-4d6533b8139e",
		"created_in": "2023-07-17T04:27:45+00:00",
		"image": "25b600e9-8026-46e3-9c89-f002b24b0842"
	}
}

Информация о лицензиях

Возвращает сведения о лицензиях, действующих на сервере
GET
/v1/servers/{server_id}/licenses

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • server_id*
    string
    Передается в path.

    Идентификатор сервера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество лицензий на сервере

  • results
    array

    Массив объектов, содержащих результаты запроса

  • results.item
    object

    Объект, содержащий результат запроса

  • results.item.activated_in
    string

    Дата и время активации лицензии

  • results.item.addon
    string

    Вид лицензии

  • results.item.created_in
    string

    Дата и время создания лицензии

  • results.item.id
    string

    Идентификатор лицензии

  • results.item.label
    string

    Название лицензии

  • results.item.name
    string

    Имя лицензии

  • results.item.status
    string

    Статус лицензии

  • results.item.value
    integer

    Количество лицензий на сервере

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/servers/{server_id}/licenses"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "results": [
        {
            "activated_in": "2023-09-08T04:51:36+00:00",
            "created_in": "2023-09-08T04:51:36+00:00",
            "addon": "ispmanager_6",
            "value": 1,
            "status": "ACTIVE",
            "label": "ISPManager 6 PRO",
            "name": "ispmanager_6_pro",
            "id": "4a92bc66-dade-478b-a7cb-e8aab42819fe"
        }
    ],
    "count": 1
}

Смена пароля сервера

Запрос изменяет пароль на указанном сервере
POST
/v1/servers/{server_id}/password

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • 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/{object_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

Запрос изменяет значение PTR-записи статического IP выбранного сервера
PUT
/v1/servers/{server_id}/ptr

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • server_id*
    string
    Передается в path.

    Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.

  • value*
    string

    Новое значение PTR-записи

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/servers/{server_id}/ptr"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.put(url = URL, headers = HEADERS, json = {"value":"default.clo.ru"})

Перезагрузить сервер

Запрос перезагружает указанный сервер
POST
/v1/servers/{server_id}/reboot

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • server_id*
    string
    Передается в path.

    Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.

  • reboot
    object

    Объект, содержащий параметры запроса на перезагрузку

  • reboot.type*
    string

    Либо HARD, либо SOFT

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/servers/{object_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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'reboot': {'type': 'SOFT'}})
Пример ответа:
{
	"code": 202,
	"title": "Accepted",
	"result": null
}

Режим восстановления сервера

Переводит сервер в режим восстановления
POST
/v1/servers/{server_id}/rescue

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор сервера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/servers/{server_id}/rescue"

# 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)
Пример ответа:
{
    "code": 202,
    "title": "Accepted",
    "result": null
}

Изменить параметры сервера

Запрос изменяет параметры выбранного сервера
POST
/v1/servers/{server_id}/resize

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • 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/{object_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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'ram': 4, 'vcpus': 2})
Пример ответа:
{
	"code": 202,
	"title": "Accepted",
	"result": null
}

Включить сервер

Запрос инициирует процедуру включения остановленного сервера
POST
/v1/servers/{server_id}/start

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • 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)
Пример ответа:
{
	"code": 202,
	"title": "Accepted",
	"result": null
}

Выключить сервер

Запрос инициирует процедуру остановки запущенного сервера
POST
/v1/servers/{server_id}/stop

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • 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/{object_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)
Пример ответа:
{
	"code": 202,
	"title": "Accepted",
	"result": null
}

Внешние IP-адреса

Внешние IP-адреса нужны для доступа в интернет

Подключение IP-адреса

Подключает IP-адрес к серверу, балансировщику или кластеру БД
POST
/v1/addresses/{address_id}/attach

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • address_id*
    string
    Передается в path.

    Идентификатор подключаемого IP-адреса

  • entity*
    string

    Тип объекта, к которому подключается адрес

  • id*
    string

    Идентификатор объекта, к которому подключается адрес

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результат запроса

  • result.address
    string

    Адрес IP

  • result.attached_to

    Информация об объекте, к которому подключен IP-адрес

  • result.created_in
    string

    Дата и время добавления IP-адреса в проект

  • result.ddos_protection
    boolean

    Показывает, защищён ли IP-адрес от DDoS-атак

  • result.external
    boolean

    Показывает, является ли IP-адрес внешним

  • result.id
    string

    Идентификатор IP-адреса

  • result.is_primary
    boolean

    Показывает, является ли IP-адрес основным

  • result.links
    array

    Массив ссылок на IP-адрес

  • result.links.item
    object

    Ссылка на IP-адрес

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.ptr
    string

    Значение PTR-записи

  • result.status
    string

    Статус IP-адреса

  • result.type
    string

    Тип IP-адреса

  • result.updated_in
    string

    Время последнего обновления IP-адреса

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/addresses/{address_id}/attach"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
    url = URL,
    headers = HEADERS,
    json = {
        "id":"d8e08853-c698-48ac-a612-f5ca5504c232",
        "entity":"server"
    }
)
Пример ответа:
{
    "code": 202,
    "title": "Accepted",
    "result": {
        "updated_in": "2023-07-24T18:50:07.808045Z",
        "links": [
            {
                "href": "http://api.clo.ru/v1/addresses/9edd9ab9-a791-4514-ae7e-16c2b5f31fa2/detail",
                "rel": "self"
            }
        ],
        "is_primary": true,
        "status": "PROCESSING",
        "ptr": "default.clo.ru",
        "type": "FIXED",
        "attached_to": {
            "links": [
                {
                    "href": "http://api.clo.ru/v1/servers/d8e08853-c698-48ac-a612-f5ca5504c232/detail",
                    "rel": "self"
                }
            ],
            "id": "d8e08853-c698-48ac-a612-f5ca5504c232",
            "entity": "server"
        },
        "ddos_protection": true,
        "external": true,
        "created_in": "2023-07-10T08:04:51Z",
        "id": "9edd9ab9-a791-4514-ae7e-16c2b5f31fa2",
        "address": "82.202.173.213"
    }
}

Удаление IP-адреса

Удаляет IP-адрес из проекта
DELETE
/v1/addresses/{address_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • address_id*
    string
    Передается в path.

    Идентификатор адреса

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/addresses/{address_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)

Отключение адреса

Отключает IP-адрес от сервера, балансировщика или кластера БД
POST
/v1/addresses/{address_id}/detach

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • address_id*
    string
    Передается в path.

    Идентификатор IP-адреса

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результат запроса

  • result.address
    string

    Адрес IP

  • result.attached_to

    Информация об объекте, к которому подключен IP-адрес

  • result.created_in
    string

    Дата и время добавления IP-адреса в проект

  • result.ddos_protection
    boolean

    Показывает, защищён ли IP-адрес от DDoS-атак

  • result.external
    boolean

    Показывает, является ли IP-адрес внешним

  • result.id
    string

    Идентификатор IP-адреса

  • result.is_primary
    boolean

    Показывает, является ли IP-адрес основным

  • result.links
    array

    Массив ссылок на IP-адрес

  • result.links.item
    object

    Ссылка на IP-адрес

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.ptr
    string

    Значение PTR-записи

  • result.status
    string

    Статус IP-адреса

  • result.type
    string

    Тип IP-адреса

  • result.updated_in
    string

    Время последнего обновления IP-адреса

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/addresses/{address_id}/detach"

# 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)
Пример ответа:
{
    "code": 202,
    "title": "Accepted",
    "result": {
        "is_primary": false,
        "id": "9edd9ab9-a791-4514-ae7e-16c2b5f31fa2",
        "ptr": "default.clo.ru",
        "links": [
            {
                "href": "http://api.clo.ru/v1/addresses/9edd9ab9-a791-4514-ae7e-16c2b5f31fa2/detail",
                "rel": "self"
            }
        ],
        "created_in": "2023-07-10T08:04:51Z",
        "type": "FIXED",
        "status": "PROCESSING",
        "updated_in": "2023-07-28T12:34:24.843486Z",
        "ddos_protection": true,
        "attached_to": null,
        "address": "82.202.173.213",
        "external": true
    }
}

Детали адреса

Возвращает детальную информацию об IP-адресе
GET
/v1/addresses/{address_id}/detail

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • address_id*
    string
    Передается в path.

    Идентификатор IP-адреса

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результат запроса

  • result.address
    string

    Адрес IP

  • result.attached_to

    Информация об объекте, к которому подключен IP-адрес

  • result.created_in
    string

    Дата и время добавления IP-адреса в проект

  • result.ddos_protection
    boolean

    Показывает, защищён ли IP-адрес от DDoS-атак

  • result.external
    boolean

    Показывает, является ли IP-адрес внешним

  • result.id
    string

    Идентификатор IP-адреса

  • result.is_primary
    boolean

    Показывает, является ли IP-адрес основным

  • result.links
    array

    Массив ссылок на IP-адрес

  • result.links.item
    object

    Ссылка на IP-адрес

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.ptr
    string

    Значение PTR-записи

  • result.status
    string

    Статус IP-адреса

  • result.type
    string

    Тип IP-адреса

  • result.updated_in
    string

    Время последнего обновления IP-адреса

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/addresses/{address_id}/detail"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "is_primary": false,
        "id": "c06b83ee-6738-421a-ba06-26869f4d4dda",
        "ptr": "default.clo.ru",
        "links": [
            {
                "href": "http://api.clo.ru/v1/addresses/c06b83ee-6738-421a-ba06-26869f4d4dda/detail",
                "rel": "self"
            }
        ],
        "created_in": "2023-07-27T02:34:25Z",
        "type": "FIXED",
        "status": "ACTIVE",
        "updated_in": "2023-07-27T02:36:40Z",
        "ddos_protection": false,
        "attached_to": {
            "links": [
                {
                    "href": "http://api.clo.ru/v1/servers/1fd210b6-7947-4fa5-9cbe-3170da979108/detail",
                    "rel": "self"
                }
            ],
            "id": "1fd210b6-7947-4fa5-9cbe-3170da979108",
            "entity": "server"
        },
        "address": "192.168.0.4",
        "external": false
    }
}

Присвоение IP-адресу статуса основного

Делает IP-адрес основным для связанного с ним объекта
POST
/v1/addresses/{address_id}/primary

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • address_id*
    string
    Передается в path.

    Идентификатор основного IP-адреса

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результат запроса

  • result.address
    string

    Адрес IP

  • result.attached_to

    Информация об объекте, к которому подключен IP-адрес

  • result.created_in
    string

    Дата и время добавления IP-адреса в проект

  • result.ddos_protection
    boolean

    Показывает, защищён ли IP-адрес от DDoS-атак

  • result.external
    boolean

    Показывает, является ли IP-адрес внешним

  • result.id
    string

    Идентификатор IP-адреса

  • result.is_primary
    boolean

    Показывает, является ли IP-адрес основным

  • result.links
    array

    Массив ссылок на IP-адрес

  • result.links.item
    object

    Ссылка на IP-адрес

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.ptr
    string

    Значение PTR-записи

  • result.status
    string

    Статус IP-адреса

  • result.type
    string

    Тип IP-адреса

  • result.updated_in
    string

    Время последнего обновления IP-адреса

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/addresses/{address_id}/primary"

# 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)
Пример ответа:
{
    "code": 202,
    "title": "Accepted",
    "result": {
        "is_primary": true,
        "id": "8aeb78e4-1f62-4d28-a4d8-0e0f0210f5c4",
        "ptr": "default.clo.ru",
        "links": [
            {
                "href": "http://api.clo.ru/v1/addresses/8aeb78e4-1f62-4d28-a4d8-0e0f0210f5c4/detail",
                "rel": "self"
            }
        ],
        "created_in": "2023-07-28T13:35:16Z",
        "type": "FIXED",
        "status": "PROCESSING",
        "updated_in": "2023-07-28T13:45:27.071472Z",
        "ddos_protection": true,
        "attached_to": {
            "links": [
                {
                    "href": "http://api.clo.ru/v1/servers/1fd210b6-7947-4fa5-9cbe-3170da979108/detail",
                    "rel": "self"
                }
            ],
            "id": "1fd210b6-7947-4fa5-9cbe-3170da979108",
            "entity": "server"
        },
        "address": "82.202.172.128",
        "external": true
    }
}

Изменение значения записи PTR

Изменияет PTR-запись для выбранного IP-адреса
PUT
/v1/addresses/{address_id}/ptr

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • address_id*
    string
    Передается в path.

    Идентификатор IP-адреса

  • value*
    string

    Значение PTR-записи

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/addresses/{address_id}/ptr"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.put(url = URL, headers = HEADERS, json = {'value': 'default.clo.ru'})

Получение списка IP-адресов проекта

Возвращает списоке доступных на проекте IP-адресов
GET
/v1/projects/{project_id}/addresses

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Идентификатор проекта

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов, содержащих IP-адреса проекта

  • results
    array

    Массив объектов, содержащих IP-адреса, доступные в проекте

  • results.item
    object

    Объект с информацией о доступном в проекте IP-адресе

  • results.item.address
    string

    Адрес IP

  • results.item.attached_to

    Объект, с которым связан IP-адрес

  • results.item.created_in
    string

    Дата и время создания IP-адреса

  • results.item.ddos_protection
    boolean

    Показывает, защищён ли IP-адрес от DDoS-атак

  • results.item.external
    boolean

    Показывает, является ли IP-адрес внешним

  • results.item.id
    string

    Идентификатор IP-адреса

  • results.item.is_primary
    boolean

    Показывает, является ли IP-адрес основным

  • results.item.links
    array

    Массив ссылок на IP-адрес

  • results.item.links.item
    object

    Ссылка на IP-адрес

  • results.item.links.item.href
    string

    URL-адрес ссылки

  • results.item.links.item.rel
    string

    Версия API

  • results.item.ptr
    string

    Значение PTR-записи

  • results.item.status
    string

    Статус IP-адреса

  • results.item.type
    string

    Тип IP-адреса

  • results.item.updated_in
    string

    Время последнего обновления IP-адреса

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/addresses"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 1,
    "results": [
        {
            "is_primary": true,
            "id": "9edd9ab9-a791-4514-ae7e-16c2b5f31fa2",
            "ptr": "default.clo.ru",
            "links": [
                {
                    "href": "http://api.clo.ru/v1/addresses/9edd9ab9-a791-4514-ae7e-16c2b5f31fa2/detail",
                    "rel": "self"
                }
            ],
            "created_in": "2023-07-10T08:04:51Z",
            "type": "FIXED",
            "status": "ACTIVE",
            "updated_in": "2023-07-24T18:50:36Z",
            "ddos_protection": true,
            "attached_to": {
                "links": [
                    {
                        "href": "http://api.clo.ru/v1/servers/d8e08853-c698-48ac-a612-f5ca5504c232/detail",
                        "rel": "self"
                    }
                ],
                "id": "d8e08853-c698-48ac-a612-f5ca5504c232",
                "entity": "server"
            },
            "address": "82.202.173.213",
            "external": true
        }
    }
}

Создание нового IP-адреса

Создаёт в проекте новый IP_адрес с заданными параметрами
POST
/v1/projects/{project_id}/addresses

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Идентификатор проекта

  • ddos_protection
    boolean

    Определяет, подключена ли к новому IP_адресу защита от DDoS-атак

Формат ответа

  • Параметр
    Тип данных
    Описание
  • address
    string

    IP-адрес

  • attached_to

    Объект, с которым связан IP-адрес

  • created_in
    string

    Дата и время создания IP-адреса

  • ddos_protection
    boolean

    Показывает, подключена ли к адресу защита от DDoS-атак

  • external
    boolean

    Показывает, является ли адрес внешним

  • id
    string

    Идентификатор IP-адреса

  • is_primary
    boolean

    Показывает, является ли данный IP-адрес основным

  • links
    array

    Массив ссылок на IP-адрес

  • links.item
    object

    Ссылка на IP-адрес

  • links.item.href
    string

    URL-адрес ссылки

  • links.item.rel
    string

    Версия API

  • ptr
    string

    Значение PTR-записи для IP-адреса

  • status
    string

    Статус IP-адреса

  • type
    string

    Тип IP-адреса

  • updated_in
    string

    Дата и время последнего обновления IP-адреса

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/addresses"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'ddos_protection': True})
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "is_primary": false,
        "id": "c06b83ee-6738-421a-ba06-26869f4d4dda",
        "ptr": "default.clo.ru",
        "links": [
            {
                "href": "http://api.clo.ru/v1/addresses/c06b83ee-6738-421a-ba06-26869f4d4dda/detail",
                "rel": "self"
            }
        ],
        "created_in": "2023-07-27T02:34:25Z",
        "type": "FIXED",
        "status": "CREATING",
        "updated_in": "2023-07-27T02:36:40Z",
        "ddos_protection": false,
        "attached_to": null,
        "address": "192.168.0.4",
        "external": false
    }
}

Диски

Диски в инфраструктуре CLO — аналоги физических дисков для хранения оперативной информации и работы с ней. Диски отличаются по типу и назначению.

Локальный диск (подробности)

Возвращает детальную информацию по локальному диску с указанным ID.
GET
/v1/local-disks/{local_disk_id}/detail

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • local_disk_id*
    string
    Передается в path.

    Уникальный идентификатор диска. Можно получить из запроса v1/projects/{project_id}/local-disks

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса

  • result.attached_to_server
    object

    Объект содержащий информацию о сервере, к которому прикреплен диск

  • result.attached_to_server.id
    string

    Уникальный идентификатор сервера

  • result.attached_to_server.links
    array

    Массив ссылок на детальную информацию о сервере

  • result.attached_to_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.attached_to_server.links.item.href
    string

    Ссылка

  • result.attached_to_server.links.item.rel
    string

    Версия API

  • result.bootable
    boolean

    Является ли диск загрузочным

  • result.created_in
    string

    Дата создания диска

  • result.id
    string

    Уникальный идентификатор диска

  • result.links
    array

    Массив ссылок на детальную информацию о локальном диске

  • result.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.links.item.href
    string

    Ссылка

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя диска

  • result.size
    integer

    Размер диска в гигабайтах

  • result.status
    string

    Статус локального диска

Пример запроса:
  • 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 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"
			}
		]
	}
}

Локальные диски (список)

Запрос возвращает список локальных дисков, доступных на проекте
GET
/v1/projects/{project_id}/local-disks

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в списке

  • results
    array

    Массив локальных дисков

  • results.item
    object

    Объект, содержащий параметры локального диска

  • results.item.attached_to_server
    object

    Объект содержащий информацию о сервере, к которому прикреплен диск

  • results.item.attached_to_server.id
    string

    Уникальный идентификатор сервера

  • results.item.attached_to_server.links
    array

    Массив ссылок на детальную информацию о сервере

  • results.item.attached_to_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.attached_to_server.links.item.href
    string

    Ссылка

  • results.item.attached_to_server.links.item.rel
    string

    Версия API

  • results.item.bootable
    boolean

    Является ли диск загрузочным. В случае локальных дисков всегда будет возвращать true

  • results.item.created_in
    string

    Дата создания диска

  • results.item.id
    string

    Уникальный идентификатор диска

  • results.item.links
    array

    Массив ссылок на детальную информацию о локальном диске

  • results.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.links.item.href
    string

    Ссылка

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Имя локального диска

  • results.item.size
    integer

    Размер диска в гигабайтах

  • results.item.status
    string

    Статус локального диска

Пример запроса:
  • 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 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
}

Сетевые диски (список)

Запрос возвращает список сетевых дисков, доступных на проекте
GET
/v1/projects/{project_id}/volumes

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в списке

  • results
    array

    Массив сетевых дисков

  • results.item
    object

    Объект, содержащий параметры сетевого диска

  • results.item.attached_to_server
    object

    Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск

  • results.item.attached_to_server.id
    string

    Уникальный идентификатор сервера

  • results.item.attached_to_server.links
    array

    Массив ссылок на детальную информацию о сервере

  • results.item.attached_to_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.attached_to_server.links.item.href
    string

    Ссылка

  • results.item.attached_to_server.links.item.rel
    string

    Версия API

  • results.item.bootable
    boolean

    Является ли сетевой диск загрузочным

  • results.item.created_in
    string

    Дата создания диска

  • results.item.description
    string

    Комментарий к диску

  • results.item.device
    string

    Путь до устройства в операционной системе

  • results.item.id
    string

    Уникальный идентификатор сетевого диска

  • results.item.links
    array

    Массив ссылок на детальную информацию о сетевом диске

  • results.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.links.item.href
    string

    Ссылка

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Имя сетевого диска

  • results.item.size
    integer

    Размер диска в гигабайтах

  • results.item.status
    string

    Статус сетевого диска

  • results.item.undetachable
    boolean

    Является ли диск неотключаемым

Пример запроса:
  • 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 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"
		}
	]
}

Создать сетевой диск

Запрос создает сетевой диск с заданными параметрами. В случае успешного выполнения возвращает код 201
POST
/v1/projects/{project_id}/volumes

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects

  • autorename
    boolean

    Автоматическое переименование диска

  • name*
    string

    Имя диска

  • size*
    integer

    Размер диска в гигабайтах

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса

  • result.attached_to_server
    object

    Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск. Отсутствует, если диск не подключен к серверу

  • result.attached_to_server.id
    string

    Уникальный идентификатор сервера

  • result.attached_to_server.links
    array

    Массив ссылок на детальную информацию о сервере

  • result.attached_to_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.attached_to_server.links.item.href
    string

    Ссылка

  • result.attached_to_server.links.item.rel
    string

    Версия API

  • result.bootable
    boolean

    Является ли диск загрузочным

  • result.created_in
    string

    Дата создания диска

  • result.description
    string

    Комментарий к диску

  • result.device
    string

    Имя устройства в операционной системе

  • result.id
    string

    Уникальный идентификатор диска

  • result.links
    array

    Массив ссылок на детальную информацию о сетевом диске

  • result.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.links.item.href
    string

    Ссылка

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя диска.

  • result.size
    integer

    Размер диска в гигабайтах

  • result.status
    string

    Статус сетевого диска

  • result.undetachable
    boolean

    Является ли диск неотключаемым

Пример запроса:
  • 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 request and saving the response as response object
# you need to replace all dummy values for appropriate keys with real parameters
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",
		"description": "",
		"attached_to_server": null,
		"links": [
			{
				"href": "https://api.clo.ru/v1/volumes/ed735e62-3003-47e1-beaa-caf7f2221319/detail",
				"rel": "self"
			}
		]
	}
}

Подключить сетевой диск

Подключает указанный диск к серверу
POST
/v1/volumes/{volume_id}/attach

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • volume_id*
    string
    Передается в path.

    Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes

  • mount_path
    string

    Путь для подключения диска внутри файловой системы

  • server_id*
    string

    Уникальный идентификатор сервера, к которому нужно подключить диск

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса

  • result.device
    string

    Имя устройства в операционной системе

  • result.mount_cmd
    string

    Команда монтирования устройства

  • result.mountpoint
    string

    Точка монтирования диска в операционной системе

  • result.server
    object

    Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск

  • result.server.id
    string

    Уникальный идентификатор сервера

  • result.server.links
    array

    Массив ссылок на детальную информацию о сервере

  • result.server.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.server.links.item.href
    string

    Ссылка

  • result.server.links.item.rel
    string

    Версия API

  • result.volume
    object

    Объект содержащий в себе информацию о сетевом диске

  • result.volume.id
    string

    Уникальный идентификатор сетевого диска

  • result.volume.links
    array

    Массив ссылок на детальную информацию о сетевом диске

  • result.volume.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.volume.links.item.href
    string

    Ссылка

  • result.volume.links.item.rel
    string

    Версия 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 request and saving the response as response object
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'server_id': '7a7bed21-4816-4f24-93d7-fb019e6c3f7a'})
Пример ответа:
{
	"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"
	}
}

Удалить сетевой диск

Удаляет указанный сетевой диск
DELETE
/v1/volumes/{volume_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • 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 request and saving the response as response object
r = requests.delete(url = URL, headers = HEADERS)

Отключить сетевой диск

Отключает сетевой диск от сервера, к которому подключен
POST
/v1/volumes/{volume_id}/detach

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • volume_id*
    string
    Передается в path.

    Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.

  • force
    boolean

    Игнорировать ошибки

Формат ответа

Отсутствует
Пример запроса:
  • 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'}

# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'force': False})
Пример ответа:
{
	"code": 202,
	"title": "Accepted"
}

Сетевой диск (подробности)

Возвращает детальную информацию по сетевому диску с указанным ID
GET
/v1/volumes/{volume_id}/detail

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • volume_id*
    string
    Передается в path.

    Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса

  • result.attached_to_server
    object

    Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск

  • result.attached_to_server.id
    string

    Уникальный идентификатор сервера

  • result.attached_to_server.links
    array

    Массив ссылок на детальную информацию о сервере

  • result.attached_to_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.attached_to_server.links.item.href
    string

    Ссылка

  • result.attached_to_server.links.item.rel
    string

    Версия API

  • result.bootable
    boolean

    Является ли диск загрузочным

  • result.created_in
    string

    Дата создания диска

  • result.description
    string

    Комментарий к диску

  • result.device
    string

    Имя устройства в операционной системе

  • result.id
    string

    Уникальный идентификатор диска

  • result.links
    array

    Массив ссылок на детальную информацию о сетевом диске

  • result.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.links.item.href
    string

    Ссылка

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя диска

  • result.size
    integer

    Размер диска в гигабайтах

  • result.status
    string

    Статус сетевого диска

  • result.undetachable
    boolean

    Является ли диск неотключаемым

Пример запроса:
  • 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 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",
		"attached_to_server": null,
		"description": "",
		"device": null
	}
}

Увеличить сетевой диск

Запрос увеличивает размер сетевого диска
POST
/v1/volumes/{volume_id}/extend

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • 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 request and saving the response as response object
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'new_size': 20})
Пример ответа:
{
	"code": 202,
	"title": "Accepted",
	"result": null
}

Плавающие IP

Плавающий IP-адрес существует отдельно от сервера. Его можно отключить от сервера и подключить к другому в любой момент. После подключения адрес настраивается автоматически. Адрес остается закрепленным за клиентом всё время, пока клиент явно не удалит его. Через плавающий адрес сетевые операции проходят медленнее, чем через статический, поскольку адрес работает через NAT.

Подключить IP к серверу или балансировщику

Подключает указанный адрес к серверу или балансировщику нагрузки
POST
/v1/floatingips/{floating_id}/attach

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • floating_id*
    string
    Передается в path.

    Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.

  • server_id*
    string

    Уникальный идентификатор сервера, к которому нужно подключить адрес

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий информацию об адресе

  • result.attached_to_loadbalancer
    object

    Информация о балансировщике, к которому подключен IP-адрес

  • result.attached_to_loadbalancer.id
    string

    Идентификатор балансировщика

  • result.attached_to_loadbalancer.links
    array

    Массив ссылок на балансировщики, связанные с IP-адресом

  • result.attached_to_loadbalancer.links.item
    object

    Ссылка на балансировщик

  • result.attached_to_loadbalancer.links.item.href
    string

    URL ссылки на балансировщик

  • result.attached_to_loadbalancer.links.item.rel
    string

    Версия API

  • result.attached_to_server
    object

    Информация о сервере, к которому подключен IP

  • result.attached_to_server.id
    string

    Уникальный идентификатор сервера

  • result.attached_to_server.links
    array

    Массив ссылок на детальную информацию о сервере

  • result.attached_to_server.links.item
    object

    Ссылка на сервер

  • result.attached_to_server.links.item.href
    string

    URL-адрес ссылки на сервер

  • result.attached_to_server.links.item.rel
    string

    Версия API

  • result.created_in
    string

    Дата создания адреса

  • result.ddos_protection
    boolean

    Защита от DDoS-атак

  • result.fixed_ip_address
    string

    Внешний фиксированный IP-адрес

  • result.floating_ip_address
    string

    IP адрес в серой сети, к которому подключен IP-адрес

  • result.id
    string

    Уникальный идентификатор адреса

  • result.links
    array

    Массив ссылок на детальную информацию об IP-адресе

  • result.links.item
    object

    Ссылка на IP-адрес

  • result.links.item.href
    string

    URL-адрес ссылки на IP

  • result.links.item.rel
    string

    Версия API

  • result.ptr
    string

    Значение PTR-записи

  • result.status
    string

    Статус IP-адреса

  • result.updated_in
    string

    Время последнего обновления элемента

Пример запроса:
  • 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 post request and saving the response as response object
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'server_id': '0efafbaf-6918-4070-bc9b-e573b14fc7a3'})
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "updated_in": "2023-07-10T06:46:22.865982+00:00",
        "ddos_protection": false,
        "id": "ba86d544-905c-4f8c-add1-ea6ead3fda2a",
        "ptr": "default.clo.ru",
        "created_in": "2023-07-10T06:23:43+00:00",
        "status": "PROCESSING",
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/floatingips/ba86d544-905c-4f8c-add1-ea6ead3fda2a/detail"
            }
        ]
    }
}

Удалить плавающий IP

Запрос удаляет плавающий IP из проекта
DELETE
/v1/floatingips/{floating_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • floating_id*
    string
    Передается в path.

    Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.

Формат ответа

Отсутствует
Пример запроса:
  • 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

Отключает адрес от сервера, к которому подключен
POST
/v1/floatingips/{floating_id}/detach

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • floating_id*
    string
    Передается в path.

    Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.

Формат ответа

Отсутствует
Пример запроса:
  • 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 (подробности)

Возвращает детальную информацию по внешнему IP-адресу с указанным ID
GET
/v1/floatingips/{floating_id}/detail

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • floating_id*
    string
    Передается в path.

    Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса

  • result.attached_to_loadbalancer
    object

    Информация о балансировщике, к которому подключен внешний IP

  • result.attached_to_loadbalancer.id
    string

    Идентификатор балансировщика

  • result.attached_to_loadbalancer.links
    array

    Массив ссылок на балансировщик

  • result.attached_to_loadbalancer.links.item
    object

    Ссылка на балансировщик

  • result.attached_to_loadbalancer.links.item.href
    string

    URL-адрес ссылки на балансировщик

  • result.attached_to_loadbalancer.links.item.rel
    string

    Версия API

  • result.attached_to_server
    object

    Информация о сервере, к которому подключен плавающий IP

  • result.attached_to_server.id
    string

    ID сервера

  • result.attached_to_server.links
    array

    Массив ссылок на детальную информацию о сервере

  • result.attached_to_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.attached_to_server.links.item.href
    string

    Ссылка

  • result.attached_to_server.links.item.rel
    string

    Версия API

  • result.created_in
    string

    Дата создания адреса

  • result.ddos_protection
    boolean

    Защита от DDoS-атак

  • result.fixed_ip_address
    string

    IP адрес в серой сети, к которому подключен плавающий IP

  • result.floating_ip_address
    string

    IP адрес

  • result.id
    string

    Уникальный идентификатор адреса

  • result.links
    array

    Массив ссылок на детальную информацию о плавающем IP

  • result.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.links.item.href
    string

    Ссылка

  • result.links.item.rel
    string

    Версия API

  • result.ptr
    string

    Значение PTR-записи

  • result.status
    string

    Статус плавающего IP

  • result.updated_in
    string

    Время последнего обновления элемента

Пример запроса:
  • 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",
	"ddos_protection": false,
	"ptr": "default.clo.ru"
  }
}

Изменение PTR-записи плавающего IP

Запрос изменяет значение PTR-записи выбранного плавающего IP
PUT
/v1/floatingips/{floating_id}/ptr

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • floating_id*
    string
    Передается в path.

    Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.

  • value*
    string

    Новое значение PTR-записи

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/floatingips/{floating_id}/ptr"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.put(url = URL, headers = HEADERS, json = {"value": "default.clo.ru"})

Список плавающих IP

Запрос возвращает список плавающих IP, доступных на проекте
GET
/v1/projects/{project_id}/floatingips

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в результирующем ответе

  • results
    array

    Массив плавающих IP

  • results.item
    object

    Объект, содержащий параметры плавающего IP

  • results.item.attached_to_loadbalancer
    object

    Информация о балансировщике, к кторому прикреплён IP-адрес

  • results.item.attached_to_loadbalancer.id
    string

    Идентификатор балансировщика

  • results.item.attached_to_loadbalancer.links
    array

    Массив ссылок на балансировщик

  • results.item.attached_to_loadbalancer.links.item
    object

    Ссылка на балансировщик

  • results.item.attached_to_loadbalancer.links.item.href
    string

    URL-адрес ссылки на балансировщик

  • results.item.attached_to_loadbalancer.links.item.rel
    string

    Версия API

  • results.item.attached_to_server
    object

    Информация о сервере, к которому подключен плавающий IP

  • results.item.attached_to_server.id
    string

    Уникальный идентификатор сервера

  • results.item.attached_to_server.links
    array

    Массив ссылок на детальную информацию о сервере

  • results.item.attached_to_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.attached_to_server.links.item.href
    string

    Ссылка

  • results.item.attached_to_server.links.item.rel
    string

    Версия API

  • results.item.created_in
    string

    Дата создания

  • results.item.ddos_protection
    boolean

    Защита от DDoS-атак

  • results.item.fixed_ip_address
    string

    IP адрес в серой сети, к которому подключен плавающий IP

  • results.item.floating_ip_address
    string

    IP адрес

  • results.item.id
    string

    Уникальный идентификатор плавающего IP

  • results.item.links
    array

    Массив ссылок на детальную информацию о плавающем IP

  • results.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.links.item.href
    string

    Ссылка

  • results.item.links.item.rel
    string

    Версия API

  • results.item.ptr
    string

    Значение PTR-записи

  • results.item.status
    string

    Состояние плавающего IP адреса

  • results.item.updated_in
    string

    Время последнего обновления элемента

Пример запроса:
  • 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

Запрос создает плавающий IP с заданными параметрами
POST
/v1/projects/{project_id}/floatingips

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.

  • ddos_protection
    boolean

    При установке флага вы получите защищенный от DDoS-атак IP-адрес

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результаты запроса

  • result.fixed_ip_address
    string

    Локальный IP-адрес, к которому подключен плавающий IP

  • result.floating_ip_address
    string

    IP адрес

  • result.id
    string

    Уникальный идентификатор IP-адреса

  • result.links
    array

    Список ссылок на детальную информацию об IP-адресе

  • result.links.item
    object

    Ссылка на IP-адрес

  • result.links.item.href
    string

    URL-адрес ссылки на IP

  • result.links.item.rel
    string

    Версия API

Пример запроса:
  • 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {"ddos_protection": True})
Пример ответа:
{
  "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"
      }
    ]
  }
}

Лицензии

Лицензии для серверов

Удаление лицензии

Удаляет лицензию
DELETE
/v1/licenses/{license_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • license_id*
    string
    Передается в path.

    Идентификатор лицензии

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/licenses/{license_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)

Изменение лицензии

Изменяет версию лицензии на сервере
PATCH
/v1/licenses/{license_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • license_id*
    string
    Передается в path.

    Идентификатор лицензии

  • name
    string

    Название лицензии

  • value
    integer

    Количество лицензий (всегда 1 для ISPmanager)

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/licenses/{license_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,
    json = {
    "name": "ispmanager_6_pro",
    "value": 1
    }
)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": null
}

Список лицензий

Возвращает список лицензий проекта
GET
/v1/licenses

Параметры запроса

Отсутствуют

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество лицензий

  • results
    array

    Массив объектов, содержащих результаты запроса

  • results.item
    object

    Объект, содержащий информацию о лицензии

  • results.item.addon
    string

    Вид лицензии

  • results.item.items
    array

    Массив объектов, содержащих информацию о конкуреном виде лицензий

  • results.item.items.item
    object

    Объект, содержащий сведения об определённой лицензии

  • results.item.items.item.name
    string

    Название лицензии для патча сервера

  • results.item.items.item.title
    string

    Название лицензии

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/licenses"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "results": [
        {
            "addon": "ispmanager_6",
            "fields": [],
            "items": [
                {
                    "title": "ISPManager 6 Lite",
                    "name": "ispmanager_6_lite"
                }
            ]
        }
    ],
    "count": 1
}

Прикрепление лицензии

Прикрепляет лицензию к серверу
POST
/v1/servers/{server_id}/licenses

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • server_id*
    string
    Передается в path.

    Идентификатор сервера

  • addon*
    string

    Название лицензии

  • name
    string

    Имя лицензии

  • value
    integer

    Количество прикрепляемых лицензий

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/servers/{server_id}/licenses"

# you need to replace all dummy values for appropriate keys with real parameters
# 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,
    json = {
        "addon": "ispmanager_6",
        "name": "ispmanager_6_host"
    }
)
Пример ответа:
{
    "code": 201,
    "title": "Created",
    "result": null
}

Балансировщики нагрузки

Балансировщики нагрузки распределяют нагрузку и проверяют доступность серверов.

Изменение алгоритма балансировки

Изменяет способ балансировки для выбранного балансимровщика
POST
/v1/loadbalancers/{loadbalancer_id}/algorithm

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • algorithm*
    string

    Выбранный алгоритм балансировки нагрузки (ROUND_ROBIN или LEAST_CONNECTION)

  • body
    object

    Содержимое запроса

  • session_persistence*
    boolean

    Если это значение истинно, то новые запросы распределяются по способу балансировки

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_id}/algorithm"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
    url = URL,
    headers = HEADERS,
    json = {
        "algorithm":"LEAST_CONNECTIONS",
        "session_persistence": True
    }
)

Удаление балансировщика

Удаляет балансировщик нагрузки
DELETE
/v1/loadbalancers/{loadbalancer_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • loadbalancer_id*
    string
    Передается в path.

    Идентификатор балансировщика

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_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)

Детали балансировщика

Возвращает детальную информацию об указанном балансировщике
GET
/v1/loadbalancers/{loadbalancer_id}/detail

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • loadbalancer_id*
    string
    Передается в path.

    Идентификатор балансировщика

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, соержащий информацию об указанном балансировщике

  • result.addresses
    array

    Массив IP-адресов, обрабатываемых балансировщиком

  • result.addresses.item
    object

    IP-адрес, обрабатываемый балансировщиком

  • result.addresses.item.ddos_protection
    boolean

    Показывает, защищён ли IP-адрес от DDoS-атак

  • result.addresses.item.external
    boolean

    Показывает, является ли IP-адрес внешним

  • result.addresses.item.id
    string

    Идентификатор IP-адреса

  • result.addresses.item.mac_addr
    string

    MAC-адрес, привязанный к IP-адресу

  • result.addresses.item.name
    string

    Имя IP-адреса

  • result.addresses.item.ptr
    string

    PTR-запись, связанная с IP-адресом

  • result.addresses.item.type
    string

    Тип IP-адреса

  • result.addresses.item.version
    integer

    Версия IP-адреса

  • result.algorithm
    string

    Алгоритм работы балансировщика

  • result.created_in
    string

    Дата и время создания балансировщика

  • result.healthmonitor
    object

    Объект, содержащий информацию о проверке доступности балансировщика

  • result.healthmonitor.delay
    integer

    Интервал проверки доступности в секундах

  • result.healthmonitor.expected_codes
    string

    Ожидаемые HTTP-коды ответов при проверке доступности

  • result.healthmonitor.http_method
    string

    Используемый метод проверки доступности по HTTP

  • result.healthmonitor.max_retries
    integer

    Маскимальное количество попыток при проверке доступности

  • result.healthmonitor.timeout
    integer

    Длительность ожидания ответа при проверке доступности в секундах

  • result.healthmonitor.type
    string

    Способ проверки доступности

  • result.healthmonitor.url_path
    string

    URL-адрес для проверки доступности

  • result.id
    string

    Идентификатор балансировщика

  • result.links
    array

    Массив ссылок на балансировщик

  • result.links.item
    object

    Ссылка на балансировщик

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя балансировщика

  • result.project_id
    string

    Идентификатор проекта, с которым связан балансировщик

  • result.rules_count
    integer

    Текущее количество правил, подключенных к балансировщику

  • result.rules_limit
    integer

    Максимальное количество правил, подключенных к балансировщику

  • result.session_persistence
    boolean

    Если это значение истинно, новые запросыв распределяются по способу балансировки

  • result.status
    string

    Статус балансировщика

  • result.updated_in
    string

    Время последнего обновления балансировщика

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_id}/detail"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "status": "ACTIVE",
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/loadbalancers/4601395a-712d-462f-a6af-ccbe388b3340/detail"
            }
        ],
        "healthmonitor": {
            "type": "TCP",
            "delay": 80,
            "max_retries": 5,
            "timeout": 15
        },
        "session_persistence": true,
        "algorithm": "LEAST_CONNECTIONS",
        "id": "4601395a-712d-462f-a6af-ccbe388b3340",
        "project_id": "2c1e87b6-0412-44e6-92f6-288157d941a4",
        "addresses": [
            {
                "type": "FIXED",
                "mac_addr": null,
                "external": false,
                "ptr": "default.clo.ru",
                "ddos_protection": false,
                "id": "a54dac21-3c2c-4d95-968e-be402da01b93",
                "version": 4,
                "name": "192.168.0.3"
            },
            {
                "type": "FLOATING",
                "mac_addr": null,
                "external": true,
                "ptr": "default.clo.ru",
                "ddos_protection": false,
                "id": "041b6c8a-9288-47a4-8c6a-aaf9343a5e8a",
                "version": 4,
                "name": "195.140.146.47"
            }
        ],
        "rules_limit": 100,
        "rules_count": 2,
        "name": "LoadBalancer1"
    }
}

Изменение параметров проверки доступности

Изменяет информацию о параметрах проверки доступности балансировщика
PUT
/v1/loadbalancers/{loadbalancer_id}/healthmonitor

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • body
    object

    Объект, связанный с балансировщиком нагрузки

  • delay*
    integer

    Интервал проверки доступности в секундах

  • expected_codes
    string

    Ожидаемые коды ответов при проверке доступности

  • http_method
    string

    Используемый метод проверки доступности по HTTP

  • max_retries*
    integer

    Маскимальное количество попыток при проверке доступности

  • timeout*
    integer

    Длительность ожидания ответа при проверке доступности в секундах

  • type*
    string

    Способ проверки доступности

  • url_path
    string

    URL-адрес для проверки доступности

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_id}/healthmonitor"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.put(
    url = URL,
    headers = HEADERS,
    json = {
    "delay": 90,
    "max_retries": 5,
    "timeout": 15,
    "type": "PING"
    }
)

Изменение имени балансировщика

Меняет имя балансировщика нагрузки
PATCH
/v1/loadbalancers/{loadbalancer_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • name*
    string

    Имя балансировщика

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.patch(url = URL, headers = HEADERS, json = {'name': 'loadbalancer_new_name'})

Список правил балнсировщика

Возвращает список используемых правил балансировщика
GET
/v1/loadbalancers/{loadbalancer_id}/rules

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • loadbalancer_id*
    string
    Передается в path.

    Идентификатор балансировщика

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов, содержащих правила балансировщика

  • result
    array

    Массив объектов, содержащих правила балансировщика

  • result.item
    object

    Объект, содержащий правило балансировщика

  • result.item.external_protocol_port
    integer

    Порт балансировщика

  • result.item.id
    string

    Идентификатор правила

  • result.item.internal_protocol_port
    integer

    Порт сервера

  • result.item.links
    array

    Массив ссылок на информацию о правиле

  • result.item.links.item
    object

    Ссылка на информацию о правиле

  • result.item.links.item.href
    string

    URL-адрес ссылки на правило

  • result.item.links.item.rel
    string

    Версия API

  • result.item.loadbalancer
    object

    Объект, содержащий детальную информацию о балансировщике, к которому подключено правило

  • result.item.loadbalancer.id
    string

    Идентификатор балансировщика

  • result.item.loadbalancer.links
    array

    Массив ссылок на балансировщик

  • result.item.loadbalancer.links.item
    object

    Ссылка на балансировщик

  • result.item.loadbalancer.links.item.href
    string

    URL-адрес ссылки на балансировщик

  • result.item.loadbalancer.links.item.rel
    string

    Версия API

  • result.item.server
    object

    Объект, содержащий информацию о сервере

  • result.item.server.id
    string

    Идентификатор сервера

  • result.item.server.links
    array

    Массив ссылок на сервер

  • result.item.server.links.item
    object

    Ссылка на сервер

  • result.item.server.links.item.href
    string

    URL-адрес ссылки

  • result.item.server.links.item.rel
    string

    Версия API

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_id}/rules"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 1,
    "result": [
        {
            "internal_protocol_port": 80,
            "links": [
                {
                    "href": "http://api.clo.ru/v1/loadbalancers/rules/9786d455-cb6f-4ac4-b643-322fb18453ce",
                    "rel": "self"
                }
            ],
            "loadbalancer": {
                "links": [
                    {
                        "href": "http://api.clo.ru/v1/loadbalancers/8f59139d-ca5f-416f-b421-b7d5ca484f0d/detail",
                        "rel": "self"
                    }
                ],
                "id": "8f59139d-ca5f-416f-b421-b7d5ca484f0d"
            },
            "external_protocol_port": 80,
            "server": {
                "links": [
                    {
                        "href": "http://api.clo.ru/v1/servers/e4a0a48a-325e-4fac-8005-78286b86a435/detail",
                        "rel": "self"
                    }
                ],
                "id": "e4a0a48a-325e-4fac-8005-78286b86a435"
            },
            "id": "9786d455-cb6f-4ac4-b643-322fb18453ce"
        }
    ]
}

Добавление правила

Добавляет новое правило между балансировщиком и сервером
POST
/v1/loadbalancers/{loadbalancer_id}/rules

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • loadbalancer_id*
    string
    Передается в path.

    Идентификатор балансировщика

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов, содержащих правила балансировщика

  • result
    array

    Массив объектов, содержащих правила балансировщика

  • result.item
    object

    Объект, содержащий правило балансировщика

  • result.item.external_protocol_port
    integer

    Порт балансировщика

  • result.item.id
    string

    Идентификатор правила

  • result.item.internal_protocol_port
    integer

    Порт сервера

  • result.item.links
    array

    Массив ссылок на информацию о правиле

  • result.item.links.item
    object

    Ссылка на информацию о правиле

  • result.item.links.item.href
    string

    URL-адрес ссылки на правило

  • result.item.links.item.rel
    string

    Версия API

  • result.item.loadbalancer
    object

    Объект, содержащий детальную информацию о балансировщике, к которому подключено правило

  • result.item.loadbalancer.id
    string

    Идентификатор балансировщика

  • result.item.loadbalancer.links
    array

    Массив ссылок на балансировщик

  • result.item.loadbalancer.links.item
    object

    Ссылка на балансировщик

  • result.item.loadbalancer.links.item.href
    string

    URL-адрес ссылки на балансировщик

  • result.item.loadbalancer.links.item.rel
    string

    Версия API

  • result.item.server
    object

    Объект, содержащий информацию о сервере

  • result.item.server.id
    string

    Идентификатор сервера

  • result.item.server.links
    array

    Массив ссылок на сервер

  • result.item.server.links.item
    object

    Ссылка на сервер

  • result.item.server.links.item.href
    string

    URL-адрес ссылки

  • result.item.server.links.item.rel
    string

    Версия API

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_id}/rules"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
    url = URL,
    headers = HEADERS,
    json = {
        "external_protocol_port": 143,
        "internal_protocol_port": 143,
        "port_id": "81523bbf-1cc7-40e8-aabc-bd8944d5173d"
    }
)
Пример ответа:
{
    "code": 201,
    "title": "Created",
    "result": {
        "external_protocol_port": 143,
        "loadbalancer": {
            "links": [
                {
                    "rel": "self",
                    "href": "http://api.clo.ru/v1/loadbalancers/7a3bfc7d-1e65-4463-9c65-9d5f2e9ce722/detail"
                }
            ],
            "id": "7a3bfc7d-1e65-4463-9c65-9d5f2e9ce722"
        },
        "server": {
            "links": [
                {
                    "rel": "self",
                    "href": "http://api.clo.ru/v1/servers/b4026c5f-2b52-422a-a312-70cd370f4c73/detail"
                }
            ],
            "id": "b4026c5f-2b52-422a-a312-70cd370f4c73"
        },
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/loadbalancers/rules/3abb4827-6bfe-4399-90c3-467b9fc8890c"
            }
        ],
        "internal_protocol_port": 143,
        "id": "3abb4827-6bfe-4399-90c3-467b9fc8890c"
    }
}

Запуск балансировщика

Запускает остановленный балансировщик
POST
/v1/loadbalancers/{loadbalancer_id}/start

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • loadbalancer_id*
    string
    Передается в path.

    Идентификатор балансировщика

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_id}/start"

# 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)

Остановка балансировщика

Останавливает запущенный балансировщик
POST
/v1/loadbalancers/{loadbalancer_id}/stop

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • loadbalancer_id*
    string
    Передается в path.

    Идентификатор балансировщика

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_id}/stop"

# 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)

Статистика балансировщика

Предоставляет статистические сведения о балансировщике
GET
/v1/loadbalancers/{object_id}/stat

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор балансировщика

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результат запроса

  • result.bytes_in
    integer

    Количество входящих данных

  • result.bytes_out
    integer

    Количество исходящих данных

  • result.current_sessions
    integer

    Текущее количество сессий

  • result.max_sessions
    integer

    Максимальное количество сессий

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/{loadbalancer_id}/stat"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "current_sessions": 0,
        "bytes_in": 0,
        "max_sessions": 0,
        "bytes_out": 0 
    }
}

Удаление правила балансировщика

Удаляет правило работы балансировщика
DELETE
/v1/loadbalancers/rules/{rule_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • rule_id*
    string
    Передается в path.

    Идентификатор правила

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/rules/{rule_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)

Детали правила

Предоставляет информацию о деталях правила работы балансировщика
GET
/v1/loadbalancers/rules/{rule_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • rule_id*
    string
    Передается в path.

    Идентификатор правила

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результат запроса

  • result.external_protocol_port
    integer

    Порт балансировщика

  • result.id
    string

    Идентификатор правила

  • result.internal_protocol_port
    integer

    Порт сервера

  • result.links
    array

    Массив ссылок на правило

  • result.links.item
    object

    Ссылка на правило

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.loadbalancer
    object

    Объект, содержащий информацию о балансировщике

  • result.loadbalancer.id
    string

    Идентификатор балансировщика

  • result.loadbalancer.links
    array

    Массив ссылок на балансировщик

  • result.loadbalancer.links.item
    object

    Ссылка на балансировщик

  • result.loadbalancer.links.item.href
    string

    URL-адрес ссылки

  • result.loadbalancer.links.item.rel
    string

    Версия API

  • result.server
    object

    Объект, содержащий информацию о сервере

  • result.server.id
    string

    Идентификатор сервера

  • result.server.links
    array

    Массив ссылок на сервер

  • result.server.links.item
    object

    Ссылка на сервер

  • result.server.links.item.href
    string

    URL-адрес ссылки

  • result.server.links.item.rel
    string

    Версия API

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/loadbalancers/rules/{rule_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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "external_protocol_port": 143,
        "loadbalancer": {
            "links": [
                {
                    "rel": "self",
                    "href": "http://api.clo.ru/v1/loadbalancers/7a3bfc7d-1e65-4463-9c65-9d5f2e9ce722/detail"
                }
            ],
            "id": "7a3bfc7d-1e65-4463-9c65-9d5f2e9ce722"
        },
        "server": {
            "links": [
                {
                    "rel": "self",
                    "href": "http://api.clo.ru/v1/servers/b4026c5f-2b52-422a-a312-70cd370f4c73/detail"
                }
            ],
            "id": "b4026c5f-2b52-422a-a312-70cd370f4c73"
        },
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/loadbalancers/rules/3abb4827-6bfe-4399-90c3-467b9fc8890c"
            }
        ],
        "internal_protocol_port": 143,
        "id": "3abb4827-6bfe-4399-90c3-467b9fc8890c"
    }
}

Список балансировщиков проекта

Возвращает список балансировщиков в проекте
GET
/v1/projects/{project_id}/loadbalancers

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Идентификатор проекта

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество балансировщиков в проекте

  • results
    array

    Массив объектов, содержащих результаты запроса

  • results.item
    object

    Объект, содержащий информацию о балансировщике

  • results.item.addresses
    array

    Массив IP-адресов, обрабатываемых балансировщиком

  • results.item.addresses.item
    object

    IP-адрес, обрабатываемый балансировщиком

  • results.item.addresses.item.ddos_protection
    boolean

    Показывает, защищён ли IP-адрес от DDoS-атак

  • results.item.addresses.item.external
    boolean

    Показывает, является ли IP-адрес внешним

  • result.addresses.item.id
    string

    Идентификатор IP-адреса

  • result.addresses.item.mac_addr
    string

    MAC-адрес, привязанный к IP-адресу

  • result.addresses.item.name
    string

    Имя IP-адреса

  • result.addresses.item.ptr
    string

    PTR-запись, связанная с IP-адресом

  • result.addresses.item.type
    string

    Тип IP-адреса

  • result.addresses.item.version
    integer

    Версия IP-адреса

  • result.algorithm
    string

    Алгоритм работы балансировщика

  • result.created_in
    string

    Дата и время создания балансировщика

  • result.healthmonitor
    object

    Объект, содержащий информацию о проверке доступности балансировщика

  • result.healthmonitor.delay
    integer

    Интервал проверки доступности в секундах

  • result.healthmonitor.expected_codes
    string

    Ожидаемые коды ответов при проверке доступности

  • result.healthmonitor.http_method
    string

    Используемый метод проверки доступности по HTTP

  • result.healthmonitor.max_retries
    integer

    Маскимальное количество попыток при проверке доступности

  • result.healthmonitor.timeout
    integer

    Длительность ожидания ответа при проверке доступности в секундах

  • result.healthmonitor.type
    string

    Способ проверки доступности

  • result.healthmonitor.url_path
    string

    URL-адрес для проверки доступности

  • result.id
    string

    Идентификатор балансировщика

  • result.links
    array

    Массив ссылок на балансировщик

  • result.links.item
    object

    Ссылка на балансировщик

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя балансировщика

  • result.project_id
    string

    Идентификатор проекта, с которым связан балансировщик

  • result.rules_count
    integer

    Количество подключенных правил

  • result.rules_limit
    integer

    Максимальное количество правил для балансировщика

  • result.session_persistence
    boolean

    Если это значение истинно, новые запросыв распределяются по способу балансировки

  • result.status
    string

    Статус балансировщика

  • result.updated_in
    string

    Время последнего обновления балансировщика

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/loadbalancers"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 1,
    "results": [
        {
            "id": "4601395a-712d-462f-a6af-ccbe388b3340",
            "algorithm": "ROUND_ROBIN",
            "healthmonitor": {
                "delay": 80,
                "max_retries": 5,
                "type": "TCP",
                "timeout": 15
            },
            "rules_limit": 100,
            "links": [
                {
                    "href": "http://api.clo.ru/v1/loadbalancers/4601395a-712d-462f-a6af-ccbe388b3340/detail",
                    "rel": "self"
                }
            ],
            "addresses": [
                {
                    "id": "a54dac21-3c2c-4d95-968e-be402da01b93",
                    "mac_addr": null,
                    "ptr": "default.clo.ru",
                    "type": "FIXED",
                    "version": 4,
                    "ddos_protection": false,
                    "name": "192.168.0.3",
                    "external": false
                }
            ],
            "project_id": "2c1e87b6-0412-44e6-92f6-288157d941a4",
            "status": "ACTIVE",
            "rules_count": 1,
            "session_persistence": false,
            "name": "LoadBalancer1"
        }
    ]
}

Создание балансировщика

Создаёт новый балансировщик
POST
/v1/projects/{project_id}/loadbalancers

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Идентификатор проекта

  • address
    object,
    null

    IP-адрес

  • algorithm*
    string

    Способ баланнсировки нагрузки

  • floatingip
    object,
    null

    IP-адрес

  • healthmonitor*
    object

    Объект, содерожащий информацию о проверке доступности

  • healthmonitor.delay*
    integer

    Интервал проверки доступности в секундах

  • healthmonitor.expected_codes
    string

    Ожидаемые HTTP-коды ответов при проверке доступности

  • healthmonitor.http_method
    string

    Используемый метод проверки доступности по HTTP

  • healthmonitor.max_retries*
    integer

    Маскимальное количество попыток при проверке доступности

  • healthmonitor.timeout*
    integer

    Длительность ожидания ответа при проверке доступности в секундах

  • healthmonitor.type*
    string

    Способ проверки доступности

  • healthmonitor.url_path
    string

    URL-адрес для проверки доступности

  • name*
    string

    Имя балансировщика

  • rules*
    array

    Массив объектов, содержащих правила балансировщика

  • rules.item*
    object

    Объект, содержащий правило балансировщика

  • rules.item.address_id
    string

    Идентификатор адреса, на который распространяется правило балансировщика

  • rules.item.external_protocol_port*
    integer

    Порт балансировщика

  • rules.item.internal_protocol_port*
    integer

    Порт сервера

  • rules.item.port_id
    string

    Идентификаатор внутреннего IP-адреса сервера

  • session_persistence*
    boolean

    Если это значение истинно, новые запросы распределяются по способу балансировки

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий информацию о балансировщике

  • result.addresses
    array

    Массив объектов, содержащих информацию об IP-адресах

  • result.addresses.item
    object

    Объект, содержащий информацию об IP-адресе

  • result.addresses.item.ddos_protection
    boolean

    Показывает, защищён ли IP-адрес от DDoS-атак

  • result.addresses.item.external
    boolean

    Показывает, является ли IP-адрес внешним

  • result.addresses.item.id
    string

    Идентификатор IP-адреса

  • result.addresses.item.mac_addr
    string

    MAC-адрес, привязанный к IP-адресу

  • result.addresses.item.name
    string

    Имя IP-адреса

  • result.addresses.item.ptr
    string

    PTR-запись, связанная с IP-адресом

  • result.addresses.item.type
    string

    Тип IP-адреса

  • result.addresses.item.version
    integer

    Версия IP-адреса

  • result.algorithm
    string

    Алгоритм работы балансировщика

  • result.created_in
    string

    Дата и время создания балансировщика

  • result.healthmonitor
    object

    Объект, содерожащий информацию о проверке доступности

  • result.healthmonitor.delay
    integer

    Интервал проверки доступности в секундах

  • result.healthmonitor.expected_codes
    string

    Ожидаемые HTTP-коды ответов при проверке доступности

  • result.healthmonitor.http_method
    string

    Используемый метод проверки доступности по HTTP

  • result.healthmonitor.max_retries
    integer

    Маскимальное количество попыток при проверке доступности

  • result.healthmonitor.timeout
    integer

    Длительность ожидания ответа при проверке доступности в секундах

  • result.healthmonitor.type
    string

    Способ проверки доступности

  • result.healthmonitor.url_path
    string

    URL-адрес для проверки доступности

  • result.id
    string

    Идентификатор балансировщика

  • result.links
    array

    Массив объектов, содержащих ссылки на балансировщик

  • result.links.item
    object

    Ссылка на балансировщик

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя балансировщика

  • result.project_id
    string

    Идентификатор проекта

  • result.rules_count
    integer

    Текущее количество правил, подключенных к балансировщику

  • result.rules_limit
    integer

    Максимальное количество правил, подключенных к балансировщику

  • result.session_persistence
    boolean

    Если это значение истинно, новые запросыв распределяются по способу балансировки

  • result.status
    string

    Статус балансировщика

  • result.updated_in
    string

    Время последнего обновления балансировщика

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/loadbalancers"

# 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,
    json = {
        "algorithm": "ROUND_ROBIN",
        "address": {
            "ddos_protection": true
        },
        "healthmonitor": {
            "delay": 80,
            "max_retries": 5,
            "timeout": 15,
            "type": "PING"
        },
        "name": "LoadBalancerTest",
        "session_persistence": false,
        "rules": [
                {
                    "external_protocol_port": 50,
                    "internal_protocol_port": 50,
                    "port_id": "a6a5b966-2bd6-438d-96d1-4fcc0e0726f4"
                }
        ]
    }
)
Пример ответа:
{
    "code": 201,
    "title": "Created",
    "result": {
        "healthmonitor": {
            "max_retries": 5,
            "timeout": 15,
            "type": "PING",
            "delay": 80
        },
        "links": [
            {
                "href": "http://api.clo.ru/v1/loadbalancers/a2d736a4-2de8-4512-8783-fcd98a0017f3/detail",
                "rel": "self"
            }
        ],
        "project_id": "2c1e87b6-0412-44e6-92f6-288157d941a4",
        "algorithm": "ROUND_ROBIN",
        "session_persistence": false,
        "addresses": [],
        "rules_count": 0,
        "rules_limit": 100,
        "status": "CREATING",
        "id": "a2d736a4-2de8-4512-8783-fcd98a0017f3",
        "name": "LoadBalancerTest"
    }
}

Список правил балансировщика

Возвращает информацию о списке правил балансировщика в проекте
GET
/v1/projects/{project_id}/loadbalancers/rules

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Идентификатор проекта

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов, содержащих правила балансировщика

  • result
    array

    Массив объектов, содержащих правила балансировщика

  • result.item
    object

    Объект, содержащий правило балансировщика

  • result.item.external_protocol_port
    integer

    Порт балансировщика

  • result.item.id
    string

    Идентификатор правила

  • result.item.internal_protocol_port
    integer

    Порт сервера

  • result.item.links
    array

    Массив ссылок на информацию о правиле

  • result.item.links.item
    object

    Ссылка на информацию о правиле

  • result.item.links.item.href
    string

    URL-адрес ссылки на правило

  • result.item.links.item.rel
    string

    Версия API

  • result.item.loadbalancer
    object

    Объект, содержащий детальную информацию о балансировщике, к которому подключено правило

  • result.item.loadbalancer.id
    string

    Идентификатор балансировщика

  • result.item.loadbalancer.links
    array

    Массив ссылок на балансировщик

  • result.item.loadbalancer.links.item
    object

    Ссылка на балансировщик

  • result.item.loadbalancer.links.item.href
    string

    URL-адрес ссылки на балансировщик

  • result.item.loadbalancer.links.item.rel
    string

    Версия API

  • result.item.server
    object

    Объект, содержащий информацию о сервере

  • result.item.server.id
    string

    Идентификатор сервера

  • result.item.server.links
    array

    Массив ссылок на сервер

  • result.item.server.links.item
    object

    Ссылка на сервер

  • result.item.server.links.item.href
    string

    URL-адрес ссылки

  • result.item.server.links.item.rel
    string

    Версия API

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/loadbalancers/rules"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 1,
    "result": [
        {
            "id": "fdc4e186-f010-476f-ba1f-17ad98e35733",
            "internal_protocol_port": 80,
            "links": [
                {
                    "href": "http://api.clo.ru/v1/loadbalancers/rules/fdc4e186-f010-476f-ba1f-17ad98e35733",
                    "rel": "self"
                }
            ],
            "server": {
                "links": [
                    {
                        "href": "http://api.clo.ru/v1/servers/7282b86f-0308-4842-8009-7c6cfa221b2c/detail",
                        "rel": "self"
                    }
                ],
                "id": "7282b86f-0308-4842-8009-7c6cfa221b2c"
            },
            "external_protocol_port": 80,
            "loadbalancer": {
                "links": [
                    {
                        "href": "http://api.clo.ru/v1/loadbalancers/4601395a-712d-462f-a6af-ccbe388b3340/detail",
                        "rel": "self"
                    }
                ],
                "id": "4601395a-712d-462f-a6af-ccbe388b3340"
            }
        }
    ]
}

Снапшоты

“Снимок” состояния сервера на определенный момент. Создается за пару секунд, не мешает работе сервера и хранится 24 часа. Из снимка можно восстановить сервер — создать новый, который будет копией исходного сервера на момент создания снапшота.

Снапшот (список)

Запрос возвращает список снапшотов, созданных на проекте
GET
/v1/projects/{project_id}/snapshots

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • project_id*
    string
    Передается в path.

    Уникальный идентификатор проекта

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в списке

  • results
    array

    Массив снапшотов

  • results.item
    object

    Объект, содержащий параметры снапшота

  • results.item.child_servers
    array

    Список дочерних серверов

  • results.item.child_servers.item
    object

    Объект, содержащий информацию о дочернем сервере

  • results.item.child_servers.item.id
    string

    Уникальный идентификатор сервера

  • results.item.child_servers.item.links
    array

    Список ссылок на детальную информацию о сервере

  • results.item.child_servers.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.child_servers.item.links.item.href
    string

    Ссылка

  • results.item.child_servers.item.links.item.rel
    string

    Версия API

  • results.item.created_in
    string

    Дата создания снапшота

  • results.item.deleted_in
    string

    Время в которое снапшот будет удалён

  • results.item.id
    string

    Уникальный идентификатор снапшота

  • results.item.links
    array

    Список ссылок на детальную информацию о снапшоте

  • results.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.links.item.href
    string

    Ссылка

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Название снапшота

  • results.item.parent_server
    object

    Объект, содержащий информацию о сервере, с которого был сделан снапшот

  • results.item.parent_server.id
    string

    Уникальный идентификатор сервера

  • results.item.parent_server.links
    array

    Список ссылок на детальную информацию о сервере

  • results.item.parent_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • results.item.parent_server.links.item.href
    string

    Ссылка

  • results.item.parent_server.links.item.rel
    string

    Версия API

  • results.item.size
    integer

    Размер снапшота в гигабайтах

  • results.item.status
    string

    Статус снапшота

Пример запроса:
  • 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"
    }
  ]
}

Создать снапшот

Запрос на создание снапшота
POST
/v1/servers/{server_id}/snapshot

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • server_id*
    string
    Передается в path.

    Уникальный идентификатор сервера. Можно получить из запроса v1/projects/{project_id}/servers

  • name*
    string

    Имя снапшота

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результаты запроса

  • result.child_servers
    array

    Массив, содержащий информацию о созданных с помощью снапшота серверах

  • result.child_servers.item
    object

    Сервер, созданный из снапшота

  • result.child_servers.item.id
    string

    Идентификатор сервера

  • result.child_servers.item.links
    array

    Массив ссылок на сервер

  • result.child_servers.item.links.item
    object

    Ссылка на сервер

  • result.child_servers.item.links.item.href
    string

    URL-адрес ссылки на сервер

  • result.child_servers.item.links.item.rel
    string

    Версия API

  • result.created_in
    string

    Время создания снапшота

  • result.deleted_in
    string

    Время удаления снапшота

  • result.id
    string

    Идентификатор снапшота

  • result.links
    array

    Массив ссылок на снапшот

  • result.links.item
    object

    Ссылка на снапшот

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя снапшота

  • result.parent_server
    object

    Объект, содержащий сведеняи о сервере, с которого был сделан снапшот

  • result.parent_server.id
    string

    Идентификатор сервера, с которого был сделан снапшот

  • result.parent_server.links
    array

    Массив ссылок на исходный сервер

  • result.parent_server.links.item
    object

    Ссылка на исходный сервер

  • result.parent_server.links.item.href
    string

    URL-адрес ссылки на сервер

  • result.parent_server.links.item.rel
    string

    Версия API

  • result.size
    integer

    Размер снапшота

  • result.status
    string

    Состояние снапшота

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/servers/{object_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
# you need to replace all dummy values for appropriate keys with real parameters
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"
      }
    ]
  }
}

Удалить снапшот

Запрос на удаление снапшота
DELETE
/v1/snapshots/{snapshot_id}/delete

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • 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)

Снапшот (подробности)

Возвращает детальную информацию о снапшоте с указанным ID
GET
/v1/snapshots/{snapshot_id}/detail

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • snapshot_id*
    string
    Передается в path.

    Уникальный идентификатор снапшота

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий параметры снапшота

  • result.child_servers
    array

    Список дочерних серверов

  • result.child_servers.item
    object

    Объект, содержащий информацию о дочернем сервере

  • result.child_servers.item.id
    string

    ID сервера

  • result.child_servers.item.links
    array

    Список ссылок на детальную информацию о сервере

  • result.child_servers.item.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.child_servers.item.links.item.href
    string

    Ссылка

  • result.child_servers.item.links.item.rel
    string

    Версия API

  • result.created_in
    string

    Дата создания снапшота

  • result.deleted_in
    string

    Дата удаления снапшота

  • result.id
    string

    Уникальный идентификатор снапшота

  • result.links
    array

    Список ссылок на детальную информацию о снапшоте

  • result.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.links.item.href
    string

    Ссылка

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя снапшота

  • result.parent_server
    object

    Объект, содержащий информацию о сервере, с которого был сделан снапшот

  • result.parent_server.id
    string

    Уникальный идентификатор сервера

  • result.parent_server.links
    array

    Список ссылок на детальную информацию о сервере

  • result.parent_server.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.parent_server.links.item.href
    string

    Ссылка

  • result.parent_server.links.item.rel
    string

    Версия API

  • result.size
    integer

    Размер снапшота в гигабайтах

  • result.status
    string

    Статус снапшота

Пример запроса:
  • 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"
  }
}

Восстановление сервера из снапшота

Запрос на восстановление сервера из снапшота
POST
/v1/snapshots/{snapshot_id}/restore

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • snapshot_id*
    string
    Передается в path.

    ID снапшота

  • ddos_protection
    boolean

    Восстановить сервер с защищенным от DDoS-атак IP

  • name*
    string

    Название сервера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса.

  • result.name
    string

    Название сервера

  • result.server
    object

    Объект, содержащий информацию о сервере

  • result.server.id
    string

    ID сервера

  • result.server.links
    array

    Список ссылок на детальную информацию о сервере

  • result.server.links.item
    object

    Объект, содержащий ссылку и версию API

  • result.server.links.item.href
    string

    Ссылка

  • result.server.links.item.rel
    string

    Версия 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
	url = URL,
	headers = HEADERS,
	json = {
	"name": "restored_server",
	"ddos_protection": False
	}
)
Пример ответа:
{
  "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-ключ

Запрос на удаление SSH-ключа
DELETE
/v1/keypairs/{keypair_id}/delete

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • keypair_id*
    string
    Передается в path.

    Уникальный идентификатор 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 request and saving the response as response object
r = requests.delete(url = URL, headers = HEADERS)

SSH-ключ (подробности)

Возвращает детальную информацию о SSH-ключе c заданным ID
GET
/v1/keypairs/{keypair_id}/detail

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • keypair_id*
    string
    Передается в path.

    Уникальный идентификатор SSH-ключа

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса

  • result.id
    string

    Уникальный идентификатор SSH-ключа

  • result.name
    string

    Имя ключа

  • result.public_key
    string

    Значение публичного ключа

Пример запроса:
  • 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 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": "value of public key",
		"name": "test"
	}
}

Список SSH-ключей

Запрос возвращает список SSH-ключей
GET
/v1/keypairs

Параметры запроса

Отсутствуют

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов в списке

  • results
    array

    Массив SSH-ключей

  • results.item
    object

    Объект, содержащий параметры SSH-ключа

  • results.item.id
    string

    Уникальный идентификатор SSH-ключа

  • results.item.name
    string

    Имя SSH-ключа

  • results.item.public_key
    string

    Значение публичного ключа

Пример запроса:
  • 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 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": "value of public key",
			"name": "test"
		}
	]
}

Создать SSH-ключ

Запрос на создание SSH-ключа
POST
/v1/keypairs

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • name*
    string

    Имя SSH-ключа

  • public_key*
    string

    Значение публичного SSH-ключа

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий в себе результаты запроса

  • result.id
    string

    Уникальный идентификатор SSH-ключа

  • result.name
    string

    Имя SSH-ключа

  • result.public_key
    string

    Значение публичного 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 request and saving the response as response object
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
	url = URL,
	headers = HEADERS,
	json = {
		'name': 'test',
		'public_key': 'value_of_your_public_ssh_key'
	}
)
Пример ответа:
{
	"code": 201,
	"title": "Created",
	"result": {
		"id": "93fe3a6a-1bda-4845-b7e9-f92e0939e801",
		"public_key": "public_key_value",
		"name": "test"
	}
}

Облачные базы данных

Облачные базы данных — это сервис, позволяющий быстро разворачивать кластеры баз данных в облаке проекта CLO.

Удаление бэкапа кластера

Удаляет резервную копию
DELETE
/v1/dbaas/backups/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор резервной копии

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/backups/{backup_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)

Ссылка на резервную копию для скачивания

Возвращает ссылку на резервную копию для скачивания
POST
/v1/dbaas/backups/{object_id}/download

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор резервной копии

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Резервная копия для скачивания

  • result.url
    string

    Адрес резервной копии для скачивания

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/backups/{backup_id}/download"

# 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)
Пример ответа:
{
	"code": 200,
	"title": "OK",
	"result": {
		"url": "https://storage.clo.ru/8104913be7b44ac487"
    }
}

Детали резервной копии кластера

Возвращает детальную информацию о выбранной резервной копии
GET
/v1/dbaas/backups/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор резервной копии

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результаты запроса

  • result.backup_enabled
    boolean

    Разрешение создавать резервную копию кластера

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Дата и время создания кластера

  • result.data_size
    integer

    Размер резервной копии кластера

  • result.databases
    array

    Список баз данных в кластере

  • result.databases.item
    object

    База данных в кластере

  • result.databases.item.admin_username
    string

    Имя администратора БД

  • result.databases.item.id
    string

    Идентификатор базы данных

  • result.databases.item.name
    string

    Имя БД

  • result.datastore
    object

    Информация о СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Имя СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.id
    string

    Идентификатор резервной копии

  • result.links
    array

    Массив ссылок на резервную копию

  • result.links.item
    object

    Ссылка на резервную копию

  • result.links.item.href
    string

    URL-адрес резервной копии

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя резервной копии

  • result.parent
    string

    Родительский объект резервной копии

  • result.size
    integer

    Размер резервной копии

  • result.status
    string

    Статус резервной копии

  • result.type
    string

    Тип резервной копии

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/backups/{backup_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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "data_size": 22229,
        "status": "AVAILABLE",
        "type": "FULL",
        "datastore": {
            "version": "8.0",
            "name": "MySQL"
        },
        "name": "Backup_mysql_8",
        "size": 1625,
        "databases": [
            {
                "name": "database1",
                "admin_username": "database1",
                "id": "3fd0c354-7d7b-4b92-b20d-ac353bbf3171"
            }
        ],
        "created_in": "2024-05-24T13:00:20Z",
        "links": [
            {
                "href": "http://api.clo.ru/v1/dbaas/backups/ef3e24a1-171b-469e-8ec2-fd69748eefc9",
                "rel": "self"
            }
        ],
        "cluster_id": "efee51cf-8a9e-4c2c-8917-74edabe5bfe9",
        "parent": null,
        "id": "ef3e24a1-171b-469e-8ec2-fd69748eefc9"
    }
}

Создание резервной копии кластера

Создаёт резервную копию кластера
POST
/v1/dbaas/clusters/{object_id}/backup/create

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

  • name
    string

    Название резервной копии

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результаты запроса

  • result.backup_enabled
    boolean

    Разрешение создавать резервную копию кластера

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Дата и время создания кластера

  • result.data_size
    integer

    Размер резервной копии кластера

  • result.databases
    array

    Список баз данных в кластере

  • result.databases.item
    object

    База данных в кластере

  • result.databases.item.admin_username
    string

    Имя администратора БД

  • result.databases.item.id
    string

    Идентификатор базы данных

  • result.databases.item.name
    string

    Имя БД

  • result.datastore
    object

    Информация о СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Имя СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.id
    string

    Идентификатор резервной копии

  • result.links
    array

    Массив ссылок на резервную копию

  • result.links.item
    object

    Ссылка на резервную копию

  • result.links.item.href
    string

    URL-адрес резервной копии

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя резервной копии

  • result.parent
    string

    Родительский объект резервной копии

  • result.size
    integer

    Размер резервной копии

  • result.status
    string

    Статус резервной копии

  • result.type
    string

    Тип резервной копии

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/backup/create"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {"name":"my_backup"})
Пример ответа:
{
    "code": 201,
    "title": "Created",
    "result": {
        "data_size": 0,
        "status": "BUILD",
        "type": "FULL",
        "datastore": {
            "version": "8.0",
            "name": "MySQL"
        },
        "name": "Backup_test_mysql_8_2023-05-24T13:00:20.759669",
        "size": 0,
        "databases": [
            {
                "name": "database_1",
                "admin_username": "database_1",
                "id": "3fd0c354-7d7b-4b92-b20d-ac353bbf3171"
            }
        ],
        "created_in": "2023-05-24T13:00:20.763572Z",
        "links": [
            {
                "href": "http://api.clo.ru/v1/dbaas/backups/ef3e24a1-171b-469e-8ec2-fd69748eefc9",
                "rel": "self"
            }
        ],
        "cluster_id": "efee51cf-8a9e-4c2c-8917-74edabe5bfe9",
        "parent": null,
        "id": "ef3e24a1-171b-469e-8ec2-fd69748eefc9"
    }
}

Отключение резервного копирования кластера

Отключает создание резервных копий кластера
POST
/v1/dbaas/clusters/{object_id}/backup/disable

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/backup/disable"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": null
}

Подключение резервного копирования для кластера

Включает автоматическое резервное копирование кластера
POST
/v1/dbaas/clusters/{object_id}/backup/enable

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/backup/enable"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": null
}

Информация о базах данных в кластере

Возвращает информацию о БД в выбранном кластере
GET
/v1/dbaas/clusters/{object_id}/databases

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество объектов

  • results
    array

    Массив объектов (БД), хранимых в кластере

  • results.item
    object

    Отдельная БД кластера

  • results.item.admin_username
    string

    Имя администратора конкретной БД

  • results.item.backup_enabled
    boolean

    Разрешение создавать резервные копии БД

  • results.item.cluster_id
    string

    Идентификатор кластера

  • results.item.created_in
    string

    Время создания БД

  • results.item.id
    string

    Идентификатор БД

  • results.item.links
    array

    Массив ссылок на базы данных кластера

  • results.item.links.item
    object

    Отдельная ссылка на БД

  • results.item.links.item.href
    string

    Адрес ссылки на БД

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Имя БД

  • results.item.status
    string

    Статус БД

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/databases"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 1,
    "results": [
        {
            "backup_enabled": false,
            "links": [
                {
                    "rel": "self",
                    "href": "http://api.clo.ru/v1/dbaas/databases/cec03e6a-8cb3-44ed-ad42-72879ab4fa40"
                }
            ],
            "name": "database1",
            "created_in": "2023-05-21T17:00:15Z",
            "admin_username": "database1",
            "id": "cec03e6a-8cb3-44ed-ad42-72879ab4fa40",
            "status": "READY",
            "cluster_id": "f9b0a0ea-aa28-46f3-8b3e-3fd805fa3b97"
        }
    ]
}

Создание базы данных

Создаёт БД в выбранном кластере
POST
/v1/dbaas/clusters/{object_id}/databases

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

  • admin_password*
    string

    Пароль администратора

  • admin_username*
    string

    Имя администратора

  • name*
    string

    Название базы данных

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Созданная БД

  • result.admin_username
    string

    Имя администратора созданной БД

  • result.backup_enabled
    boolean

    Разрешение создавать резервные копии БД

  • result.cluster_id
    string

    Идентификатор кластера БД

  • result.created_in
    string

    Время создания БД

  • result.id
    string

    Идентификатор БД

  • result.links
    array

    Массив ссылок на БД кластера

  • result.links.item
    object

    Отдельная ссылка на БД

  • result.links.item.href
    string

    Адрес БД

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя БД

  • result.status
    string

    Статус БД

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/databases"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
	url = URL,
	headers = HEADERS
	json = {
		"name": "test_1",
		"admin_username": "name_1",
		"admin_password": "yor_strong_password"
	}
)
Пример ответа:
{
    "code": 201,
    "title": "Created",
    "result": {
        "admin_username": "test_1",
        "name": "name_1",
        "links": [
            {
                "rel": "self",
                "href": "https://api.clo.ru/v1/dbaas/databases/2d510717-bb14-48c6-9223-7a430143ab5f"
            }
        ],
        "backup_enabled": false,
        "id": "2d510717-bb14-48c6-9223-7a430143ab5f",
        "created_in": "2022-12-31T17:12:52.188467Z",
        "status": "BUILD",
        "cluster_id": "9e7f4706-c514-41bb-96ae-a263a32c441c"
    }
}

Удаление кластера

Удаляет выбранный кластер
DELETE
/v1/dbaas/clusters/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_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)

Остановка кластера

Останавливает выбранный кластер
POST
/v1/dbaas/clusters/{object_id}/disable

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результаты запроса

  • result.backup_enabled
    boolean

    Разрешить резервное копирование кластера

  • result.backup_hour
    integer

    Время создания резервной копии

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Дата создания кластера

  • result.databases_count
    integer

    Количество баз данных в кластере

  • result.datastore
    object

    Используемая СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Название СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.external_address
    string

    Внешний адрес кластера

  • result.flavor
    object

    Ресурсы нод кластера

  • result.flavor.ram
    integer

    Размер оперативной памяти (в КБ)

  • result.flavor.vcpus
    integer

    Количество vCPU

  • result.id
    string

    Идентификатор ноды

  • result.internal_address
    string

    Внутренний адрес кластера

  • result.links
    array

    Массив ссылок на кластер

  • result.links.item
    object

    Ссылка на кластер

  • result.links.item.href
    string

    URL ссылки

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя кластера

  • result.nodes_count
    integer

    Количество нод

  • result.status
    string

    Статус кластера

  • result.storage_size
    integer

    Размер хранилища

  • result.storage_used_KB
    integer

    Используемый объём хранилища (в Кб)

  • result.system_disk_size
    integer

    Размер системного диска кластера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/disable"

# 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)
Пример ответа:
{
    "code": 202,
    "title": "Accepted",
    "result": {
        "flavor": {
            "ram": 2048,
            "vcpus": 1
        },
        "nodes_count": 2,
        "datastore": {
            "name": "MySQL",
            "version": "8.0",
            "id": "99c839eb-9679-4e10-8f54-99125af9b2dc"
        },
        "external_address": null,
        "backup_hour": 23,
        "name": "test_mysql_8",
        "system_disk_size": 10,
        "backup_enabled": true,
        "id": "9e7f4706-c514-41bb-96ae-a263a32c441c",
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/dbaas/clusters/f0ed7719-ecbb-4ac4-8062-818c668b3906"
            }
        ],
        "internal_address": "8bd82f91-1d1d-42af-a820-db6d66a70d8e",
        "databases_count": 1,
        "created_in": "2022-12-28T12:20:15Z",
        "status": "STOPPING",
        "storage_used_KB": 2191523,
        "storage_size": 20
    }
}

Запуск кластера

Запускает выбранный кластер
POST
/v1/dbaas/clusters/{object_id}/enable

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Запущенный кластер

  • result.backup_enabled
    boolean

    Разрешить резервное копирование кластера

  • result.backup_hour
    integer

    Время создания резервной копии

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Дата создания кластера

  • result.databases_count
    integer

    Количество баз данных в кластере

  • result.datastore
    object

    Используемая СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Название СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.external_address
    string

    Внешний адрес кластера

  • result.flavor
    object

    Ресурсы нод кластера

  • result.flavor.ram
    integer

    Размер оперативной памяти (в КБ)

  • result.flavor.vcpus
    integer

    Количество vCPU

  • result.id
    string

    Идентификатор ноды

  • result.internal_address
    string

    Внутренний адрес кластера

  • result.links
    array

    Массив ссылок на кластер

  • result.links.item
    object

    Ссылка на кластер

  • result.links.item.href
    string

    URL ссылки

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя кластера

  • result.nodes_count
    integer

    Количество нод

  • result.status
    string

    Статус кластера

  • result.storage_size
    integer

    Размер хранилища

  • result.storage_used_KB
    integer

    Используемый объём хранилища (в килобайтах)

  • result.system_disk_size
    integer

    Размер системного диска кластера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/enable"

# 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)
Пример ответа:
{
    "code": 202,
    "title": "Accepted",
    "result": {
        "flavor": {
            "ram": 2048,
            "vcpus": 1
        },
        "nodes_count": 2,
        "datastore": {
            "name": "MySQL",
            "version": "8.0",
            "id": "99c839eb-9679-4e10-8f54-99125af9b2dc"
        },
        "external_address": null,
        "backup_hour": 23,
        "name": "test_mysql_8",
        "system_disk_size": 10,
        "backup_enabled": true,
        "id": "9e7f4706-c514-41bb-96ae-a263a32c441c",
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/dbaas/clusters/f0ed7719-ecbb-4ac4-8062-818c668b3906"
            }
        ],
        "internal_address": "8bd82f91-1d1d-42af-a820-db6d66a70d8e",
        "databases_count": 1,
        "created_in": "2022-12-28T12:20:15Z",
        "status": "ACTIVE",
        "storage_used_KB": 2191523,
        "storage_size": 20
    }
}

Кластер (подробности)

Возвращает информацию об указанном кластере
GET
/v1/dbaas/clusters/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Выбранный кластер

  • result.backup_enabled
    boolean

    Разрешение на резервное копирование выбранного кластера

  • result.backup_hour
    integer

    Время создания резервной копии

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Время создания кластера

  • result.databases_count
    integer

    Количество баз данных в кластере

  • result.datastore
    object

    Информация о СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Название СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.external_address
    string

    Внешний адрес кластера

  • result.flavor
    object

    Количество ресурсов кластера

  • result.flavor.ram
    integer

    Объём оперативной памяти в кластере

  • result.flavor.vcpus
    integer

    Количество vCPU в кластере

  • result.id
    string

    Идентификатор кластера

  • result.internal_address
    string

    Внутренний адрес кластера

  • result.links
    array

    Массив ссылок на кластер

  • result.links.item
    object

    Отдельная ссылка на кластер

  • result.links.item.href
    string

    Адрес ссылки на кластер

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя кластера

  • result.nodes_count
    integer

    Количество нод в кластере

  • result.status
    string

    Статус кластера

  • result.storage_size
    integer

    Размер хранилища кластера

  • result.storage_used_KB
    integer

    Используемый кластером объём хранилища (в килобайтах)

  • result.system_disk_size
    integer

    Размер диска кластера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "flavor": {
            "ram": 2048,
            "vcpus": 1
        },
        "nodes_count": 2,
        "datastore": {
            "name": "MySQL",
            "version": "8.0",
            "id": "99c839eb-9679-4e10-8f54-99125af9b2dc"
        },
        "external_address": null,
        "backup_hour": 23,
        "name": "test_mysql_8",
        "system_disk_size": 10,
        "backup_enabled": true,
        "id": "9e7f4706-c514-41bb-96ae-a263a32c441c",
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/dbaas/clusters/f0ed7719-ecbb-4ac4-8062-818c668b3906"
            }
        ],
        "internal_address": "8bd82f91-1d1d-42af-a820-db6d66a70d8e",
        "databases_count": 1,
        "created_in": "2022-12-28T12:20:15Z",
        "status": "ACTIVE",
        "storage_used_KB": 2191523,
        "storage_size": 20
    }
}

Список нод кластера

Передаёт список нод, имеющихся в кластере
GET
/v1/dbaas/clusters/{object_id}/nodes

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество нод кластера

  • results
    array

    Список нод кластера

  • results.item
    object

    Нода кластера

  • results.item.cluster_id
    string

    Идентификатор кластера, которому принадлежит нода

  • results.item.created_in
    string

    Время создания ноды

  • results.item.id
    string

    Идентификатор ноды

  • results.item.links
    array

    Массив ссылок на ноду кластера

  • results.item.links.item
    object

    Ссылка на ноду

  • results.item.links.item.href
    string

    URL ссылки на ноду

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Имя ноды

  • results.item.private_ip
    string

    Внутренний IP-адрес ноды

  • results.item.role
    string

    Роль ноды

  • results.item.status
    string

    Статус ноды

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/nodes"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 2,
    "results": [
        {
            "name": "node",
            "links": [
                {
                    "rel": "self",
                    "href": "http://api.clo.ru/v1/dbaas/nodes/23a75dc8-7239-4c87-a685-eb39383590f0"
                }
            ],
            "id": "23a75dc8-7239-4c87-a685-eb39383590f0",
            "created_in": "2022-12-28T12:20:15Z",
            "status": "ALIVE",
            "role": "MASTER",
            "private_ip": "10.174.87.17",
            "cluster_id": "9e7f4706-c514-41bb-96ae-a263a32c441c"
        },
        {
            "name": "node",
            "links": [
                {
                    "rel": "self",
                    "href": "http://api.clo.ru/v1/dbaas/nodes/801b87d1-02e5-499c-a4c7-83218f4cd531"
                }
            ],
            "id": "801b87d1-02e5-499c-a4c7-83218f4cd531",
            "created_in": "2022-12-28T12:20:15Z",
            "status": "ALIVE",
            "role": "SLAVE",
            "private_ip": "10.174.87.19",
            "cluster_id": "9e7f4706-c514-41bb-96ae-a263a32c441c"
        }
    ]
}

Изменение имени кластера

Изменяет имя существующего кластера
PATCH
/v1/dbaas/clusters/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

  • name*
    string

    Новое имя кластера (передаётся в теле запроса)

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий информацию о результатах запроса

  • result.backup_enabled
    boolean

    Разрешение создавать резервные копии выбранного кластера

  • result.backup_hour
    integer

    Время создания резервных копий кластера

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Дата и время создания кластера

  • result.databases_count
    integer

    Количество баз данных в кластере

  • result.datastore
    object

    Используемая СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Название СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.external_address
    string

    Внешний URL кластера

  • result.flavor
    object

    Ресурсы кластера

  • result.flavor.ram
    integer

    Оперативная память ноды (в Гб)

  • result.flavor.vcpus
    integer

    Количество vCPU

  • result.id
    string

    Идентификатор кластера

  • result.internal_address
    string

    Внутренний IP-адрес кластера

  • result.links
    array

    Массив ссылок на кластер

  • result.links.item
    object

    Ссылка на кластер

  • result.links.item.href
    string

    URL-адрес ссылки на кластер

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя кластера

  • result.nodes_count
    integer

    Количество нод кластера

  • result.status
    string

    Состояние кластера

  • result.storage_size
    integer

    Общий доступный размер дисков в кластере

  • result.storage_used_KB
    integer

    Объём данных в хранилище (в Кб)

  • result.system_disk_size
    integer

    Размер диска кластера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.patch(url = URL, headers = HEADERS, json = {"name": "your_cluster_name"})
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "flavor": {
            "ram": 2048,
            "vcpus": 1
        },
        "databases_count": 1,
        "backup_enabled": true,
        "backup_hour": 23,
        "external_address": null,
        "links": [
            {
                "href": "http://api.clo.ru/v1/dbaas/clusters/aab9eb24-2761-43c7-a0df-d085bbcac75c",
                "rel": "self"
            }
        ],
        "storage_size": 20,
        "nodes_count": 2,
        "storage_used_KB": 2188296,
        "internal_address": "0afecb63-1a0b-4248-a333-a74de1bb9c28",
        "name": "new_test",
        "created_in": "2023-05-25T02:39:11Z",
        "system_disk_size": 10,
        "id": "aab9eb24-2761-43c7-a0df-d085bbcac75c",
        "status": "ACTIVE",
        "datastore": {
            "version": "8.0",
            "id": "99c839eb-9679-4e10-8f54-99125af9b2dc",
            "name": "MySQL"
        }
    }
}

Изменение вычислительных ресурсов кластера

Изменяет вычислительные ресурсы кластера. (Внимание! Потенциально опасная операция!)
POST
/v1/dbaas/nodes/{object_id}/resize/resources

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

  • flavor*

    Объект, содержащий сведения о вычислительных ресурсах кластера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/resize/resources"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
	url = URL,
	headers = HEADERS,
	json = {
		"flavor": {
		"ram": 6,
		"vcpus": 3,
		"cpu_type": "SHARED"
		}
	}
)
Пример ответа:
{
    "code": 202,
    "title": "Accepted",
    "result": null
}

Увеличение диска кластера

Увеличивает размер диска выбранного кластера
POST
/v1/dbaas/nodes/{object_id}/resize/storage

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

  • new_size*
    integer

    Новый объём диска

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Кластер баз данных

  • result.backup_enabled
    boolean

    Разрешение создавать резервную копию кластера

  • result.backup_hour
    integer

    Время создания бэкапов кластера

  • result.cluster_id
    string

    Идентификатор кластера (передаётся в URL)

  • result.created_in
    string

    Дата создания кластера

  • result.databases_count
    integer

    Количество баз данных в кластере

  • result.datastore
    object

    Информация об используемой СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Название СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.external_address
    string

    Внешний IP-адрес кластера

  • result.flavor
    object

    Информация о ресурсах нод кластера

  • result.flavor.ram
    integer

    Объём оперативной памяти ноды (в Гб)

  • result.flavor.vcpus
    integer

    Количество vCPU в каждой ноде

  • result.id
    string

    Идентификатор кластера (передаётся в URL)

  • result.internal_address
    string

    Внутренний IP-адрес кластера

  • result.links
    array

    Массив ссылок на кластер

  • result.links.item
    object

    Ссылка на кластер

  • result.links.item.href
    string

    URL-адрес ссылки на кластер

  • result.links.item.rel
    string

    Объекты, связанные с кластером по ссылке

  • result.name
    string

    Название кластера

  • result.nodes_count
    integer

    Количество нод кластера

  • result.status
    string

    Состояние кластера

  • result.storage_size
    integer

    Размер хранилища, используемого кластером

  • result.storage_used_KB
    integer

    Фактический объём данных в хранилище кластера (в Кб)

  • result.system_disk_size
    integer

    Размер диска кластера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/resize/storage"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url=URL, headers=HEADERS, json = {"new_size": 30})
Пример ответа:
{
    "code": 202,
    "title": "Accepted",
    "result": {
        "external_address": null,
        "name": "MySQL-8.0",
        "backup_enabled": true,
        "datastore": {
            "version": "8.0",
            "name": "MySQL",
            "id": "99c839eb-9679-4e10-8f54-99125af9b2dc"
        },
        "databases_count": 1,
        "created_in": "2022-12-20T04:46:50Z",
        "system_disk_size": 10,
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/dbaas/clusters/f0ed7719-ecbb-4ac4-8062-818c668b3906"
            }
        ],
        "status": "UPDATING",
        "nodes_count": 2,
        "backup_hour": 22,
        "storage_used_KB": 2188308,
        "storage_size": 20,
        "internal_address": "a48d50ea-a806-4d9d-82f8-3b3fc365420a",
        "id": "f0ed7719-ecbb-4ac4-8062-818c668b3906",
        "flavor": {
            "vcpus": 2,
            "ram": 4096
        }
    }
}

Создание резервной копии

Создаёт резервную копию кластера
POST
/v1/dbaas/databases/{object_id}/backup/create

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

  • name
    string

    Имя кластера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий информацию о результатах запроса

  • result.backup_enabled
    boolean

    Разрешение создавать резервную копию кластера

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Время создания резервной копии

  • result.data_size
    integer

    Объём данных кластера

  • result.databases
    array

    Массив, содержащий сведения о базах данных кластера

  • result.databases.item
    object

    База данных кластера

  • result.databases.item.admin_username
    string

    Имя администратора БД

  • result.databases.item.id
    string

    Идентификатор БД

  • result.databases.item.name
    string

    Имя БД

  • result.datastore
    object

    Используемая СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Имя СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.id
    string

    Идентификатор кластера

  • result.links
    array

    Массив ссылок на кластер

  • result.links.item
    object

    Ссылка на кластер

  • result.links.item.href
    string

    URL-адрес ссылки на кластер

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя кластера

  • result.parent
    string

    Родительский объект кластера

  • result.size
    integer

    Размер резервной копии

  • result.status
    string

    Статус кластера

  • result.type
    string

    Тип кластера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}/backup/create"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'name': 'new_backup_name'})
Пример ответа:
{
    "code": 201,
    "title": "Created",
    "result": {
        "databases": [
            {
                "admin_username": "database1",
                "name": "database1",
                "id": "9d5d2d9e-33c8-4f77-89ad-3e1d1b72b"
            }
        ],
        "data_size": 0,
        "links": [
            {
                "href": "http://api.clo.ru/v1/dbaas/backups/063cc52398b8d09",
                "rel": "self"
            }
        ],
        "parent": null,
        "id": "063cc2e4-ab93-4f76-8491-56523",
        "status": "BUILD",
        "type": "PARTIAL",
        "cluster_id": "d46f0c0c-438ab-8907305f2959",
        "datastore": {
            "version": "8.0",
            "name": "MySQL"
        },
        "created_in": "2023-05-22T12:23:45.667848Z",
        "name": "Backup_test_1_2023-05-22T12:23:45.659274",
        "size": 0
    }
}

Отключение резервного копирования кластера

Отключает автоматическое создание резервных копий на кластере
POST
/v1/dbaas/databases/{object_id}/backup/disable

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}/backup/disable"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": null
}

Подключение резервного копирования кластера

Включает режим автоматического резервного копирования кластера
POST
/v1/dbaas/databases/{object_id}/backup/enable

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор кластера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}/backup/enable"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": null
}

Удаление базы данных

Удаляет выбранную базу данных
DELETE
/v1/dbaas/databases/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор БД

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/databases/{database_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)

Информация о базе данных

Возвращает детальные сведения о выбранной базе данных
GET
/v1/dbaas/databases/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Выбранная база данных

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий информацию о результатах запроса

  • result.admin_username
    string

    Имя администратора БД

  • result.backup_enabled
    boolean

    Разрешение на создание резервной копии БД

  • result.cluster_id
    string

    Идентификатор кластера БД

  • result.created_in
    string

    Дата создания БД

  • result.id
    string

    Идентификатор БД

  • result.links
    array

    Массив ссылок на базу данных

  • result.links.item
    object

    Ссылка на БД

  • result.links.item.href
    string

    URL-адрес базы данных

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя БД

  • result.status
    string

    Статус БД

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/databases/{database_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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "backup_enabled": false,
        "links": [
            {
                "rel": "self",
                "href": "http://api.clo.ru/v1/dbaas/databases/e93ba569-8552-44b3-8ede-75feac020b49"
            }
        ],
        "name": "database1",
        "created_in": "2023-05-21T17:24:19Z",
        "admin_username": "database1",
        "id": "e93ba569-8552-44b3-8ede-75feac020b49",
        "status": "READY",
        "cluster_id": "f9b0a0ea-aa28-46f3-8b3e-3fd805fa3b97"
    }
}

Восстановление пароля к базе данных

Восстанавливает пароль к выбранной базе данных
POST
/v1/dbaas/databases/{object_id}/restore

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор БД

  • password*
    string

    Новый пароль

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}/restore"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(url = URL, headers = HEADERS, json = {'password': 'your_new_strong_password'})
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": null
}

Детали ноды кластера

Возвращает детальную информацию о выбранной ноде кластера
GET
/v1/dbaas/nodes/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор ноды

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий информацию о результатах запроса

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Время создания кластера

  • result.id
    string

    Идентификатор ноды

  • result.links
    array

    Массив ссылок на ноду кластера

  • result.links.item
    object

    Ссылка на ноду

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя ноды

  • result.private_ip
    string

    Внутренний IP-адрес ноды

  • result.role
    string

    Роль ноды (master/slave)

  • result.status
    string

    Статус ноды

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/dbaas/nodes/{node_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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "result": {
        "name": "node",
        "id": "2f5ddfbe-1ff1-48d9-ad6b-16038dded93a",
        "cluster_id": "e6319a5b-6405-4501-8477-fd43a36bbd6a",
        "role": "MASTER",
        "links": [
            {
                "rel": "self",
                "href": "https://api.clo.ru/v1/dbaas/nodes/2f5ddfbe-1ff1-48d9-ad6b-16038dded93a"
            }
        ],
        "created_in": "2023-05-21T16:01:39Z",
        "status": "BUILD",
        "private_ip": null
    }
}

Список резервных копий кластеров проекта

Возвращает список бэкапов кластеров данного проекта
GET
/v1/projects/{object_id}/dbaas/backups

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор проекта

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество резервных копий кластеров проекта

  • results
    array

    Массив объектов, содержащих данные о бэкапах кластеров

  • results.item
    object

    Объект, содержащий данные о бэкапе кластера

  • results.item.backup_enabled
    boolean

    Разрешенеи создавать резервную копию кластера

  • results.item.cluster_id
    string

    Идентификатор кластера

  • results.item.created_in
    string

    Дата и время создания бэкапа

  • results.item.data_size
    integer

    Размер бэкапа

  • results.item.databases
    array

    Массив объектов, содержащих данные о БД кластера

  • results.item.databases.item
    object

    Объект, содержащий информацию о БД

  • results.item.databases.item.admin_username
    string

    Имя пользователя БД

  • results.item.databases.item.id
    string

    Идентификатор БД

  • results.item.databases.item.name
    string

    Название БД

  • results.item.datastore
    object

    Информация об используемой СУБД

  • results.item.datastore.id
    string

    Идентификатор СУБД

  • results.item.datastore.name
    string

    Название СУБД

  • results.item.datastore.version
    string

    Версия СУБД

  • results.item.id
    string

    Идентификатор базы данных

  • results.item.links
    array

    Массив ссылок на бэкапы кластера

  • results.item.links.item
    object

    Ссылка на бэкап кластера

  • results.item.links.item.href
    string

    URL-адрес бэкапа

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Название бэкапа

  • results.item.parent
    string

    Родительский объект бэкапа

  • results.item.size
    integer

    Размер бэкапа

  • results.item.status
    string

    Статус бэкапа

  • results.item.type
    string

    Тип бэкапа

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/dbaas/backups"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 1,
    "results": [
        {
            "type": "FULL",
            "datastore": {
                "name": "PostgreSQL",
                "version": "13"
            },
            "databases": [
                {
                    "name": "database1",
                    "admin_username": "database1",
                    "id": "68d5ae95-dafd-4f60-864b-07f6bfcf95dd"
                }
            ],
            "name": "Daily_backup_test_2022-12-27",
            "links": [
                {
                    "rel": "self",
                    "href": "http://api.clo.ru/v1/dbaas/backups/aa9e1878-6dad-4462-9cf2-8ad3cce2fbe3"
                }
            ],
            "size": 3999,
            "id": "aa9e1878-6dad-4462-9cf2-8ad3cce2fbe3",
            "created_in": "2022-12-27T03:00:00Z",
            "status": "AVAILABLE",
            "parent": null,
            "data_size": 178257,
            "cluster_id": "65b57d6d-733b-479e-893b-c458028769dc"
        }
    ]
}

Список кластеров проекта

Возвращает список кластеров, существующих на проекте
GET
/v1/projects/{object_id}/dbaas/clusters

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор проекта

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество кластеров в проекте

  • results
    array

    Массив объектов, содержащих информацию о кластерах

  • results.item
    object

    Объект, содержащий данные о кластере БД

  • results.item.backup_enabled
    boolean

    Разрешение создавать резервные копии кластера

  • results.item.backup_hour
    integer

    Время создания резервной копии кластера

  • results.item.cluster_id
    string

    Идентификатор кластера

  • results.item.created_in
    string

    Дата и время создания кластера

  • results.item.databases_count
    integer

    Количество баз данных в кластере

  • results.item.datastore
    object

    Объект, содержащий сведения об используемой СУБД

  • results.item.datastore.id
    string

    Идентификатор СУБД

  • results.item.datastore.name
    string

    Название СУБД

  • results.item.datastore.version
    string

    Версия СУБД

  • results.item.external_address
    string

    Внешний IP-адрес кластера

  • results.item.flavor
    object

    Данные о вычислительных ресурсах кластера

  • results.item.flavor.ram
    integer

    Объём оперативной памяти

  • results.item.flavor.vcpus
    integer

    Количество vCPU

  • results.item.id
    string

    Идентификатор кластера

  • results.item.internal_address
    string

    Внутренний IP-адрес кластера

  • results.item.links
    array

    Массив ссылок на кластер

  • results.item.links.item
    object

    Ссылка на кластер

  • results.item.links.item.href
    string

    URL-адрес ссылки

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Название кластера

  • results.item.nodes_count
    integer

    Количество нод кластера

  • results.item.status
    string

    Статус кластера

  • results.item.storage_size
    integer

    Объём пространства для хранения данных

  • results.item.storage_used_KB
    integer

    Используемый кластером объём данных (в Кб)

  • results.item.system_disk_size
    integer

    Размер системного диска

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/dbaas/clusters"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 1,
    "results": [
		{
			"flavor": {
                "vcpus": 1,
                "ram": 2048
            },
            "external_address": null,
            "id": "65b57d6d-733b-479e-893b-c458028769dc",
            "status": "ACTIVE",
            "nodes_count": 2,
            "created_in": "2022-12-26T14:00:29Z",
            "system_disk_size": 10,
            "storage_size": 20,
            "databases_count": 1,
            "backup_enabled": true,
            "links": [
                {
                    "href": "http://api.clo.ru/v1/dbaas/clusters/65b57d6d-733b-479e-893b-c458028769dc",
                    "rel": "self"
                }
            ],
            "name": "test",
            "internal_address": "6c09ab24-6f49-4b22-968f-d66c87aba19a",
            "storage_used_KB": 272629,
            "datastore": {
                "id": "2d090978-46ba-4a50-ac4b-2457b0a37c6d",
                "version": "13",
                "name": "PostgreSQL"
            },
            "backup_hour": 3
		}
    ]
}

Создание кластера баз данных

Создаёт кластер БД
POST
/v1/projects/{object_id}/dbaas/clusters

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор проекта

  • address
    object,
    null

    IP-адрес кластера БД

  • backup
    string

    Идентификатор бэкапа, из которого создаётся кластер

  • database
    object,
    null

    Параметры базы данных кластера

  • datastore
    string

    Идентификатор СУБД

  • flavor*

    Ресурсы кластера (количество vCPU, объём памяти ноды и т.д.)

  • name*
    string

    Название кластера

  • storage_size*
    integer

    Размер дискового пространства кластера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий результаты запроса

  • result.backup_enabled
    boolean

    Разрешение создавать резервную копию кластера

  • result.backup_hour
    integer

    Время создания резервной копии

  • result.cluster_id
    string

    Идентификатор кластера

  • result.created_in
    string

    Дата и время создания кластера

  • result.databases_count
    integer

    Количество баз данных в кластере

  • result.datastore
    object

    Объект, содержащий информацию об используемой СУБД

  • result.datastore.id
    string

    Идентификатор СУБД

  • result.datastore.name
    string

    Название СУБД

  • result.datastore.version
    string

    Версия СУБД

  • result.external_address
    string

    Внешний IP-адрес кластера

  • result.flavor
    object

    Объект. содержащий информацию о вычислительных ресурсах кластера

  • result.flavor.ram
    integer

    Объём оперативной памяти

  • result.flavor.vcpus
    integer

    Количество vCPU

  • result.id
    string

    Идентификатор кластера

  • result.internal_address
    string

    Внутренний IP-адрес кластера

  • result.links
    array

    Массив ссылок на кластер

  • result.links.item
    object

    Ссылка на кластер

  • result.links.item.href
    string

    URL-адрес кластера

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя кластера

  • result.nodes_count
    integer

    Количество нод кластера

  • result.status
    string

    Статус кластера

  • result.storage_size
    integer

    Объём дискового пространства кластера

  • result.storage_used_KB
    integer

    Используемый кластром объём хранилища (в Кб)

  • result.system_disk_size
    integer

    Размер системного диска кластера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/dbaas/clusters"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
    url = URL,
    headers = HEADERS,
    json = {
		"flavor": {
			"vcpus": 1,
			"ram": 2
		},
		"database": {
			"admin_password": "your_strong_password",
			"admin_username": "database_1",
			"name": "database_1"
		},
		"datastore": "99c839eb-9679-4e10-8f54-99125af9b2dc",
		"name": "test",
		"storage_size": 20
	}
)
Пример ответа:
{
    "code": 201,
    "title": "Created",
    "result": {
        "backup_hour": 23,
        "datastore": {
            "id": "9679-4e10-8f54-99125af9b",
            "version": "8.0",
            "name": "MySQL"
        },
        "flavor": {
            "ram": 2048,
            "vcpus": 1
        },
        "storage_size": 20,
        "status": "CREATING",
        "databases_count": 1,
        "id": "3f77e0d8-fdd6-4438-8b7",
        "system_disk_size": 10,
        "nodes_count": 2,
        "links": [
            {
                "rel": "self",
                "href": "https://api.clo.ru/v1/dbaas/clusters/3f77e0d8-fdd6-4438-8b71-8df27589f2e5"
            }
        ],
        "internal_address": null,
        "storage_used_KB": 0,
        "created_in": "2023-05-16T04:22:41.819015Z",
        "external_address": null,
        "backup_enabled": true,
        "name": "test_mysql_8"
    }
}

Список СУБД для работы с базами данных

Возвращает список доступных СУБД для кластера баз данных
GET
/v1/projects/{object_id}/dbaas/datastores

Параметры запроса

Отсутствуют

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество доступных СУБД

  • results
    array

    Массив, содержащий идентификаторы доступных СУБД

  • results.item
    object

    Описание СУБД

  • results.item.id
    string

    Идентификатор СУБД

  • results.item.name
    string

    Название СУБД

  • results.item.version
    string

    Версия СУБД

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/dbaas/datastores"

# 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)
Пример ответа:
{
    "code": 200,
    "title": "OK",
    "count": 4,
    "results": [
        {
            "id": "99c839eb-9679-4e10-8f54-99125af9b2dc",
            "version": "8.0",
            "name": "MySQL"
        },
        {
            "id": "fca09615-2948-4ac1-aab2-445fdae12500",
            "version": "14",
            "name": "PostgreSQL"
        },
        {
            "id": "318462c0-9b4d-485e-88bb-3417e4c6b5bc",
            "version": "5.7",
            "name": "MySQL"
        },
        {
            "id": "2d090978-46ba-4a50-ac4b-2457b0a37c6d",
            "version": "13",
            "name": "PostgreSQL"
        }
    ]
}

Виртуальные роутеры

Виртуальный роутер позволяет подключить динамически переопределяемый внешний IP-адрес к локальной сети проекта, чтобы обеспечить доступ из проекта в Интернет.

Список виртуальных роутеров

Возвращает список виртуальных роутеров проекта
GET
/v1/projects/{object_id}/vrouters

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор проекта

Формат ответа

  • Параметр
    Тип данных
    Описание
  • count
    integer

    Количество виртуальных роутеров

  • results
    array

    Массив объектов, содержащих сведения о виртуальных роутерах

  • results.item
    object

    Объект, содержащий данные о виртуальном роутере

  • results.item.external_gateway_address_id
    string

    Внешний IP-адрес роутера

  • results.item.id
    string

    Идентификатор роутера

  • results.item.links
    array

    Массив ссылок на роутер

  • results.item.links.item
    object

    Ссылка на роутер

  • results.item.links.item.href
    string

    URL-адрес ссылки на роутер

  • results.item.links.item.rel
    string

    Версия API

  • results.item.name
    string

    Имя виртуального роутера

  • results.item.private_networks
    array

    Список приватных сетей, работающих с виртуальным роутером

  • results.item.private_networks.item
    string

    Локальная сеть, работающая с роутером

  • results.item.status
    string

    Состояние виртуального роутера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/vrouters"

# 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)
Пример ответа:
{
	"code": 200,
	"title": "OK",
	"count": 1,
	"results": [
		{
			"links": [
				{
					"rel": "self",
					"href": "http://api.clo.ru/v1/projects/78d6fc6b-42b9-42bc-a655-2f1194e22309/vrouters"
				}
			],
			"name": "test",
			"external_gateway_address_id": "ce0fbe44-9c47-46c7-b1cf-52694d194d40",
			"private_networks": ["631fa872-5bcd-4110-b274-5d14c38ad5"],
			"status": "ACTIVE",
			"id": "78d6fc6b-42b9-42bc-a655-2f1194e22309"
		}
	]
}

Создание виртуального роутера

Создаёт в проекте новый виртуальный роутер
POST
/v1/projects/{object_id}/vrouters

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор роутера

  • name*
    string

    Имя роутера

  • private_networks
    array

    Список приватных сетей, работающих с виртуальным роутером

  • private_networks.item
    string

    Локальная сеть

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий информацию о виртуальном роутере

  • result.external_gateway_address_id
    string

    Внешний IP-адрес роутера

  • result.id
    string

    Идентификатор роутера

  • result.links
    array

    Массив ссылок на роутер

  • result.links.item
    object

    Ссылка на роутер

  • result.links.item.href
    string

    URL-адрес ссылки на роутер

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя виртуального роутера

  • result.private_networks
    array

    Список локальных (приватных) сетей, работающих с виртуальным роутером

  • result.private_networks.item
    string

    Локальная сеть, работающая с роутером

  • result.status
    string

    Состояние виртуального роутера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/projects/{project_id}/vrouters"

# 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
# you need to replace all dummy values for appropriate keys with real parameters
r = requests.post(
	url = URL,
	headers = HEADERS,
	data = {
		"name":"test",
		"private_networks":[
			"631fa872-5bcd-4110-b274-5d14c38ad5b6"
		]
	}
)
Пример ответа:
{
	"code": 201,
	"title": "Created",
	"result": {
		"links": [
			{
				"rel": "self",
				"href": "http://api.clo.ru/v1/projects/4288849c-ba0b-4ab7-ab47-a9a2e27d1b48/vrouters"
			}
		],
		"name": "test",
		"external_gateway_address_id": "8132ff6e-70a7-4b68-96df-c13bc882d0f3",
		"private_networks": [
			"631fa872-5bcd-4110-b274-5d14c38ad5b6"
		],
		"status": "CREATING",
		"id": "4288849c-ba0b-4ab7-ab47-a9a2e27d1b48"
	}
}

Удаление виртуального роутера

Удаляет виртуальный роутер
DELETE
/v1/vrouters/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор роутера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/vrouters/{vrouter_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)

Информация о виртуальном роутере

Предоставляет детальную информацию о выбранном виртуальном роутере
GET
/v1/vrouters/{object_id}

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор роутера

Формат ответа

  • Параметр
    Тип данных
    Описание
  • result
    object

    Объект, содержащий информацию о выбранном роутере

  • result.external_gateway_address_id
    string

    Идентификатор внешнего IP-адреса (шлюза) виртуального роутера

  • result.id
    string

    Идентификатор виртуального роутера

  • result.links
    array

    Ссылки на детальную информацию о виртуальном роутере

  • result.links.item
    object

    Ссылка на данные о виртуальном роутере

  • result.links.item.href
    string

    URL-адрес ссылки

  • result.links.item.rel
    string

    Версия API

  • result.name
    string

    Имя виртуального роутера

  • result.private_networks
    array

    Список приватных сетей, работающих с виртуальным роутером

  • result.private_networks.item
    string

    Приватная сеть, работающая с виртуальным роутером

  • result.status
    string

    Статус виртуального роутера

Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/vrouters/{vrouter_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)
Пример ответа:
{
	"code": 200,
	"title": "OK",
	"result": {
		"links": [
			{
				"rel": "self",
				"href": "http://api.clo.ru/v1/projects/78d6fc6b-42b9-42bc-a655-2f1194e22309/vrouters"
			}
		],
		"name": "test",
		"external_gateway_address_id": "ce0fbe44-9c47-46c7-b1cf-52694d194d40",
		"private_networks": ["631fa872-5bcd-4110-b274-5d14c38ad5b6"],
		"status": "ACTIVE",
		"id": "78d6fc6b-42b9-42bc-a655-2f1194e22309"
	}
}

Запуск виртуального роутера

Запускает виртуальный роутер
POST
/v1/vrouters/{object_id}/start

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор роутера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/vrouters/{vrouter_id}/start"

# 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)

Остановка виртуального роутера

Останавливает запущенный виртуальный роутер
POST
/v1/vrouters/{object_id}/stop

Параметры запроса

  • Параметр
    Тип данных
    Описание
  • object_id*
    string
    Передается в path.

    Идентификатор роутера

Формат ответа

Отсутствует
Пример запроса:
  • Python
  • Bash
# importing the requests library
import requests

# api-endpoint
URL = "https://api.clo.ru/v1/vrouters/{vrouter_id}/stop"

# 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)