Аутентификация
Каждый запрос, который отправляет CLI, несёт API-ключ вашего проекта. Сохраните ключи один раз командой status200 login, по контексту на каждое окружение, или передайте их команде во флагах или переменных окружения, как это делают скрипты. Эта страница показывает каждый способ и то, какой из них команда использует, когда их несколько.
Перед началом
Вам нужен API-ключ вашего проекта. Создайте его в Настройки проекта → Расширенный → Ключи API кнопкой Создать: API-ключ и дайте ему доступ, который нужен вашим командам: см. Создайте API-ключ. Ключ делает то, что разрешают его права: ключ, которому можно только читать записи, может выводить и читать их, но не изменять.
В Status200 Cloud API-ключи работают только пока проект на плане Growth или выше. Ниже него каждая команда отвечает API error (402) с сообщением, которое называет план, пока проект не перейдёт на план выше; тогда тот же ключ снова работает. См. API-ключи и SCIM ниже их плана.
Вход
status200 login сохраняет API-ключ и адрес вашего Status200 как контекст и делает его текущим контекстом:
status200 login <api-key> <instance-url> [--context-name <name>]| Аргумент или параметр | Что это |
|---|---|
<api-key> | API-ключ вашего проекта |
<instance-url> | Адрес вашего Status200: https://status200.ru или адрес вашего собственного сервера, например https://status200.example.com |
--context-name <name> | Имя, под которым сохраняется контекст. По умолчанию: default |
Например, контекст с именем production:
status200 login <api-key> https://status200.ru --context-name productionОна отвечает Logged in successfully. Context "production" is now active. Косая черта в конце адреса удаляется, а повторный вход под тем же именем заменяет этот контекст.
login сохраняет ключ, ничего не спрашивая у Status200. Запустите команду, например status200 incident count, чтобы убедиться, что ключ работает.Контексты
Контекст — это сохранённый вход: имя, адрес и API-ключ. Сохраните по одному для каждого проекта или окружения, затем выберите один для всех следующих команд или для одной команды.
Сохраните контекст для каждого окружения
status200 login <production-api-key> https://status200.ru --context-name production status200 login <staging-api-key> https://status200.example.com --context-name stagingКаждый вход делает свой контекст текущим, поэтому сейчас текущий —
staging.Выведите их
status200 context list┌───┬────────────┬───────────────────────────────┐ │ │ Name │ URL │ ├───┼────────────┼───────────────────────────────┤ │ │ production │ https://status200.ru │ ├───┼────────────┼───────────────────────────────┤ │ * │ staging │ https://status200.example.com │ └───┴────────────┴───────────────────────────────┘*отмечает текущий контекст. API-ключи никогда не выводятся.Переключитесь на другой контекст
status200 context use productionОна отвечает
Switched to context "production"., и следующие команды используют его.Используйте контекст для одной команды
status200 incident list --context stagingТекущий контекст остаётся прежним.
| Команда | Что делает |
|---|---|
status200 context list | Выводит сохранённые контексты; * отмечает текущий. С -o json — name, apiUrl и isCurrent каждого контекста, но никогда не его ключ |
status200 context use <name> | Делает сохранённый контекст текущим |
status200 context current | Показывает имя, URL и API-ключ текущего контекста, скрывая в ключе всё, кроме первых четырёх и последних четырёх символов |
status200 context delete <name> | Удаляет сохранённый контекст. Если он был текущим, текущим становится первый оставшийся контекст |
Какие учётные данные использует команда
Команде нужны API-ключ и URL. Каждое из двух она берёт из первого из этих мест, где оно есть:
Где команда находит свой API-ключ и URL
Поэтому их можно сочетать: например, API-ключ из переменной окружения с URL текущего контекста. Переменные окружения подходят для скриптов и заданий CI, у которых нет сохранённых контекстов:
Linux
export STATUS200_API_KEY=<api-key>
export STATUS200_URL=https://status200.ru
status200 incident listmacOS
export STATUS200_API_KEY=<api-key>
export STATUS200_URL=https://status200.ru
status200 incident listWindows
$env:STATUS200_API_KEY = "<api-key>"
$env:STATUS200_URL = "https://status200.ru"
status200 incident listФлаги важнее всего остального, для одной команды:
status200 --api-key <api-key> --url https://status200.ru incident listКлюч, переданный флагом, попадает в историю вашей оболочки, а другие пользователи машины могут увидеть его в списке процессов. На общей машине используйте вместо этого контекст или переменную окружения.
Проверьте, что будет использовать CLI
status200 whoami показывает URL и API-ключ, которые использует следующая команда, и контекст, из которого они взяты:
status200 whoamiURL: https://status200.ru
API Key: 4f1c****0a13
Context: productionПоказываются только первые четыре и последние четыре символа ключа. Строка Context появляется, только когда URL и ключ принадлежат самому контексту, а не заменены флагом или переменной окружения. whoami читает ваши настройки, не обращаясь к Status200: она показывает, что отправит команда, а не примет ли это Status200. Если ничего не сохранено и не задано, она отвечает:
Not authenticated. Run `status200 login` to authenticate.Файл конфигурации
status200 login сохраняет контексты в ~/.oneuptime/config.json, в вашей домашней папке (%USERPROFILE%\.oneuptime\config.json в Windows). CLI создаёт его так, чтобы читать и записывать его мог только ваш пользователь (режим 0600):
{
"currentContext": "production",
"contexts": {
"production": {
"name": "production",
"apiUrl": "https://status200.ru",
"apiKey": "<api-key>"
},
"staging": {
"name": "staging",
"apiUrl": "https://status200.example.com",
"apiKey": "<api-key>"
}
}
}Файл хранит API-ключи как есть: держите его вне общих папок, резервных копий и репозиториев. Чтобы выйти из одного контекста, удалите его командой status200 context delete <name>; чтобы выйти из всех, удалите файл. Ключ, который мог утечь, остаётся действительным, пока вы не удалите его в Status200, в Настройки проекта → Расширенный → Ключи API.
Форматы вывода и размеры списков здесь не сохраняются: передавайте -o и --limit каждой команде.
Устранение неполадок
Сообщение «No credentials found»
Authentication error: No credentials found. означает, что ни флаг, ни переменная окружения, ни сохранённый контекст не дали команде её API-ключ и URL. Запустите status200 login или задайте и STATUS200_API_KEY, и STATUS200_URL. Команда завершается с кодом 2.
Сообщение «API error (400): Invalid API Key»
Ключ не является API-ключом Status200, истёк или был сброшен. Скопируйте его снова со страницы ключа в Настройки проекта → Расширенный → Ключи API, где в поле Истекает указана и его дата, и войдите снова под тем же именем контекста. Команда завершается с кодом 2.
Сообщение «API error (402): API keys need the Growth plan»
В Status200 Cloud проект находится ниже плана Growth, поэтому его API-ключи перестали работать. Переведите проект на план выше, и тот же ключ снова заработает: в CLI ничего менять не нужно.
Сообщение «API error (422): You do not have permissions»
Права ключа не покрывают то, что запрашивает команда. Дайте ключу роль или право на его странице в Настройки проекта → Расширенный → Ключи API: сообщение называет права, которые пропустили бы запрос.
Сообщение «Context "staging" does not exist»
Контекст с таким именем не сохранён. status200 context list показывает имена, которые есть.
whoami показывает не тот URL или ключ, что в контексте
Переменная окружения или флаг заменяет значение контекста. env | grep ONEUPTIME показывает заданные переменные, а unset STATUS200_API_KEY STATUS200_URL возвращает вас к вашим контекстам.
Запрос к адресу не проходит
Error: Request failed to https://... означает, что CLI не смогла достучаться до Status200 по этому адресу. Проверьте URL командой status200 whoami: это адрес, по которому вы открываете Status200, с https://, например https://status200.ru.