Перейти к основному содержимому

Аутентификация

Запросы авторизуются токеном в заголовке Authorization. Первый токен выпускается вне этого API — в аккаунте ZennoHosting; дальше он передаётся в каждом вызове.

Правила

  • Получите токен до первого обращения к проектам, машинам, сетям, копиям и публичным адресам.
  • Передавайте заголовок Authorization в каждом запросе.

  • Значение должно иметь формат Bearer <token>.

  • Не держите токен в исходном коде — передавайте его через конфигурацию или хранилище секретов.

При чём здесь /tokens

В справочнике есть /tokens, но это управление токенами изнутри уже доступного API, а не способ получить доступ с нуля. Если доступа пока нет, выпустите первый токен в аккаунте ZennoHosting. Число токенов ограничено квотой accessTokens из GET /limits.

Первый запрос

Начните с запроса, который ничего не меняет. Список проектов — лучшая проверка: он сразу подтверждает и базовый адрес, и заголовок, и сам токен.

curl --request GET \
  --url 'https://api.zennohosting.com/v1/projects' \
  --header 'Authorization: Bearer <token>' \
  --header 'Accept: application/json'

Базовый адрес и Accept

Версия входит в базовый адрес — https://api.zennohosting.com/v1, — поэтому путь из документации, например /projects, вызывается как {базовый адрес}/projects. Ответы всегда приходят в JSON, так что Accept можно не передавать; в примерах он указан явно — Accept: application/json.

Что предусмотреть в клиенте

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

Как отличить проблему с доступом

Забытый префикс Bearer, истёкший токен и неверный заголовок Authorization на старте выглядят одинаково — и очень похоже на ошибку в базовом адресе. Признак именно проблемы с доступом — ответ 401. Проверяйте форму заголовка и срок действия токена прежде, чем искать причину в теле запроса.

Связанные эндпоинты