Тема
Быстрый старт
Получить доступ
Попросите оператора выдать URL API, тестовый ключ, режим клиентов (managed или aggregate), список разрешённых зон и sandbox-данные реестра. Для live дополнительно согласуйте валюту, тарифы, способ расчётов и пополнение оптового баланса. Исходящий IP вашего сервера должен входить в allowlist ключа, если она настроена.
Ключ создаётся оператором и показывается целиком только при выдаче или ротации. Храните его в серверном secret storage. Не помещайте ключ в браузер, мобильное приложение, Git, URL или журнал запросов.
bash
export RESELLER_API_BASE='https://api.b.websoft.kz/api/reseller/v1'
# Значение получить у оператора; строка ниже не является действующим ключом.
export RESELLER_API_TOKEN='rsl_test_REPLACE_KEY.REPLACE_SECRET'
curl --fail-with-body --silent --show-error \
"$RESELLER_API_BASE/context" \
-H "Authorization: Bearer $RESELLER_API_TOKEN" \
-H 'Accept: application/json'В исходнике руководства URL задан шаблоном, который портал заменяет значением DOCS_API_URL при сборке/запуске. Оператор должен настроить этот адрес для нужного окружения; перед отправкой ключа проверьте доверенный origin опубликованного примера.
Сверьте data.credential.environment, scopes, rate_limit_per_minute и data.provider.customer_mode. Не продолжайте тестовые записи, если вернулся live. 401 означает проблему аутентификации; 403 может означать запрещённый IP, состояние реселлера, план или недостаточные права; 404 также возможен, когда API отключён оператором. Подробности в обработке ошибок.
Необходимые права
| Сценарий | Scopes |
|---|---|
| Каталог и проверка домена | catalog.read, domains.read |
| Клиенты и контакты | customers.read, customers.write, contacts.read, contacts.write |
| Регистрация | quotes.create, orders.create, domains.register, orders.read, domains.read |
| Чтение услуг | services.read |
| Продление | quotes.create, domains.renew, domains.read |
| Перенос | quotes.create, domains.transfer, domains.read |
| Восстановление | quotes.create, domains.restore, domains.read |
| NS, контакты, блокировки, приватность, glue | domains.manage, domains.read |
| Код переноса | domains.auth-code, domains.read для чтения результата |
| Удаление | domains.delete, domains.read |
| Подтверждение владельца | domains.verify |
| Уведомления | webhooks.read, webhooks.manage |
| Баланс и движения, только live | balance.read, billing.read |
| Обращения, только live | tickets.read, tickets.write |
| Заказ хостинга | quotes.create, orders.create, hosting.order |
Для включения автопродления нужны одновременно domains.manage и domains.renew; для выключения достаточно domains.manage. Scopes не заменяют поддержку операции регистратором.
Первый запрос с телом
Даже проверка доступности использует POST и требует идемпотентный ключ. Пример ниже проверяет один домен, не регистрирует его.
bash
CHECK_KEY="$(node -e 'console.log(crypto.randomUUID())')"
curl --fail-with-body --silent --show-error \
"$RESELLER_API_BASE/domains/check" \
-H "Authorization: Bearer $RESELLER_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $CHECK_KEY" \
--data-raw '{"domain":"example.kz"}'Результат проверки не резервирует имя и может измениться до регистрации. Для новой проверки создаётся новый ключ; для повтора потерянного ответа прежней проверки сохраняются старый ключ и те же байты тела. Не генерируйте ключ внутри автоматической повторной попытки.
Порядок подключения
- Получить контекст и убедиться в тестовом окружении.
- Прочитать каталог, выбрать доступную зону и период.
- Создать клиента, если используется managed; в aggregate клиент назначен оператором.
- Создать контакт и сохранить его UUID.
- Проверить имя, получить quote, создать заказ.
- Дождаться результата регистрации, затем проверить чтение, NS и продление в sandbox.
- Подключить подписанные webhooks и резервную периодическую сверку.
- Выполнить приёмочные проверки, затем получить отдельный live-ключ.
Тестовое окружение не является офлайн-симулятором: оно может обращаться к тестовому серверу регистратора. Нужны его действительные тестовые контакты и разрешённые домены. Тестовые UUID и ключи не переносятся в live. Баланс, ledger и tickets в test запрещены.