Аутентификация
Запросы авторизуются токеном в заголовке 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. Проверяйте форму заголовка и срок действия токена прежде, чем искать причину в теле запроса.