🪐

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

に公開

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