---
title: 'VMware Cloud Director API'
description: 'Примеры работы с методами VMware Cloud Director API'
---

VMware Cloud Director API позволяет взаимодействовать с VMware Cloud Director через REST-клиент.

Описание всех методов VMware Cloud Director API можно посмотреть в [документации VMware](https://developer.broadcom.com/xapis/vmware-cloud-director-api/latest/).

## Авторизация \{#authorization}

Чтобы авторизоваться и начать использовать API:

1. [Запросите версию API](#request-api-version).
2. [Получите токен](#get-token).

### 1. Запросить версию API \{#request-api-version}

1. Выведите список версий API:

   ```bash
   curl 'https://<url>/api/versions'
   ```

   Укажите `<url>` — адрес в зависимости от [региона](/infrastructure/locations/#region):

   * Москва: `vcd-msk.selectel.ru`;
   * Санкт-Петербург: `vcd.selectel.ru`.

   У актуальных версий API значение параметра `deprecated` будет `false`, у неактуальных — `true`.

2. Выберите любую актуальную версию API. В примерах запросов используется версия 36.3.

### 2. Получить токен \{#get-token}

1. С помощью любого инструмента для перевода строк из текстового формата в MIME Base64 переведите в формат MIME Base64 строку:

   ```
   <username>@<tenant>:<password>
   ```

   Укажите:

   * `<username>` — имя пользователя виртуального дата-центра. Подробнее в инструкции [Управлять пользователями виртуального дата-центра](/public-cloud/manage-public-cloud/manage-users/);
   * `<tenant>` — тенант, можно посмотреть в URL для входа в Cloud Director вида `https://<url>/tenant/<tenant>`;
   * `<password>` — пароль пользователя виртуального дата-центра.

2. Запросите токен:

   ```bash
   curl -i -XPOST \
   -H 'Accept: application/*;version=<version>' \
   -H 'Authorization: Basic <encoded_string>' \
   'https://<url>/cloudapi/1.0.0/sessions/'
   ```

   Укажите:

   * `<version>` — версию API;
   * `<encoded_string>` — строку, полученную на шаге 1;
   * `<url>` — адрес в зависимости от [региона](/infrastructure/locations/#region):

     * Москва: `vcd-msk.selectel.ru`;
     * Санкт-Петербург: `vcd.selectel.ru`.

3. Сохраните:

   * токен из поля `X-VMWARE-VCLOUD-ACCESS-TOKEN`. Когда сессия с ключом истечет, токен нужно будет получить заново;
   * идентификатор организации из поля `org:id`. В поле указаны данные в формате `urn:vcloud:org:<org_id>`, где `<org_id>` — идентификатор организации.

## Примеры запросов \{#request-examples}

Полное описание VMware Cloud Director API в [документации VMware](https://developer.broadcom.com/xapis/vmware-cloud-director-api/latest/).

### Запросить объекты организации \{#request-organization-objects}

Выведет все доступные объекты организации (виртуальные дата-центры, каталоги, задачи, квоты, группы, метаданные и сети организации), а также ссылку для администрирования организации.

Пример запроса:

```bash
curl \
-H 'Accept: application/*;version=<version>' \
-H 'Authorization: Bearer <token>' \
'https://<url>/api/org/<org_id>'
```

Укажите:

* `<version>` — версию API;
* `<token>` — [токен](#authorization);
* `<url>` — адрес в зависимости от [региона](/infrastructure/locations/#region):

  * Москва: `vcd-msk.selectel.ru`;
  * Санкт-Петербург: `vcd.selectel.ru`;
* `<org_id>` — идентификатор организации, который вы сохранили при [получении токена](#get-token).

### Запросить объекты виртуального дата-центра \{#request-vdc-objects}

Вернет список объектов виртуального дата-центра.

Пример запроса:

```bash
curl \
-H 'Accept: application/*;version=<version>' \
-H 'Authorization: Bearer <token>' \
'https://<url>/api/query?type=orgVdc'
```

Укажите:

* `<version>` — версию API;
* `<token>` — [токен](#authorization);
* `<url>` — адрес в зависимости от [региона](/infrastructure/locations/#region):

  * Москва: `vcd-msk.selectel.ru`;
  * Санкт-Петербург: `vcd.selectel.ru`.

### Запросить список виртуальных машин \{#request-list-of-vms}

Вернет список виртуальных машин.

Пример запроса:

```bash
curl \
-H 'Accept: application/*;version=<version>' \
-H 'Authorization: Bearer <token>' \
'https://<url>/api/query?type=vm&fields=name,containerName&filter=isVAppTemplate==false'
```

Укажите `<url>` — адрес в зависимости от [региона](/infrastructure/locations/#region):

* Москва: `vcd-msk.selectel.ru`;
* Санкт-Петербург: `vcd.selectel.ru`.

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

* `type=vm` — запрашивает объекты типа виртуальная машина;
* `fields=name,containerName` — для каждой виртуальной машины показывает только атрибуты `name` и `containerName` (и по умолчанию атрибуты `href`);
* `filter=isVAppTemplate==false` — выводит только развернутые виртуальные машины без шаблонов vApp.

### Включить виртуальную машину \{#turn-on-vm}

Включит указанную виртуальную машину.

Пример запроса:

```bash
curl -XPOST \
-H 'Accept: application/*;version=<version>' \
-H 'Authorization: Bearer <token>' \
'https://<url>/api/vApp/vm-<vm_id>/power/action/powerOn'
```

Укажите:

* `<version>` — версию API;
* `<token>` — [токен](#authorization);
* `<url>` — адрес в зависимости от [региона](/infrastructure/locations/#region):

  * Москва: `vcd-msk.selectel.ru`;
  * Санкт-Петербург: `vcd.selectel.ru`;
* `<vm_id>` — идентификатор виртуальной машины, можно посмотреть при [запросе списка виртуальных машин](#request-list-of-vms) в поле `href`.

### Выключить виртуальную машину \{#turn-off-vm}

Выключит указанную виртуальную машину.

Пример запроса:

```bash
curl -XPOST \
-H 'Accept: application/*;version=<version>' \
-H 'Authorization: Bearer <token>' \
'https://<url>/api/vApp/vm-<vm_id>/power/action/powerOff'
```

Укажите:

* `<version>` — версию API;
* `<token>` — [токен](#authorization);
* `<url>` — адрес в зависимости от [региона](/infrastructure/locations/#region):

  * Москва: `vcd-msk.selectel.ru`;
  * Санкт-Петербург: `vcd.selectel.ru`;
* `<vm_id>` — идентификатор виртуальной машины, можно посмотреть при [запросе списка виртуальных машин](#request-list-of-vms) в поле `href`.

### Выйти из сессии \{#exit-session}

Удалит текущую сессию.

Пример запроса:

```bash
curl -i -XDELETE \
-H 'Accept: application/*;version=<version>' \
-H 'Authorization: Bearer <token>' \
'https://<url>/cloudapi/1.0.0/sessions/'
```

Укажите:

* `<version>` — версию API;
* `<token>` — [токен](#authorization);
* `<url>` — адрес в зависимости от [региона](/infrastructure/locations/#region):

  * Москва: `vcd-msk.selectel.ru`;
  * Санкт-Петербург: `vcd.selectel.ru`.
