GitHub 連携
これらのエンドポイントは GitHub 連携の裏側です。GitHub の Issue から
作業を記録する、リポジトリをプロジェクトに対応付ける、インスタンスの GitHub App を設定する、の 3 つを
担います。ユーザー単位のアカウント接続(/me/github)はアカウントの
ページにあります。
GitHub の Issue から作業を記録する
Section titled “GitHub の Issue から作業を記録する”POST /api/v1/github/log-work scope: write
git リモートしか知らないクライアントのために、GitHub の Issue に対して作業エントリを記録します。
サーバーがリモートを正規化し、リポジトリ→プロジェクトの対応付けを解決し、呼び出し元のタイムゾーンで
時間/日付を解析し、Issue のタイトルとラベルで補完し、その Issue を指す最近のエージェントセッションを
紐づけます。ingest 経路のレート制限があります。どのリモートも対応付け済みの github.com リポジトリで
ない場合は、ヘルプメッセージとともに 404 を返します。
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
remotes |
string[] | はい | git リモートの fetch URL をそのまま(1〜10)。最初に対応付くものが採用されます。 |
issueNumber |
integer | はい | Issue(またはプルリクエスト)番号。 |
args |
string | はい | 入力どおりの <duration> [date] 文字列(200 文字以下)。 |
201 Created を返します。degraded が true のときは App に到達できず、エントリは Issue への素の
参照のみ(タイトルやラベルなし)を持ちます。entry は完全な
作業エントリです。
リポジトリの対応付け
Section titled “リポジトリの対応付け”対応付けは「このリポジトリから記録した作業はこのプロジェクトに属する」という意味です。リポジトリの フルネームはインスタンス全体で一意です。コレクションはワークスペースの下にネストされます。
対応付けの一覧
Section titled “対応付けの一覧”GET /api/v1/workspaces/:id/github-mappings scope: read
任意のワークスペースメンバー。ワークスペースの対応付けを返します。
source は、App がリポジトリをカバーしている場合は installation、手入力の対応付けは manual です。
対応付けの作成
Section titled “対応付けの作成”POST /api/v1/workspaces/:id/github-mappings scope: admin
ワークスペース管理者。リポジトリをこのワークスペースのプロジェクトに対応付けます。App なしでも動作し
(manual の対応付けを記録)、App があればリポジトリ id とインストールがサーバー側で解決されます。
すでにどこかに対応付け済みのリポジトリは 409 conflict、ワークスペース外のプロジェクトは 400 を
返します。
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
repoFullName |
string | はい | owner/repo(大文字小文字を区別しません)。 |
projectId |
string | はい | 対応付ける、このワークスペースのプロジェクト。 |
201 Created と、作成された対応付け(一覧の行と同じ形)を返します。
対応付けの削除
Section titled “対応付けの削除”DELETE /api/v1/workspaces/:id/github-mappings/:mappingId scope: admin
ワークスペース管理者。対応付けを削除します。204 No Content を返します。
未対応付けのリポジトリ
Section titled “未対応付けのリポジトリ”GET /api/v1/workspaces/:id/github-mappings/unmapped-repos scope: admin
ワークスペース管理者。App のインストールがカバーしていて、まだ誰も対応付けていないリポジトリ — ピッカーの
ソースです。GitHub からライブで読み取り、App が無ければ空({ "repos": [] })です。
GitHub App
Section titled “GitHub App”各インスタンスは自前の GitHub App を登録します。これらのエンドポイントはその App を報告・管理します。 秘匿情報はサーバーから出ず、表示用データとトグルだけが返ります。
App の有効状態
Section titled “App の有効状態”GET /api/v1/instance/github/enabled 要認証
サインイン済みの任意のユーザー。「GitHub を接続」カードのゲートです。{ "enabled": true } を返します。
App 設定の取得
Section titled “App 設定の取得”GET /api/v1/instance/github scope: admin
インスタンス管理者。App の表示用フィールドとインストールを返します。
App が未登録のとき app は null です。
App の登録
Section titled “App の登録”POST /api/v1/instance/github/app/manifest scope: admin
インスタンス管理者。GitHub の
App マニフェストフロー
を開始します。GitHub のフォーム送信先と、SPA が GitHub に POST するマニフェスト JSON を返し、フローを
呼び出し元のブラウザに紐づけます。その後 GitHub が /api/github/setup にコールバックし、App の認証情報が
暗号化して保存されます。コピー&ペーストは不要です。
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
owner |
string | null | はい | App を登録する組織のログイン名。呼び出し元の個人アカウントに登録する場合は null。 |
App の削除
Section titled “App の削除”DELETE /api/v1/instance/github/app scope: admin
インスタンス管理者。App 設定を削除します。対応付けは残るため、#N の作業記録はリンクのみの縮退モードで
動き続けます。204 No Content を返します。
インストールのリポジトリ一覧
Section titled “インストールのリポジトリ一覧”GET /api/v1/instance/github/installations/:installationId/repos scope: admin
インスタンス管理者。GitHub からライブで読み取り — 指定インストールが到達できるリポジトリです。
アカウント接続
Section titled “アカウント接続”自分の GitHub アカウントを接続する(コメントを自分として作業記録にする)のはユーザー単位の操作です — アカウントページの GitHub 接続を参照してください。