16 — Работа с API
Почти всё, что можно сделать в интерфейсе, доступно и по HTTP: резервные копии, отчёты, собственные инструменты.
Аутентификация
Создайте токен доступа (глава 10) и передавайте его заголовком в каждом запросе:
TOKEN=ваш-токен
curl -H "Authorization: token $TOKEN" \
https://forge.kabaforce.com/api/v1/user
Токен ограничен правами, выбранными при создании: для задачи «только чтение» не выдавайте право записи.
Часто используемые точки
Базовый адрес: https://forge.kabaforce.com/api/v1
| Точка | Что возвращает |
|---|---|
/user | Учётную запись — владельца токена |
/user/repos?limit=50 | Доступные репозитории |
/repos/search?q=слово | Поиск репозиториев |
/repos/{owner}/{repo} | Карточку репозитория |
/repos/{owner}/{repo}/contents/{путь} | Содержимое файла или каталога |
/repos/{owner}/{repo}/branches | Ветки |
/repos/{owner}/{repo}/commits?limit=10 | Последние коммиты |
/repos/{owner}/{repo}/issues?state=open | Открытые задачи |
/repos/{owner}/{repo}/releases · /tags | Выпуски и теги |
Списки постраничные: ?page=2&limit=50.
Чтение файла
curl -H "Authorization: token $TOKEN" \
"https://forge.kabaforce.com/api/v1/repos/owner/project/contents/docs"
Поле content приходит в base64; проще запросить сырой файл:
curl -H "Authorization: token $TOKEN" \
https://forge.kabaforce.com/owner/project/raw/branch/main/readme.md
Создание и обновление файлов
curl -X POST -H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d '{"content":"aGVsbG8=","message":"добавить заметку","branch":"main"}' \
https://forge.kabaforce.com/api/v1/repos/owner/project/contents/notes.md
content — base64. Для обновления существующего файла используйте PUT и передайте текущий sha файла — именно это не даёт молча затереть чужие правки.
Создание задачи
curl -X POST -H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"страница входа съезжает на телефоне","body":"Шаги: ..."}' \
https://forge.kabaforce.com/api/v1/repos/owner/project/issues
Коды ошибок
| Код | Значение |
|---|---|
| 401 | Токена нет, он неверен или истёк |
| 403 | Токен верный, но прав на это действие нет |
| 404 | Неверный путь — либо приватный репозиторий без доступа |
| 409 | Конфликт: при обновлении отправлен устаревший sha |
| 422 | Некорректное тело (например, задача без заголовка) |
Правила
- Не вписывайте токен в скрипт — читайте его из переменной окружения.
- Для автоматизации заводите отдельный узкий токен, а не свой общий.
- Если задача только читает, подумайте о ключе развёртывания (глава 13).