# Selectel API: Управлять DNS-записями домена

Сценарий из mcp-everything. Актуально на 2026-10-24.

Автоматически добавлять поддомены для клиентов, менять записи при переезде, подтверждать домен TXT-записью.

1. Получи зоны: GET /domains/v2/zones с токеном проекта — найди id своей зоны. Новую зону создаёт POST /domains/v2/zones (имя с точкой в конце).
2. Добавь запись: POST /domains/v2/zones/{zone_id}/rrset с name (полное имя с точкой в конце), type, ttl (60–604800) и records — списком content.
3. Найти существующую запись — GET /domains/v2/zones/{zone_id}/rrset с name или search; изменить — PATCH /domains/v2/zones/{zone_id}/rrset/{rrset_id} с ttl и новым records (ответ 204); удалить — DELETE по тому же адресу.

```bash
curl -X POST "https://api.selectel.ru/domains/v2/zones/<zone_id>/rrset" \
  -H "X-Auth-Token: $TOKEN" -H 'Content-Type: application/json' \
  -d '{"name": "shop.example.ru.", "type": "A", "ttl": 300, "records": [{"content": "203.0.113.10"}]}'
```

## Базовые URL

- Боевой: `https://api.selectel.ru`
- Identity (токены): `https://cloud.api.selcloud.ru`
- Адреса по сервисам: `https://api.selectel.ru/vpc/resell/v2`

## Авторизация

Тип: Другое

- IAM-токен аккаунта (`iam_token_account_scoped`) или проекта (`iam_token_project_scoped`) — заголовок `X-Auth-Token`, живёт 24 часа. Получается запросом `POST https://cloud.api.selcloud.ru/identity/v3/auth/tokens` (метод `password`: имя сервисного пользователя, ID аккаунта как домен, пароль; `scope` — `domain` или `project`). Токен возвращается в заголовке ответа `X-Subject-Token`, код `201`.
- Статический токен (`static_token`) — заголовок `X-Token`, без срока действия, только для пользователей панели; не работает с OpenStack API. Нужен для отчётов биллинга, тикетов, учёта IP.

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

## Методы сценария

### GET /domains/v2/zones — Список DNS-зон

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `X-Auth-Token` | header | string | да | IAM-токен проекта |
| `limit` | query | integer | нет | Сколько вернуть, по умолчанию 1000 |
| `offset` | query | integer | нет | Смещение, по умолчанию 0 |
| `filter` | query | string | нет | Фильтр по имени |
| `sort_by` | query | array | нет | Сортировка, по умолчанию name.ascend |

### POST /domains/v2/zones — Создание DNS-зоны

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `name` | body | string | да | Доменное имя зоны (оканчивается точкой) |

### GET /domains/v2/zones/{zone_id}/rrset — Записи зоны

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `zone_id` | path | string | да | UUID зоны |
| `limit` | query | integer | нет | По умолчанию 1000 |
| `offset` | query | integer | нет | Смещение |
| `rrset_types` | query | array | нет | Фильтр по типу |
| `name` | query | string | нет | Фильтр по имени |
| `search` | query | string | нет | Поиск по имени или содержимому |

### POST /domains/v2/zones/{zone_id}/rrset — Создание набора записей

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `zone_id` | path | string | да | UUID зоны |
| `name` | body | string | да | Имя (FQDN с точкой в конце) |
| `ttl` | body | integer | да | 60–604800 секунд |
| `type` | body | string | да | A, AAAA, ALIAS, CAA, CNAME, DNAME, HTTPS, MX, NS, SOA, SRV, SVCB, SSHFP, TXT |
| `records` | body | array | да | 1–100 записей: content, disabled |
| `comment` | body | string | нет | Комментарий |

### PATCH /domains/v2/zones/{zone_id}/rrset/{rrset_id} — Изменение набора записей

Успех — `204`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `zone_id` | path | string | да | UUID зоны |
| `rrset_id` | path | string | да | UUID набора записей |
| `ttl` | body | integer | да | 60–604800 секунд |
| `records` | body | array | да | Новый список записей |
| `comment` | body | string | нет | Комментарий |

## Нюансы

- Облачные серверы, сети и диски создаются через OpenStack API; Resell API управляет проектами, квотами, публичными IP, подсетями и трафиком.
- Методы `/v2/keypairs` и лицензий в Resell API устарели и будут удалены — для SSH-ключей используйте Nova API.
- Имена зон и записей DNS — полные, с точкой в конце.
- Для пулов в Центральной Азии и Кении используются хосты `*.servercore.com`.
- У каждого API есть OpenAPI-спецификация в JSON на странице документации (например, `https://docs.selectel.ru/api/dns-actual.json`).

## Другие сценарии

- [Получить IAM-токен сервисного пользователя](https://mcp-everything.ru/integrations/selectel/scenarios/poluchit-iam-token-servisnogo.md)
- [Следить за балансом и прогнозом расходов](https://mcp-everything.ru/integrations/selectel/scenarios/sledit-za-balansom-i-prognozom-rashodov.md)
- [Создать облачный проект и выделить публичные IP](https://mcp-everything.ru/integrations/selectel/scenarios/sozdat-oblachnyy-proekt-i-vydelit.md)

---

Если этого недостаточно — официальная документация: https://docs.selectel.ru/api/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/selectel.md
