GitLab:グループのプロジェクトの一覧が 404「Group Not Found」になる
グループのプロジェクトは GET /groups/:id/projects から取ります。:id はグループの番号か、フルパスです。GitLab はグループを探し、次にあなたのアカウントがそれを見てよいかを確かめます。どちらで失敗しても同じ答えなので、無いグループと見えないグループは見分けられません。以下はすべて、GitLab のソース(lib/api/groups.rb・lib/api/helpers.rb・lib/gitlab/resource_lookup.rb・app/policies/group_policy.rb)と公式の文書、GitLab.com の答えで 2026年10月24日に確かめたものです。
HTTP/1.1 404 Not Found
{"message":"404 Group Not Found"}
「404 Group Not Found」になるとき
- そのパスか番号のグループが無い:打ち間違いか、名前は合っていても親のグループが違う。
- あなたのアカウントにはそのグループが見えない。公開のグループはだれにでも、内部のグループは外部ユーザー以外のサインインした人に、非公開のグループはそのメンバーと、その中のどれかのプロジェクトのメンバーに見えます。トークンが無ければ匿名なので、内部や非公開のグループは 401 ではなく 404 です。
- ユーザーの個人の名前空間(
gitlab.com/名前/プロジェクトの名前)。グループの API が探すのはグループだけです。そのユーザーのプロジェクトはGET /users/:id/projectsから取ります。 - グループの名前を変えたか、移した。GitLab の API は、プロジェクトと違って、グループを古いパスでは探しません。プロジェクトの古いパスはまだ読めますが(番号への 301)、グループの古いパスは 404 Group Not Found です。Web のページと Git のリモートは、古いパスをだれも取っていない間は転送されるので、名前を変える前の clone は、リモートに古いグループのまま動き続けます。
代わりに「404 Not Found」になるとき
サブグループのパスには / があり、API ではこれを %2F にします(/groups/parent%2Fchild/projects)。そのまま送ると、どのエンドポイントにも当たらず、GitLab は Group の語の無い {"error":"404 Not Found"} で答えます。GitLab の前に %2F を戻してしまうプロキシがあっても同じです。
ほかの答え
- 401
invalid_token:トークンは送ったが、期限切れ・取り消し済み・知らないトークン(トークンに何が起きたかへ)。 - 403
insufficient_scope:トークンにread_apiもapiも無い(足す権限の見つけ方へ)。 - 429
This endpoint has been requested too many times. Try again later.(和訳:このエンドポイントへの要求が多すぎます。あとでもう一度試してください。Retry-Afterのヘッダーつき):このエンドポイントの上限です。ユーザーごとに、トークンが無ければ IP アドレスごとに数えます。GitLab Self-Managed と Dedicated(18.1 以降)では既定で1分に600回です。18.0 以降に上げたインスタンスは 0(上限なし)から始まります。管理者は Admin の Settings、Network、Groups API rate limits で変えます。
200 なのにプロジェクトが欠けるとき
- サブグループのプロジェクトは、
include_subgroups=trueを付けないと入りません。 - ほかのグループからこのグループに共有されたプロジェクトは、
with_shared=falseを付けない限り入ります。 - 入るのは、あなたのアカウントに見えるプロジェクトだけです。トークンが無ければ公開のものだけで、項目も少なくなります。
- 1ページは既定で20件、多くて100件(
per_page)です。残りは次のページにあります。
直し方
- トークンのアカウントでサインインして、ブラウザでグループのページを開く。見えるなら、パスを確かめるか、
/を%2Fにして送るか、グループの番号を使う。 - ブラウザが別の住所に移ったら、グループの名前が変わっています。新しいパスを使い、リモートも
git remote set-urlで直す。 - 住所がユーザーのものなら、
GET /users/:id/projectsでそのユーザーのプロジェクトを取る。 - ページが見えないなら、グループのメンバーにアクセスを頼むか、アクセスのあるアカウントのトークンを使う。
- 429:
Retry-Afterの秒数だけ待ってから、もう一度聞く。
IntelliJ IDEA で GitLab のグループのパイプラインを見るなら
Lesstep の Pipeline Inbox for GitLab CI は、JetBrains IDE(2024.1 以降)のプラグインです。IDE のプロジェクトにある GitLab のプロジェクトのパイプラインを一覧にします。「Their groups」では、そのグループ(サブグループも含む)の最近動きのあったプロジェクトのパイプラインを一覧にします。サブグループのパスは符号にして送ります。個人の名前空間のプロジェクトには、グループの一覧が無いので、そのプロジェクト自身を出します。1.0.18 からは、clone の後にグループの名前が変わったか、プロジェクトがほかのグループに移ったときに、新しい名前のグループを一覧にします。それまでは、そのプロジェクト1つだけを出していました。GitLab の上限に達したときは1分待つように言い(1.0.21 からは、GitLab がそれより長く待つように言うときはその時刻を言い)、トークンが無ければ、個人のアクセストークンを足せることも言います(見るのは無料のままです)。見るのは無料、再実行・取り消し・実行は Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GITLAB は GitLab Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitLab Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:GitLab の 404「Project Not Found」 · GitLab の「insufficient_scope」 · GitLab の 401「invalid_token」 · GitLab のパイプラインやジョブの断り(400・403・409・429) · GitLab のジョブのログの断り(403・404) · JetBrains の IDE で GitLab のパイプラインを見る · English