まくろぐ

GitHub GraphQL クエリ例: 組織の情報を取得する (organization)

更新:
作成:

GitHub GraphQL API で指定した組織の情報を(ここでは github organization)の情報を取得には、organization クエリ を使用します。 organization クエリには、login パラメーターで組織名を渡します。

organization クエリが返す Organization オブジェクト を参照すると、そこに所属する メンバーの一覧チームの一覧リポジトリの一覧 などを取得することができます。

ある組織に所属するユーザー情報を取得する (Organization.membersWithRole)

Organization オブジェクトの membersWithRole フィールドは OrganizationMemberConnection オブジェクトを保持しており、この nodes を参照することで、組織に所属するメンバーの一覧を取得できます。

GraphQL クエリ
query {
  organization(login: "github") {
    name
    description
    url
    membersWithRole(first: 3) {
      nodes {
        name
        email
        updatedAt
      }
    }
  }
}
実行結果
{
  "data": {
    "organization": {
      "name": "GitHub",
      "description": "How people build software.",
      "url": "https://github.com/github",
      "membersWithRole": {
        "nodes": [
          {
            "name": "Josh Nichols",
            "email": "technicalpickles@github.com",
            "updatedAt": "2020-09-09T11:22:35Z"
          },
          {
            "name": "Matt Todd",
            "email": "matt@github.com",
            "updatedAt": "2020-09-02T21:54:56Z"
          },
          {
            "name": "Pat Nakajima",
            "email": "patnakajima@gmail.com",
            "updatedAt": "2020-09-04T21:45:37Z"
          }
        ]
      }
    }
  }
}

ある組織のリポジトリの一覧を取得する (Organization.repositories)

Organization オブジェクトの repositories フィールドを参照することで、その組織に作成されたリポジトリの一覧を取得することができます。

GraphQL クエリ
query {
  organization(login: "github") {
    name
    description
    url
    repositories(first: 3) {
      nodes {
        name
        url
      }
    }
  }
}
実行結果
{
  "data": {
    "organization": {
      "name": "GitHub",
      "description": "How people build software.",
      "url": "https://github.com/github",
      "repositories": {
        "nodes": [
          {
            "name": "media",
            "url": "https://github.com/github/media"
          },
          {
            "name": "albino",
            "url": "https://github.com/github/albino"
          },
          {
            "name": "hubahuba",
            "url": "https://github.com/github/hubahuba"
          }
        ]
      }
    }
  }
}

取得される各リポジトリの情報は、Repository オブジェクト として表現されています。

ここでは、組織内のリポジトリのリストを取得する方法を示しましたが、組織名(ユーザー名)とリポジトリ名があらかじめ分かっている場合は、repository クエリを使って、直接そのリポジトリの情報を取得することができます。

関連記事

まくろぐ
サイトマップまくへのメッセージ