🪐

GitHub Project を操作する上で利用できる GitHub API と必要なトークン

2024/04/28に公開

GitHubには、プロジェクトやタスクの管理ができる project という機能があります。

この project をGitHubのAPIで自動化しようとした際、APIの仕様や必要なトークンの選択に苦労しました。

本記事では project を操作する上で必要となるAPIとトークンについてまとめています。

利用できる GitHub API と必要なトークン(表)

利用できるトークンと GitHub API を簡単に表にまとめたものがこちらです。

project (v1) project (v2)
GitHub API v3 (REST API) / v4 (GraphQL) v4 (GraphQL)
GITHUB_TOKEN o x
GitHub Apps Token o △(organizaiton)
PAT (classic) o o

project の種類には、旧型の classic project (以降v1) と通常の project (以降v2)があります。

また、project はアクセスレベルの選択ができます。
個人のみの利用な場合は user project、チームや組織で利用する場合は organization projectになります。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/managing-your-project/managing-access-to-your-projects

project の種類とアクセスレベルによって、APIやトークンが異なるのがややこしいポイントです。

ポイント

project (v2) は GitHub API v4 (GraphQL) からしか操作できない

GitHub API には、バージョンによって v3 (REST API) と v4 (GraphQL) の2つがあります。
これらは互換性があるわけではなく、v4 からしか提供されていないAPIがあります。

今回の project(v2) API は v4 からしか提供されていません。

これらのエンドポイントを使って操作されるのは、projects (classic) のみです。 Projects を管理するには、GraphQL API を使います。
Projects (classic)用 REST API エンドポイント

v4 であれば、project(v1)とproject(v2)の両方ともカバーしているので、そちらを使うのが良さそうです。

GitHub Apps Token で操作できるのは organization project(v2) のみ

アクセスレベルによって、使えるトークンが異なるものややこしいポイントです。
GitHub Apps Token のスコープでは organization project しかアクセスできません。

GITHUB_TOKEN はリポジトリレベルをスコープとしており、projects にはアクセスできません。 projects にアクセスするために、GitHub App (Organization プロジェクトの場合に推奨) または personal access token (ユーザー プロジェクトの場合に推奨) を作成できます。
Actions を使用した Projects の自動化: GitHub Actionsのワークフロー

user project でも利用できたら嬉しいのですが、現在(2024/4)では PAT(もしくは GitHub OAuth App)などの個人の権限を渡すトークンを利用するしかないようです。

github community の disscussions でも言及されていました。

GitHub support confirmed that GitHub Apps cannot access user-level V2 Projects (!!). The only way is to use a PAT or authorize through a GitHub OAuth App.
https://github.com/orgs/community/discussions/46681#discussioncomment-8774842

まとめ

GitHub Project を自動化したいと思い API を触り始めたのですが、トークンの種類ごとのスコープや API のバージョンでできることが異なっていたため、意外と時間がかかりました。

  • GitHub API のバージョン (v3/v4) ごとのエンドポイントの仕様を確認する
  • トークンの種類とそれぞれのスコープを整理する

この辺りを整理しながらドキュメントを参照することで、必要な情報を素早くキャッチできるのではと思いました。

Discussion