Skip to main content

GitHub REST API のクイック スタート

GitHub REST API の使用を開始する方法について説明します。

はじめに

この記事では、GitHub、GitHub CLI、または JavaScript を使用して、curl REST API をすばやく使い始める方法について説明します。 さらに詳しいガイドについては、「REST API を使用した作業の開始」を参照してください。

コマンド ラインで GitHub CLI を使用する

GitHub CLI は、コマンド ラインから GitHub REST API を使用する最も簡単な方法です。

  1. macOS、Windows、または Linux に GitHub CLI をインストールします。 詳細については、GitHub CLI リポジトリ内でのインストールを参照してください。

  2. GitHub に対して認証を行うには、ターミナルから次のコマンドを実行します。

    gh auth login
    
  3. 認証を行う場所を選びます。

    • GitHub にある GitHub.com にアクセスする場合は、[GitHub.com] を選びます。
    • 別のドメインにある GitHub にアクセスする場合は、[Other] を選んでから、ホスト名を入力します (例: octocorp.ghe.com)。
  4. 画面上の残りのプロンプトに従います。

    GitHub CLI は、Git 操作の優先プロトコルとして HTTPS を選択すると自動的に Git 資格情報を格納し、GitHub 資格情報で Git に対して認証するかどうかを尋ねるプロンプトに対して "はい" と答えます。 これは、別の資格情報マネージャーを設定したり、SSH を使用したりすることなく、git pushgit pull などの Git コマンドを使用できるので便利です。

  5. GitHub CLI api サブコマンドを使用して要求を行い、その後にパスを続けます。 メソッドを指定するには、--method または -X フラグを使用します。 詳細については、 GitHub CLIapi ドキュメントを参照してください

    この例では、メソッド GET とパス /octocat を使用する "Get Octocat" エンドポイントに要求を行います。 このエンドポイントの完全なリファレンス ドキュメントについては、「メタデータ用 REST API エンドポイント」を参照してください。

    Shell
    gh api /octocat --method GET
    

GitHub CLIでGitHub Actionsを使用する

GitHub CLI ワークフローでGitHub Actionsを使用することもできます。 詳しくは、「ワークフローでの GitHub CLI の使用」をご覧ください。

アクセス トークンを使用した認証

gh auth login コマンドを使用するのでなく、アクセス トークンを GH_TOKEN という環境変数として渡します。 GitHub では、トークンを作成する代わりに組み込みの GITHUB_TOKEN を使用することをお勧めします。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN の詳細については、「ワークフローでの認証に GITHUB_TOKEN を使用する」を参照してください。 シークレットの詳細については、「GitHub Actions でのシークレットの使用」を参照してください。

次のワークフロー例では、リスト リポジトリの問題エンドポイントを使用し、指定したリポジトリoctocat/Spoon-Knife リポジトリの問題の一覧を要求します。

YAML
on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api https://api.github.com/repos/octocat/Spoon-Knife/issues

GitHub Appを使用した認証の実行

GitHub Appを使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成できます。

  1. GitHub Appのクライアント ID を構成変数として格納します。 以下の例で、APP_CLIENT_ID を構成変数の名前に置き換えます。 クライアント ID は、アプリの設定ページまたは API を使用して確認できます。 詳しくは、「GitHub Apps用 REST API エンドポイント」をご覧ください。 構成オプションの詳細については、「変数に情報を格納する」を参照してください。

  2. アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (-----BEGIN RSA PRIVATE KEY----- および -----END RSA PRIVATE KEY----- を含め、ファイルの内容全体を保存します)。以下の例では、APP_PRIVATE_KEY をシークレットの名前に置き換えます。 詳しくは、「GitHub アプリの秘密キーの管理」をご覧ください。 シークレットの詳細については、「GitHub Actions でのシークレットの使用」を参照してください。

  3. トークンを生成するステップを追加し、GITHUB_TOKEN ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 例:

    YAML
    on:
      workflow_dispatch:
    jobs:
      track_pr:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
          - name: Use API
            env:
              GH_TOKEN: ${{ steps.generate-token.outputs.token }}
            run: |
              gh api https://api.github.com/repos/octocat/Spoon-Knife/issues
    

Octokit.js の使用

Octokit.js を使用して、JavaScript スクリプト内の GitHub REST API と対話できます。 詳細については、「REST API と JavaScript を使用したスクリプト」を参照してください。

  1. アクセス トークンを作成します。 たとえば、 personal access token または GitHub App ユーザー アクセス トークンを作成します。 このトークンを使用して要求を認証するため、そのエンドポイントへのアクセスに必要なスコープまたはアクセス許可を付与する必要があります。 詳細については、「REST API に対する認証 または GitHub Apps のユーザーの識別と承認を参照してください。

    警告

    アクセス トークンは、パスワードと同様に扱います。

    トークンをセキュリティで保護するために、トークンをシークレットとして格納し、 GitHub Actionsを使用してスクリプトを実行できます。 詳細については、「GitHub Actionsの Octokit.js の使用」セクションを参照してください。

    トークンを Codespaces シークレットとして格納し、 Codespacesでスクリプトを実行することもできます。 詳細については、「Codespaces の暗号化されたシークレットを管理する」を参照してください。

    これらのオプションを使用できない場合は、別の CLI サービスを使用してトークンを安全に格納することを検討してください。

  2. octokitをインストールする。 たとえば、「 npm install octokit 」のように入力します。 octokit をインストールまたは読み込むための他の方法については、Octokit.js の README を参照してください。

  3. スクリプトで octokit をインポートします。 たとえば、「 import { Octokit } from "octokit"; 」のように入力します。 その他の octokit のインポート方法については、Octokit.js の README を参照してください。

  4. トークンを使用して Octokit のインスタンスを作成します。 YOUR-TOKEN を実際のトークンに置き換えます。

    JavaScript
    const octokit = new Octokit({ 
      auth: 'YOUR-TOKEN'
    });
    
  5. octokit.request を使用して、要求を実行します。 HTTP メソッドとパスを最初の引数として送信します。 オブジェクト内のパス、クエリ、および本文のパラメーターを 2 番目の引数として指定します。 パラメーターの詳細については、「REST API を使用した作業の開始」を参照してください。

    たとえば、次の要求では、HTTP メソッドが GETされ、パスが /repos/{owner}/{repo}/issuesされ、パラメーターが owner: "octocat" され、 repo: "Spoon-Knife"されます。

    JavaScript
    await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });
    

GitHub Actions で Octokit.js を使う

GitHub Actions ワークフローで JavaScript スクリプトを実行することもできます。 詳しくは、「GitHub Actions のワークフロー構文」をご覧ください。

アクセス トークンを使用した認証

GitHub では、トークンを作成する代わりに組み込みの GITHUB_TOKEN を使用することをお勧めします。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN の詳細については、「ワークフローでの認証に GITHUB_TOKEN を使用する」を参照してください。 シークレットの詳細については、「GitHub Actions でのシークレットの使用」を参照してください。

次のワークフロー例を参照してください。

  1. リポジトリのコンテンツをチェックアウトする
  2. Node.js を設定する
  3. octokit をインストールする
  4. GITHUB_TOKEN の値を、TOKEN と呼ばれる環境変数として格納し、.github/actions-scripts/use-the-api.mjs を実行する。これにより、その環境変数に process.env.TOKEN としてアクセスできます。
on:
  workflow_dispatch:
jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - name: Check out repo content
        uses: actions/checkout@v6

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '16.17.0'
          cache: npm

      - name: Install dependencies
        run: npm install octokit

      - name: Run script
        run: |
          node .github/actions-scripts/use-the-api.mjs
        env:
          TOKEN: ${{ secrets.GITHUB_TOKEN }}

ファイル パスが .github/actions-scripts/use-the-api.mjsされた JavaScript スクリプトの例を次に示します。

import { Octokit } from "octokit"

const octokit = new Octokit({ 
  auth: process.env.TOKEN
});

try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });

  const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})

  console.log(titleAndAuthor)

} catch (error) {
  console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}

GitHub Appを使用した認証の実行

GitHub Appを使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成できます。

  1. GitHub Appのクライアント ID を構成変数として格納します。 以下の例で、APP_CLIENT_ID を構成変数の名前に置き換えます。 クライアント ID は、アプリの設定ページまたは App API を使用して確認できます。 詳しくは、「GitHub Apps用 REST API エンドポイント」をご覧ください。 構成オプションの詳細については、「変数に情報を格納する」を参照してください。

  2. アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (-----BEGIN RSA PRIVATE KEY----- および -----END RSA PRIVATE KEY----- を含め、ファイルの内容全体を保存します)。以下の例では、APP_PRIVATE_KEY をシークレットの名前に置き換えます。 詳しくは、「GitHub アプリの秘密キーの管理」をご覧ください。 シークレットの詳細については、「GitHub Actions でのシークレットの使用」を参照してください。

  3. トークンを生成するステップを追加し、GITHUB_TOKEN ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 次に例を示します。

    on:
      workflow_dispatch:
    jobs:
      use_api_via_script:
        runs-on: ubuntu-latest
        steps:
          - name: Check out repo content
            uses: actions/checkout@v6
    
          - name: Setup Node
            uses: actions/setup-node@v4
            with:
              node-version: '16.17.0'
              cache: npm
    
          - name: Install dependencies
            run: npm install octokit
    
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
    
          - name: Run script
            run: |
              node .github/actions-scripts/use-the-api.mjs
            env:
              TOKEN: ${{ steps.generate-token.outputs.token }}
    
    

コマンド ラインで curl を使用する

メモ

コマンド ラインから API 要求を行う場合は、GitHubGitHub CLIを使用することをお勧めします。これにより、認証と要求が簡略化されます。 GitHub CLI を使用して REST API の利用を開始する方法の詳細については、この記事の GitHub CLI バージョンを参照してください。

  1. curl がまだコンピューターにインストールされていない場合は、インストールします。 curl がインストールされているかどうかを確認するには、コマンド ラインで curl --version を実行します。 出力が curl のバージョンに関する情報であれば、curl がインストールされているということです。 command not found: curl のようなメッセージが表示された場合は、curl をダウンロードしてインストールする必要があります。 詳しくは、curl プロジェクトのダウンロードに関するページを参照してください。

  2. アクセス トークンを作成します。 たとえば、 personal access token または GitHub App ユーザー アクセス トークンを作成します。 このトークンを使用して要求を認証するため、エンドポイントへのアクセスに必要なスコープまたはアクセス許可を付与する必要があります。 詳しくは、「REST API に対する認証」をご覧ください。

    警告

    アクセス トークンは、パスワードと同様に扱います。

    トークンをセキュリティで保護するために、トークンを Codespaces シークレットとして格納し、 Codespacesを介してコマンド ラインを使用できます。 詳細については、「Codespaces の暗号化されたシークレットを管理する」を参照してください。

    GitHub CLI の代わりに curl を使用することもできます。 GitHub CLI が自動的に認証を行います。 詳細については、このページの GitHub CLI バージョンを参照してください。

    これらのオプションを使用できない場合は、別の CLI サービスを使用してトークンを安全に格納することを検討してください。

  3. curl コマンドを使用して要求を行います。 Authorization ヘッダーにトークンを渡します。

YOUR-TOKEN を実際のトークンに置き換えます。

Shell
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"

メモ

ほとんどの場合は、Authorization: Bearer または Authorization: token を使用してトークンを渡すことができます。 ただし、JSON Web トークン (JWT) を渡す場合は、Authorization: Bearer を使用する必要があります。

GitHub Actions で curl コマンドを使用する

curl ワークフローでGitHub Actionsコマンドを使用することもできます。

アクセス トークンを使用した認証

GitHub では、トークンを作成する代わりに組み込みの GITHUB_TOKEN を使用することをお勧めします。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN の詳細については、「ワークフローでの認証に GITHUB_TOKEN を使用する」を参照してください。 シークレットの詳細については、「GitHub Actions でのシークレットの使用」を参照してください。

YAML
on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          curl --request GET \
          --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
          --header "Accept: application/vnd.github+json" \
          --header "Authorization: Bearer $GH_TOKEN"

GitHub Appを使用した認証の実行

GitHub Appを使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成できます。

  1. GitHub Appのクライアント ID を構成変数として格納します。 以下の例で、APP_CLIENT_ID を構成変数の名前に置き換えます。 クライアント ID は、アプリの設定ページまたは App API を使用して確認できます。 詳しくは、「GitHub Apps用 REST API エンドポイント」をご覧ください。 構成オプションの詳細については、「変数に情報を格納する」を参照してください。

  2. アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (-----BEGIN RSA PRIVATE KEY----- および -----END RSA PRIVATE KEY----- を含め、ファイルの内容全体を保存します)。以下の例では、APP_PRIVATE_KEY をシークレットの名前に置き換えます。 詳しくは、「GitHub アプリの秘密キーの管理」をご覧ください。 シークレットの保管の詳細については、「GitHub Actions でのシークレットの使用」を参照してください。

  3. トークンを生成するステップを追加し、GITHUB_TOKEN ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 例:

    YAML
    on:
      workflow_dispatch:
    jobs:
      use_api:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
    
          - name: Use API
            env:
              GH_TOKEN: ${{ steps.generate-token.outputs.token }}
            run: |
              curl --request GET \
              --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
              --header "Accept: application/vnd.github+json" \
              --header "Authorization: Bearer $GH_TOKEN"
    
    

次のステップ

詳しいガイドについては、「REST API の概要」を参照してください。