Refs #1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
SourceCraft API — шпаргалка
Справочник: методы · интерактивный · swagger.json
set -a; . ./.env; set +a # SOURCECRAFT_TOKEN
R=https://api.sourcecraft.tech/repos/rogachevegorushka/tgit
H="Authorization: Bearer $SOURCECRAFT_TOKEN"
alias curl='curl --retry 4 --retry-all-errors --retry-delay 2'
J="Content-Type: application/json"
В CI вместо личного токена — предопределённая переменная
SOURCECRAFT_TOKEN.
Подводные камни
- Соединение с
api.sourcecraft.techиногда рвётся (curl: (35), пустой ответ) — отсюда--retry. Перед повторным POST проверить, не создалась ли сущность. colorу метки — hex без#("ff7f0e"), иначе400 ValidationError.- Ответы-списки кладут элементы в разные ключи:
/issues→issues,/labelsрепо →items, метки issue →labels. - Issue адресуется номером (
issues/1), метка — slug'ом (size/0.5→size-0-5). - Тело issue — поле
description(неbody); тело комментария —body. - Длинный markdown удобнее собрать в JSON-файл и передать
--data @file.json.
Issues
# список / одна
curl -s -H "$H" "$R/issues"
curl -s -H "$H" "$R/issues/1"
# создать (status_slug: open | inProgress | paused | closed | declined | duplicate)
curl -s -X POST -H "$H" -H "$J" "$R/issues" --data @issue.json
# issue.json: {"title": "...", "description": "...", "label_slugs": ["bot","feature","size-1"], "status_slug": "open"}
# обновить (описание, статус, исполнитель)
curl -s -X PATCH -H "$H" -H "$J" "$R/issues/1" -d '{"status_slug":"closed"}'
# комментарий
curl -s -X POST -H "$H" -H "$J" "$R/issues/1/comments" -d '{"body":"текст"}'
# метки issue: POST — добавить, PUT — заменить, DELETE — убрать
curl -s -X POST -H "$H" -H "$J" "$R/issues/1/labels" -d '{"slugs":["ci"]}'
# связь между issue
curl -s -X POST -H "$H" -H "$J" "$R/issues/2/issue_links" --data @link.json
Метки репозитория
curl -s -H "$H" "$R/labels"
curl -s -X POST -H "$H" -H "$J" "$R/labels" -d '{"name":"size/1","slug":"size-1","color":"a0a0a0"}'
Заведены: зоны bot ci infra llm docs · типы feature fix refactor · размеры size/0.5 size/1 size/2.
Pull requests
# создать PR в dev
curl -s -X POST -H "$H" -H "$J" "$R/pulls" --data @pr.json
# pr.json: {"title": "...", "description": "...", "source_branch": "feat/2-x", "target_branch": "dev", "publish": true}
curl -s -H "$H" "$R/pulls/1"
curl -s -H "$H" "$R/pulls/1/merge-checks"
# мерж (rebase | squash, delete_branch)
curl -s -X POST -H "$H" -H "$J" "$R/pulls/1/merge" -d '{"delete_branch": true}'