Files
tgit/docs/dev/SOURCECRAFT_API.md
T

3.2 KiB
Raw Blame History

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}'