API управления ресурсами
Надёжность, доступная каждому

API управления ресурсами

Доступ к API предоставляется по запросу. Чтобы получить его, напишите запрос на адрес поддержки support@serveroid.com

Для доступа к API необходимо в каждом запросе передавать два обязательных параметра: clientId и apiKey. В примерах запросов ниже они опущены.

Часть методов API работает асинхронно и предполагает отложенное получение результатов исполнения при помощи параметра operationId. При этом, несмотря на асинхронный характер, такие методы могут вернуть ошибку в синхронном режиме в момент вызова, например в тех случаях, когда переданы некорректные параметры или клиент не имеет привилегий для выполнения операций над соответствующим ресурсом. Все асинхронные методы имеют соответствующую ремарку в описании.

Список проектов

Метод возвращает список проектов, принадлежащих данному аккаунту.

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

GET /api/v1/tenant

Пример ответа

{
  "status": "OK",
  "result": [
    {
      "id": 10081,
      "description": "По умолчанию"
    },
    {
      "id": 10082,
      "description": "Проект 1"
    },
    {
      "id": 10100,
      "description": "Project 1"
    }
  ]
}

Листинг виртуальных серверов

Метод возвращает список виртуальных серверов клиента и серверов, доступных данному клиенту при помощи опции коллективного доступа.

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

GET https://api.flops.ru/api/v1/vm/

Пример ответа

{
  "status": "OK",
  "result": [
    {
      "id": 88534,
      "tenantId": 111,
      "name": "win server",
      "internalId": "vm88534",
      "memory": 1024,
      "disk": 24576,
      "cpu": 1,
      "bandwidth": 100,
      "tariffId": 20,
      "ipAddresses": [],
      "privateIpAddress": "10.7.13.159",
      "state": "VIR_DOMAIN_SHUTOFF",
      "timeAdded": 1412089961298,
      "currentSnapshot": null,
      "backupPolicy": {
        "quantity": 1,
        "frequency": 72
      },
      "distribution": {
        "id": 219,
        "name": "WINDOWS_2008_R2",
        "description": "Win Server 2008 R2 x64",
        "bitness": 64
      },
      "ownerUser": null,
      "accessUsers": [],
      "publicKeys": [
        {
          "id": 2,
          "tenantId": 111,
          "name": "1",
          "type": "DSA",
          "publicKey": null,
          "timeAdded": null,
          "installed": false,
          "ownerUser": null
        }
      ]
    },
    {
      "id": 85662,
      "tenantId": 111,
      "name": "debian",
      "internalId": "vm85662",
      "memory": 1024,
      "disk": 32768,
      "cpu": 1,
      "bandwidth": 100,
      "tariffId": 20,
      "ipAddresses": [
        "185.22.60.234"
      ],
      "privateIpAddress": "10.7.5.71",
      "state": "VIR_DOMAIN_RUNNING",
      "timeAdded": 1400493750635,
      "currentSnapshot": null,
      "backupPolicy": {
        "quantity": 1,
        "frequency": 72
      },
      "distribution": {
        "id": 221,
        "name": "DEBIAN",
        "description": "Debian 7.5 x64",
        "bitness": 64
      },
      "ownerUser": null,
      "accessUsers": [],
      "publicKeys": [
        {
          "id": 2,
          "tenantId": 111,
          "name": "1",
          "type": "DSA",
          "publicKey": null,
          "timeAdded": null,
          "installed": true,
          "ownerUser": null
        }
      ]
    },
    {
      "id": 85561,
      "tenantId": 111,
      "name": "ubuntu",
      "internalId": "vm85561",
      "memory": 512,
      "disk": 16384,
      "cpu": 1,
      "bandwidth": 100,
      "tariffId": 20,
      "ipAddresses": [
        "185.22.60.228"
      ],
      "privateIpAddress": "10.7.4.234",
      "state": "VIR_DOMAIN_RUNNING",
      "timeAdded": 1399367371175,
      "currentSnapshot": 1357,
      "backupPolicy": {
        "quantity": 10,
        "frequency": 72
      },
      "distribution": {
        "id": 216,
        "name": "UBUNTU",
        "description": "Ubuntu 12.04.4 x64",
        "bitness": 64
      },
      "ownerUser": null,
      "accessUsers": [
        "user@serveroid.com"
      ],
      "publicKeys": [
        {
          "id": 2,
          "tenantId": 111,
          "name": "1",
          "type": "DSA",
          "publicKey": null,
          "timeAdded": null,
          "installed": true,
          "ownerUser": null
        },
        {
          "id": 67,
          "tenantId": 111,
          "name": "key",
          "type": "DSA",
          "publicKey": null,
          "timeAdded": null,
          "installed": false,
          "ownerUser": "user@serveroid.com"
        }
      ]
    }
  ]
}

Установка виртуального сервера

Асинхронный метод установки нового виртуального сервера. Метод создаёт задачу развёртывания нового виртуального сервера и возвращает её идентификатор operationId в случае успеха. В случае, когда в передаваемых параметрах допущена ошибка или есть другие факторы, препятствующие установке (например отсутствие средств на счету), метод возвращает исключение в синхронном режиме.

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

GET https://api.flops.ru/api/v1/vm/install/?name=[name]&tenantId=[tenantId]&distributionId=[distributionId]&tariffId=[tariffId]&password=[password]&publicKeyIds=[publicKeyId1]&publicKeyIds=[publicKeyId2]&softwareIds=[softwareId1]&softwareIds=[softwareId2]

Параметры

  • name - имя виртуального сервера, строка.
  • tenantId - идентификатор проекта.
  • distributionId - идентификатор дистрибутива, число, обязательный.
  • tariffId - идентификатор тарифного плана, число, обязательный.
  • memory - размер RAM в мегабайтах, число. При выборе фиксированного тарифа игнорируется. Минимальное значение - 512, максимальное - 16384.
  • disk - размер HDD в мегабайтах, число. При выборе фиксированного тарифа игнорируется. Минимальное значение - 8192, максимальное - 524288. Между размерами RAM и HDD должно выполняться условие HDD/RAM >= 64.
  • cpu - количество процессорных ядер, число. При выборе фиксированного тарифа игнорируется. Минимальное значение - 1, максимальное - 12.
  • ipCount - количество IP адресов, число. При выборе фиксированного тарифа игнорируется. Минимальное значение - 0, максимальное - 2.
  • password - пароль к виртуальному серверу, строка. Пароль должен состоять из латинских букв в разном регистре и хотя бы из одной цифры или спецсимвола !()[]-.?~`.
  • sendPassword - отправить пароль на электронную почту после создания сервера, булево (true|false).
  • openSupportAccess - открыть доступ поддержки к виртуальному серверу, булево (true|false).
  • publicKeyIds - идентификатор публичного ключа, число.
  • softwareIds - идентификатор программного обеспечения, число.

Пример ответа

{
 "status" : "OK",
 "result" : 88977,
 "operationId" : 61566
}

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

Асинхронный метод клонирования виртуального сервера. Метод создаёт задачу клонирования виртуального сервера и возвращает её идентификатор operationId в случае успеха. В случае, если по каким-либо причинам клонирование невозможно (например, отсутствуют средства на лицевом счету или дистрибутив не поддерживает клонирование), метод возвращает исключение в синхронном режиме.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/clone/?name=[name]&tenantId=[tenantId]&snapshotId=[snapshotId]

Параметры

  • vmId - идентификатор виртуального сервера для клонирования, число, обязательный.
  • name - имя для нового виртуального сервера, строка.
  • tenantId- идентификатор проекта.
  • snapshotId - идентификатор снимка состояния, из которого будет создан клон. Если не указан, будет скопировано текущее состояние.

Пример ответа

{
 "status" : "OK",
 "result" : 88980,
 "operationId" : 61586
}

Переустановка виртуального сервера

Асинхронный метод переустановки виртуального сервера. Метод создаёт задачу переустановки виртуального сервера и возвращает её идентификатор operationId в случае успеха. В случае, когда в передаваемых параметрах допущена ошибка или есть другие факторы, препятствующие установке (например отсутствие средств на счету), метод возвращает исключение в синхронном режиме.

Переустановка сервера позволяет заново установить сервер, поменяв любые его параметры, но сохранив при этом IP адреса и числовой идентификатор.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/reinstall/?name=[name]&tenantId=[tenantId]&distributionId=[distributionId]&tariffId=[tariffId]&password=[password]&publicKeyIds=[publicKeyId1]&publicKeyIds=[publicKeyId2]&softwareIds=[softwareId1]&softwareIds=[softwareId2]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • name - имя виртуального сервера, строка.
  • tenantId - идентификатор проекта, число, обязательный.
  • distributionId - идентификатор дистрибутива, число.
  • tariffId - идентификатор тарифного плана, число.
  • memory - размер RAM в мегабайтах, число. При выборе фиксированного тарифа игнорируется. Минимальное значение - 512, максимальное - 16384.
  • disk - размер HDD в мегабайтах, число. При выборе фиксированного тарифа игнорируется. Минимальное значение - 8192, максимальное - 524288. Между размерами RAM и HDD должно выполняться условие HDD/RAM <= 64.
  • cpu - количество процессорных ядер, число. При выборе фиксированного тарифа игнорируется. Минимальное значение - 1, максимальное - 12.
  • password - пароль к виртуальному серверу, строка. Пароль должен состоять из латинских букв в разном регистре и хотя бы из одной цифры или спецсимвола !()[]-.?~`.
  • sendPassword - отправить пароль на электронную почту после переустановки сервера, булево (true|false).
  • openSupportAccess - открыть доступ поддержки к виртуальному серверу, булево (true|false).
  • publicKeyIds - идентификатор публичного ключа, число.
  • softwareIds - идентификатор программного обеспечения, число.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61589
}

Информация о виртуальном сервере

Метод возвращает информацию о виртуальном сервере по его идентификатору.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.

Пример ответа

{
  "status": "OK",
  "result": {
    "id": 85561,
    "tenantId": 111,
    "name": "ubuntu",
    "internalId": "vm85561",
    "memory": 512,
    "disk": 16384,
    "cpu": 1,
    "bandwidth": 100,
    "tariffId": 20,
    "ipAddresses": [
      "185.22.60.228"
    ],
    "privateIpAddress": "10.7.4.234",
    "state": "VIR_DOMAIN_RUNNING",
    "timeAdded": 1399367371175,
    "currentSnapshot": 1357,
    "backupPolicy": {
      "quantity": 10,
      "frequency": 72
    },
    "distribution": {
      "id": 216,
      "name": "UBUNTU",
      "description": "Ubuntu 12.04.4 x64",
      "bitness": 64
    },
    "ownerUser": null,
    "accessUsers": [
      "user@serveroid.com"
    ],
    "publicKeys": [
      {
        "id": 254,
        "tenantId": 111,
        "name": "my-key",
        "type": "DSA",
        "publicKey": null,
        "timeAdded": null,
        "installed": false,
        "ownerUser": null
      },
      {
        "id": 2,
        "tenantId": 111,
        "name": "1",
        "type": "DSA",
        "publicKey": null,
        "timeAdded": null,
        "installed": true,
        "ownerUser": null
      },
      {
        "id": 67,
        "tenantId": 111,
        "name": "key",
        "type": "DSA",
        "publicKey": null,
        "timeAdded": null,
        "installed": false,
        "ownerUser": "user@serveroid.com"
      }
    ]
  }
}

Изменение имени виртуального сервера

Метод изменения названия сервера, данного ему при установке.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/rename/?tenantId=[tenantId]&name=[name]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • name - новое имя виртуального сервера, строка.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61591
}

Запуск виртуального сервера

Метод запуска виртуального сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/start/?tenantId=[tenantId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61592
}

Принудительная перезагрузка виртуального сервера

Метод принудительной перезагрузки (reset) виртуального сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/reset/?tenantId=[tenantId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61593
}

Мягкая перезагрузка сервера

Асинхронный метод мягкой перезагрузки (reboot) виртуального сервера. Метод отправляет серверу сигнал о перезагрузке и возвращает идентификатор операции, который позволяет отслеживать результат. Если в течение 3 минут перезагрузка не произошла, операция маркируется как ошибочная.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/reboot/?tenantId=[tenantId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61594
}

Принудительное выключение виртуального сервера

Метод принудительного выключения (power off) виртуального сервера. Принудительное выключение сервера аналогично выключению питания у реального сервера. Сервер будет гарантированно остановлен, однако при этом будут утеряны все данные, которые не были сохранены на диск.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/poweroff/?tenantId=[tenantId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61595
}

Мягкое выключение виртуального сервера

Асинхронный метод мягкого выключения (shutdown) виртуального сервера. Мягкое выключение — это отправка сигнала выключения операционной системе сервера. Получив этот сигнал, операционная система корректно завершит все работающие приложения и остановит сервер. В зависимости от работающих приложений, мягкое выключение может занять длительное время или не выполниться вообще. Если в течение 3 минут после отправки сигнала выключение не произошло, операция маркируется как ошибочная.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/shutdown/?tenantId=[tenantId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61597
}

Удаление виртуального сервера

Метод для удаления виртуального сервера. Важно: методы подтверждения операции при помощи SMS и электронной почты на API не распространяются.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/delete/?tenantId=[tenantId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61628
}

Изменение пароля виртуального сервера

Метод изменения пароля администратора виртуального сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/password_change/?tenantId=[tenantId]&password=[password]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • password - новый пароль к виртуальному серверу, строка, обязательный. Пароль должен состоять из латинских букв в разном регистре и хотя бы из одной цифры или спецсимвола !()[]-.?~`.
  • sendPassword - отправить пароль на электронную почту после изменения, булево (true|false).

Пример ответа

{
 "status" : "OK",
 "operationId" : 61599
}

Изменение публичных ключей виртуального сервера

Метод изменения файла публичных ключей authorized_keys виртуального сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/pubkey_change/?tenantId=[tenantId]&keyIds=[keyId1]&keyIds=[keyId2]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • keyIds - идентификатор публичного ключа, число. Публичные ключи будут переписаны! В случае, если ни один ключ не указан, файл публичных ключей будет очищен.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61600
}

Изменение размера RAM виртуального сервера

Метод изменения объёма оперативной памяти виртуального сервера. Изменение RAM запрещено для фиксированных тарифных планов. При уменьшении размера RAM необходима перезагрузка виртуального сервера. Автоматически это можно сделать с помощью параметра allowRestart.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/memory_change/?tenantId=[tenantId]&memory=[memory]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • memory - размер RAM в мегабайтах, число, обязательный. Минимальное значение - 512, максимальное - 16384.
  • allowRestart - выполнить перезагрузку сервера при уменьшении размера RAM, булево (true|false).

Пример ответа

{
 "status" : "OK",
 "operationId" : 61604
}

Изменение размера HDD виртуального сервера

Метод горячего увеличения объёма жёсткого диска виртуального сервера. Изменение HDD запрещено для фиксированных тарифных планов. При увеличении жёсткого диска проверяется условие попадания в допустимую пропорцию память/диск, по умолчанию равную 1 к 64. Если для нового значения HDD данное условие не выполняется, можно автоматически увеличить размер RAM, установив параметр allowMemoryChange в true.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/disk_change/?tenantId=[tenantId]&disk=[disk]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • disk - размер HDD в мегабайтах, число, обязательный. Минимальное значение - 8192, максимальное - 524288.
  • allowMemoryChange - разрешить увеличение размера RAM, булево (true|false).

Пример ответа

{
 "status" : "OK",
 "operationId" : 61607
}

Изменение разрешённой процессорной квоты виртуального сервера

Метод горячего увеличения доступной процессорной квоты виртуального сервера. Изменение квоты запрещено для фиксированных тарифных планов.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/cpu_change/?tenantId=[tenantId]&cpu=[cpu]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • cpu - количество процессорных ядер, число, обязательный. Минимальное значение - 1, максимальное - 12.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61609
}

Изменение тарифного плана виртуального сервера

Метод изменения тарифного плана виртуального сервера. Возможно перейти лишь на тарифный план с размером диска не меньшим, чем тот, которым обладает сервер в момент вызова.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/tariff_change/?tenantId=[tenantId]&tariffId=[tariffId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • tariffId - идентификатор тарифного плана, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61603
}

Изменение настроек резервирования виртуального сервера

Метод изменения настроек резервирования виртуального сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/backup_policy_change/?tenantId=[tenantId]&quantity=[quantity]&frequency=[frequency]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • quantity - количество хранимых копий, число, обязательный. Минимальное значение - 1, максимальное - 10.
  • frequency - интервал между копиями в часах, число, обязательный. Одно из значений: 3, 6, 12, 24, 72.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61611
}

Добавление IP адреса

Метод добавления публичного IP адреса к виртуальному серверу. После выделения адреса предпринимается попытка переконфигурировать сетевые настройки сервера. В случае, если эта попытка не удалась, будет возвращена ошибка с кодом error.inet.ip.guest.add. Она означает, что IP адрес добавлен, но его необходимо вручную сконфигурировать в настройках операционной системы. Получить вновь добавленный IP адрес можно при помощи запроса деталей сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/ip_add/?tenantId=[tenantId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61612
}

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

Метод удаления публичного IP адреса виртуального сервера. После блокировки адреса предпринимается попытка обновить сетевые настройки сервера. В случае, если эта попытка не удалась, будет возвращена ошибка с кодом error.inet.ip.guest.remove. Она означает, что IP адрес более недоступен для данного виртуального сервера, но он по-прежнему присутствует в настройках операционной системы и для избежания потенциальных проблем его целесообразно удалить оттуда вручную.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/ip_delete/?tenantId=[tenantId]&ip=[ip]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • ip - IP адрес для удаления, строка, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61615
}

Перенос IP адреса

Перенос IP адреса между двумя виртуальными машинами. Перенос IP адреса может сопровождаться ошибками error.inet.ip.guest.add и error.inet.ip.guest.remove, которые описаны выше.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/ip_move/?tenantId=[tenantId]&toVmId=[toVmId]&ip=[ip]

Параметры

  • vmId - идентификатор виртуального сервера откуда будет удален IP адрес, число, обязательный.
  • tenantId - идентификатор проекта исходного виртуального сервера, число, обязательный.
  • toVmId - идентификатор виртуального сервера куда будет добавлен IP адрес, число, обязательный.
  • ip - IP адрес для удаления, строка, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61614
}

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

Метод для получения списка снимков состояния (снепшотов) виртуального сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/snapshots/

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.

Пример ответа

{
  "status": "OK",
  "result": [
    {
      "id": 2206,
      "name": "my-snapshot",
      "description": "My first snapshot",
      "parentSnapshotId": null,
      "timeAdded": 1414156778188
    }
  ]
}

Создание снимка состояния виртуального сервера

Асинхронный метод для создания снимка состояния виртуального сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/snapshot_create/?tenantId=[tenantId]&name=[name]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • name - имя снимка состояния, строка, обязательный.
  • description - описание снимка состояния, строка.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61571
}

Возврат к снимку состояния виртуального сервера

Асинхронный метод для возврата к ранее созданному снимку состояния виртуального сервера. В случае, если с момента создания снимка был изменён тарифный план, он будет изменён на тот, который имел место в момент создания снимка.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/snapshot_rollback/?tenantId=[tenantId]&snapshotId=[snapshotId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • snapshotId - идентификатор снимка состояния, число, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61572
}

Удаление снимка состояния виртуального сервера

Асинхронный метод для удаления ранее созданного снимка состояния виртуального сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/snapshot_delete/?tenantId=[tenantId]&snapshotId=[snapshotId]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • snapshotId - идентификатор снимка состояния, число, обязательный.
  • deleteChildren - удалить дочерние снимки, булево (true|false).

Пример ответа

{
 "status" : "OK",
 "operationId" : 61580
}

Список резервных копий виртуального сервера

Метод получения списка сохранённых резервных копий сервера.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/backups/

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.

Пример ответа

{
  "status": "OK",
  "result": [
    {
      "id": "diff-backupsnap20141019011721-backupsnap20141022015414.lz4",
      "size": 32768,
      "timeAdded": 1413928454000
    }
  ]
}

Возврат к резервной копии виртуального сервера

Асинхронный метод возврата к ранее сохранённой резервной копии виртуального сервера.

Внимание! Возврат к резервной копии влечёт за собой следующие последствия:
1. производится удаление всех снимков состояния виртуального сервера, если они существуют.
2. текущее состояние диска сервера безвозвратно теряется.
3. в случае если с момента создания резервной копии изменился тарифный план, он будут возвращён и изменён на тот, который был актуален в момент создания копии.

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

GET https://api.flops.ru/api/v1/vm/[vmId]/backup_rollback/?tenantId=[tenantId]&backup=[backup]

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • backup - идентификатор резервной копии, строка, обязательный.
  • createBackup - создать резервную копию перед возвратом, булево (true|false).

Пример ответа

{
 "status" : "OK",
 "operationId" : 61619
}

Выгрузка резервной копии виртуального сервера

Асинхронный метод выгрузки ранее сохранённой резервной копии виртуального сервера.

Обращаем внимание — выгрузка резервной копии виртуального сервера платная и тарифицируется так, как если бы исходящий трафик генерировался данной виртуальной машиной.

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

GET https://api.flops.ru/v1/vm/[vmId]/backup_download/?tenantId=[tenantId]&backup=[backup]

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

Пример завершившейся операции со ссылкой для скачивания:

{
  "status": "OK",
  "result": {
    "id": 106765,
    "vmId": 92821,
    "tenantId": 111,
    "status": "DONE",
    "operationType": "DOWNLOAD_BACKUP",
    "percentage": 100,
    "errorMessage": null,
    "errorCode": null,
    "operationResult": "https://download2.flops.ru/?p=177fdaa76833b30cff2b9771225b18a7&b=diff-backupsnap20150409090001-backupsnap20150409120002.lz4"
  }
}

Параметры

  • vmId - идентификатор виртуального сервера, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • backup - идентификатор резервной копии, строка, обязательный.

Пример ответа

{
 "status" : "OK",
 "operationId" : 61719
}

Список публичных ключей

Метод получения списка публичных ключей, зарегистрированных в аккаунте.

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

GET https://api.flops.ru/api/v1/pubkeys/

Пример ответа

{
  "status": "OK",
  "result": [
    {
      "id": 254,
      "name": "my-key2",
      "type": "DSA",
      "publicKey": "ssh-dss AAAAB3NzaC1kc3MAAACBAK5uLwicCrFEpaV...Nt0Q7P45rZjNNTag2c= user@host",
      "timeAdded": 1414156464315
    },
    {
      "id": 2,
      "tenantId": 111,
      "name": "my-key1",
      "type": "DSA",
      "publicKey": "ssh-dss AAAAB3NzaC1kc3MAAACBAK5uLwicCrFEpaV...Nt0Q7P45rZjNNTag2c= user@host",
      "timeAdded": 1351093292416
    }
  ]
}

Добавление публичного ключа

Метод добавления нового публичного ключа в аккаунт.

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

GET https://api.flops.ru/api/v1/pubkeys/add/?tenantId=[tenantId]&name=[name]&publicKey=[publicKey]

Параметры

  • tenantId - идентификатор проекта, число, обязательный.
  • name - имя публичного ключа, строка, обязательный.
  • publicKey - публичный ключ, строка, обязательный.

Пример ответа

{
  "status": "OK",
  "result": {
    "id": 255,
    "name": "my-key1",
    "type": "DSA",
    "publicKey": "ssh-dss AAAAB3NzaC1kc3MAAACBAK5uLwicCrFEpaV...Nt0Q7P45rZjNNTag2c= user@host",
    "timeAdded": 1351093292416
  }
}

Редактирование публичного ключа

Метод для изменения существующего публичного ключа.

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

GET https://api.flops.ru/api/v1/pubkeys/[keyId]/edit/?tenantId=[tenantId]&name=[name]&publicKey=[publicKey]

Параметры

  • keyId - идентификатор публичного ключа, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.
  • name - имя публичного ключа, строка.
  • publicKey - публичный ключ, строка.

Пример ответа

{
  "status": "OK",
  "result": {
    "id": 2,
    "name": "my-key1-new",
    "type": "DSA",
    "publicKey": "ssh-dss AAAAB3NzaC1kc3MAAACBAK5uLwicCrFEpaV...Nt0Q7P45rZjNNTag2c= user@host",
    "timeAdded": 1351093292416
  }
}

Удаление публичного ключа

Метод для удаления существующего публичного ключа.

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

GET https://api.flops.ru/api/v1/pubkeys/[keyId]/delete/?tenantId=[tenantId]

Параметры

  • keyId - идентификатор публичного ключа, число, обязательный.
  • tenantId - идентификатор проекта, число, обязательный.

Пример ответа

{
 "status" : "OK"
}

Информация о ходе операции

Метод получения информации о ходе асинхронной задачи по ее operationId.

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

GET https://api.flops.ru/api/v1/operation/[operationId]/

Параметры

  • operationId - идентификатор операции, число, обязательный.

Примеры ответа

{
  "status": "OK",
  "result": {
    "id": 61626,
    "vmId": 85662,
    "tenantId": 111,
    "status": "DONE",
    "operationType": "VM_DESTROY",
    "percentage": 100,
    "errorMessage": null,
    "errorCode": null
  }
}
{
  "status": "OK",
  "result": {
    "id": 61625,
    "vmId": 85662,
    "tenantId": 111,
    "status": "PENDING",
    "operationType": "VM_REVERT_TO_BACKUP",
    "percentage": 51,
    "errorMessage": null,
    "errorCode": null
  }
}

Список доступных дистрибутивов

Метод возвращает список дистрибутивов, доступных для установки.

Внимание! По мере внесения изменений идентификатор одного и того же дистрибутива может меняться.

Не рекомендуем сохранять или кешировать числовые идентификаторы дистрибутивов, поскольку это может привести к ошибкам (попытке установки виртуального сервера из устаревшего или несуществующего образа). Единственно верный способ — заново определять числовой идентификатор требуемого дистрибутива по его названию и битности при каждой установке сервера.

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

GET https://api.flops.ru/api/v1/distribution/

Пример ответа

{
  "status": "OK",
  "result": [
    {
      "id": 233,
      "name": "DEBIAN",
      "description": "Debian 7.6 x64",
      "bitness": 64
    },
    {
      "id": 234,
      "name": "DEBIAN",
      "description": "Debian 7.6 x86",
      "bitness": 32
    },
    {
      "id": 230,
      "name": "UBUNTU",
      "description": "Ubuntu 14.04.1 x64",
      "bitness": 64
    },
    {
      "id": 232,
      "name": "UBUNTU",
      "description": "Ubuntu 12.04.5 x64",
      "bitness": 64
    },
    {
      "id": 235,
      "name": "SUSE",
      "description": "OpenSuse 13.1 x64",
      "bitness": 64
    },
    {
      "id": 231,
      "name": "CENTOS",
      "description": "CentOS 6.5 x64",
      "bitness": 64
    },
    {
      "id": 219,
      "name": "WINDOWS_2008_R2",
      "description": "Win Server 2008 R2 x64",
      "bitness": 64
    },
    {
      "id": 236,
      "name": "FEDORA",
      "description": "Fedora 20 x64",
      "bitness": 64
    },
    {
      "id": 220,
      "name": "WINDOWS_2012",
      "description": "Win Server 2012 R2 x64",
      "bitness": 64
    }
  ]
}

Список доступного программного обеспечения

Метод возвращает список программного обеспечения, доступного для предустановки при развертывании сервера.

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

GET https://api.flops.ru/api/v1/software/

Пример ответа

{
  "status": "OK",
  "result": [
    {
      "id": 1,
      "name": "mysql"
    },
    {
      "id": 2,
      "name": "postgresql"
    },
    {
      "id": 3,
      "name": "nginx + php-fpm"
    },
    {
      "id": 4,
      "name": "apache"
    },
    {
      "id": 5,
      "name": "java"
    }
  ]
}

Список доступных тарифных планов

Метод возвращает список тарифных планов, доступных данному клиенту.

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

GET https://api.flops.ru/api/v1/tariffs/

Пример ответа

{
  "status": "OK",
  "result": [
    {
      "id": 3,
      "name": "Облачный 512",
      "memory": 512,
      "disk": 16384,
      "cpu": 1,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": false
    },
    {
      "id": 4,
      "name": "Облачный 1024",
      "memory": 1024,
      "disk": 32768,
      "cpu": 1,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": false
    },
    {
      "id": 5,
      "name": "Облачный 2048",
      "memory": 2048,
      "disk": 65536,
      "cpu": 2,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": false
    },
    {
      "id": 6,
      "name": "Облачный 4096",
      "memory": 4096,
      "disk": 131072,
      "cpu": 2,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": false
    },
    {
      "id": 10,
      "name": "Облачный 8192",
      "memory": 8192,
      "disk": 262144,
      "cpu": 4,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": false
    },
    {
      "id": 11,
      "name": "Облачный 16384",
      "memory": 16384,
      "disk": 524288,
      "cpu": 8,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": false
    },
    {
      "id": 1,
      "name": "Облачный без границ",
      "memory": 512,
      "disk": 8000,
      "cpu": 0,
      "ipCount": 0,
      "onDemand": true,
      "forWindows": false
    },
    {
      "id": 7,
      "name": "Облачный 1024 для Windows",
      "memory": 1024,
      "disk": 32768,
      "cpu": 1,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": true
    },
    {
      "id": 8,
      "name": "Облачный 2048 для Windows",
      "memory": 2048,
      "disk": 65536,
      "cpu": 2,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": true
    },
    {
      "id": 9,
      "name": "Облачный 4096 для Windows",
      "memory": 4096,
      "disk": 131072,
      "cpu": 2,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": true
    },
    {
      "id": 12,
      "name": "Облачный 8192 для Windows",
      "memory": 8192,
      "disk": 262144,
      "cpu": 4,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": true
    },
    {
      "id": 13,
      "name": "Облачный 16384 для Windows",
      "memory": 16384,
      "disk": 524288,
      "cpu": 8,
      "ipCount": 1,
      "onDemand": false,
      "forWindows": true
    },
    {
      "id": 2,
      "name": "Облачный без границ для Windows",
      "memory": 512,
      "disk": 8000,
      "cpu": 0,
      "ipCount": 0,
      "onDemand": true,
      "forWindows": true
    }
  ]
}

Примеры ошибок

Ошибка прав доступа

{
 "status" : "ERROR",
 "errorMessage" : "Ошибка прав доступа. Обратитесь в службу поддержки.",
 "errorCode" : "error.not.owner"
}

Объект не найден

{
 "status" : "ERROR",
 "errorMessage" : "Объект не найден. Обратитесь в службу поддержки.",
 "errorCode" : "error.object.not.found"
}

Ссылки: