Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2023-01-18. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせく� さい

REST API を使用した作業の開始

GitHub REST API の使用方法について学習します。

GitHub REST API について

この記事では、GitHub CLI、JavaScript、または cURL を使う GitHub REST API の使用方法について説明します。 クイックスタート ガイドについては、「GitHub REST API のクイックスタート」を参照してく� さい。

REST API への要求を行うときは、HTTP メソッドとパスを指定します。 さらに、要求ヘッダーとパス、クエリ、または本文のパラメーターを指定することもできます。 API では、応答状態コードと応答ヘッダー、また� �合によっては応答本文が返されます。

REST API リファレンス ドキュメントでは、すべての操作の HTTP メソッド、パス、およびパラメーターについて説明します。 また、各操作の要求と応答の例も表示されます。 詳しくは、REST のリファレンス ドキュメントをご覧く� さい。

GitHub の API について詳しくは、「GitHub の API について」を参照してく� さい。

要求を行う

要求を行うには、まず HTTP メソッドと、使用する操作のパスを見つけます。 たとえば、"Octocat の取得" 操作では、GET メソッドと /octocat パスが使用されます。 この操作の完全なリファレンス ドキュメントについては、「Octocat の取得」を参照してく� さい。

: GitHub CLI の例のコマンドを使用するには、GitHub CLI をインストールする必要があります。 インストールの手� �については、GitHub CLI リポジトリを参照してく� さい。

ま�  GitHub CLI に対して認証されていない� �合は、要求を行う前に gh auth login サブコマンドを使用して認証する必要があります。 詳しくは、「認証」を参照してく� さい。

GitHub CLI を使用して要求を行うには、パスと共に api サブコマンドを使用します。 メソッドを指定するには、--method または -X フラグを使用します。

gh api /octocat --method GET

: JavaScript の例で使用されている Octokit.js ライブラリを使うには、octokit をインストールしてインポートする必要があります。 詳しくは、Octokit.js の README を参照してく� さい。

JavaScript を使用して要求を行うために、Octokit.js を使用できます。 詳しくは、Octokit.js の README を参照してく� さい。

まず、Octokit のインスタンスを作成します。ベース URL を http(s)://HOSTNAME/api/v3 に設定します。 [hostname] を your GitHub Enterprise Server instanceの名前に置き換えます。

const octokit = new Octokit({ 
  baseUrl: "http(s)://HOSTNAME/api/v3",
});

その後、request メソッドを使用して要求を行います。 HTTP メソッドとパスを最初の引数として渡します。

await octokit.request("GET /octocat", {});

パスの前に GitHub REST API のベース URL http(s)://HOSTNAME/api/v3 を付� し、完全な URL (http(s)://HOSTNAME/api/v3/octocat) を取得します。[hostname] は、your GitHub Enterprise Server instance の名前に置き換えます。

コマンド ラインで curl コマンドを使用します。 --request または -X フラグを使用し、その後に HTTP メソッドを指定します。 --url フラグを使用し、その後に完全な URL を指定します。

curl --request GET \
--url "https://api.github.com/octocat"

: "コマンドが見つかりません: curl" のようなメッセージが表示される� �合は、cURL をダウンロードしてインストールする必要があることがあります。 詳しくは、cURL プロジェクトのダウンロード ページを参照してく� さい。

認証、パラメーターの送信、応答の使用方法について学習する� �合は、引き続きお読みく� さい。

認証

多くの操作では、認証が必要であるか、認証されている� �合は追� 情� �が返されます。 また、認証されると、1 時間あたりにさらに多くの要求を行うことができます。

一部の REST API 操作には認証なしでアクセスできますが、api サブコマンドを使用するには、GitHub CLI に対して認証を行う必要があります。

トークンについて

トークンを追� することで、要求を認証できます。

個人用に GitHub REST API を使用する� �合は、personal access tokenを作成できます。 この記事で使用する REST API 操作には、personal access tokens。 その他の操作には、異なるスコープ。 personal access tokenの作成について詳しくは、「personal access tokenの作成」をご覧く� さい。

Organization または他のユーザーの代わりに API を使用する� �合、GitHub では、GitHub App の使用が推奨されます。 操作が GitHub Apps で使用できる� �合、その操作の REST リファレンス ドキュメントには "GitHub Apps で動作する" と示されます。 この記事で使用される REST API 操作には、GitHub Apps の issues の読み取りおよび書き込みアクセス許可が必要です。 その他の操作では、異なるアクセス許可が必要な� �合があります。 詳しくは、「GitHub App を作成する」、「GitHub Apps による認証」、「GitHub アプリのユーザーを特定および認可する」を参照してく� さい。

GitHub Actions ワークフローで API を使用する� �合、GitHub では、トークンを作成するのではなく、組み込み GITHUB_TOKEN で認証することが推奨されます。 permissions キーを使用して、GITHUB_TOKEN へのアクセス許可を付与できます。 詳しくは、「自動トークン認証」を参照してく� さい。

認証の例

GitHub CLI では、アクセス トークンを事前に作成する必要はありません。 auth login サブコマンドを使用して、GitHub CLI に対する認証を行います。

gh auth login

--scopes フラグを使用して、必要なスコープを指定できます。 作成したトークンで認証する� �合は、--with-token フラグを使用できます。 詳しくは、GitHub CLI auth login ドキュメントを参照してく� さい。

警告: アクセス トークンは、パスワードと同様の扱いとしてく� さい。

トークンを安全な状態に保つために、トークンをシークレットとして� �納し、GitHub Actions を使用してスクリプトを実行できます。 詳細については、「暗号化されたシークレット」を参照してく� さい。

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

Octokit.js ライブラリで認証するには、Octokit のインスタンスの作成時にトークンを渡すことができます。 YOUR-TOKEN をお使いのトークンに置き換えます。[hostname] をお使いの your GitHub Enterprise Server instanceの名前に置き換えます。

const octokit = new Octokit({ 
  baseUrl: "http(s)://HOSTNAME/api/v3",
  auth: 'YOUR-TOKEN',
});

警告: アクセス トークンはパスワードと同様に扱ってく� さい。

アカウントを安全な状態に保てるように、cURL の代わりに GitHub CLI を使用できます。 GitHub CLI で自動的に認証が行われます。 詳しくは、このページの GitHub CLI バージョンを参照してく� さい。

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

cURL では、トークンを含む Authorization ヘッダーを送信します。 YOUR-TOKEN は実際のトークンに置き換えてく� さい。

curl --request GET \
--url "https://api.github.com/octocat" \
--header "Authorization: Bearer YOUR-TOKEN"

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

GitHub Actions の認証例

run キーワードを使用して、GitHub Actions ワークフローで GitHub CLI コマンドを実行することもできます。 詳細については、「GitHub Actions のワークフロー構文」を参照してく� さい。

gh auth login コマンドを使用するのでなく、トークンを GH_TOKEN という環境変数として渡します。 GitHub では、トークンを作成するのではなく、組み込みの GITHUB_TOKEN で認証することが推奨されます。 これができない� �合は、ご利用のトークンをシークレットとして� �納し、次の例で GITHUB_TOKEN を自分のシークレットの名前に置き換えます。 GITHUB_TOKEN について詳しくは、「自動トークン認証」を参照してく� さい。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してく� さい。

jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions: {}
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api /octocat

run キーワードを使用して、GitHub Actions ワークフローで JavaScript スクリプトを実行することもできます。 詳細については、「GitHub Actions のワークフロー構文」を参照してく� さい。

GitHub では、トークンを作成するのではなく、組み込みの GITHUB_TOKEN で認証することが推奨されます。 これができない� �合は、ご利用のトークンをシークレットとして� �納し、次の例で GITHUB_TOKEN を自分のシークレットの名前に置き換えます。 GITHUB_TOKEN について詳しくは、「自動トークン認証」を参照してく� さい。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してく� さい。

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

  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: {}
    steps:
      - name: Check out repo content
        uses: actions/checkout@v2

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

      - name: Install dependencies
        run: npm install octokit

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

ファイル パス .github/actions-scripts/use-the-api.mjs を含む JavaScript スクリプトの例:

import { Octokit } from "octokit";

const octokit = new Octokit({ 
  baseUrl: "http(s)://HOSTNAME/api/v3",
  auth: process.env.TOKEN,
});

await octokit.request("GET /octocat", {});

スクリプトを別のファイルに� �納し、ワークフローからスクリプトを実行するのではなく、actions/github-script アクションを使用してスクリプトを実行できます。 詳しくは、actions/github-script README をご覧く� さい。

jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    permissions: {}
    steps:
      - uses: actions/github-script@v5
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            await github.request('GET /octocat', {})

run キーワードを使用して、GitHub Actions ワークフローで cURL コマンドを実行することもできます。 詳細については、「GitHub Actions のワークフロー構文」を参照してく� さい。

GitHub では、トークンを作成するのではなく、組み込みの GITHUB_TOKEN で認証することが推奨されます。 これができない� �合は、ご利用のトークンをシークレットとして� �納し、次の例で GITHUB_TOKEN を自分のシークレットの名前に置き換えます。 GITHUB_TOKEN について詳しくは、「自動トークン認証」を参照してく� さい。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してく� さい。

jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions: {}
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          curl --request GET \
          --url "https://api.github.com/octocat" \
          --header "Authorization: Bearer $GH_TOKEN"

ヘッダーの使用

ほとんどの操作では、値が application/vnd.github+jsonAccept ヘッダーを渡す必要があることを指定します。 他の操作では、別の Accept ヘッダーまたは追� のヘッダーを送信する必要があることを指定する� �合があります。

GitHub CLI でヘッダーを送信するには、--header または -H フラグを使用し、その後にヘッダーを key: value 形式で指定します。

gh api --header 'Accept: application/vnd.github+json' --method GET /octocat

Octokit.js ライブラリでは自動的に Accept: application/vnd.github+json ヘッダーが渡されます。 追� のヘッダーまたは別の Accept ヘッダーを渡すには、headers メソッドに 2 番目の引数として渡されるオブジェクトに request プロパティを追� します。 headers プロパティの値は、キーがヘッダー名で値がヘッダー値のオブジェクトです。 たとえば、値が text/plaincontent-type ヘッダーを送信する� �合は次のようになります。

await octokit.request("GET /octocat", {
  headers: {
    "content-type": "text/plain",
  },
});

cURL でヘッダーを送信するには、--header または -H フラグを使用し、その後にヘッダーを key: value 形式で指定します。

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

パス パラメーターの使用

パス パラメーターでは操作パスを変更します。 たとえば、"リポジトリの issue の一覧表示" パスは /repos/{owner}/{repo}/issues となります。 中かっこ {} は、指定する必要があるパス パラメーターを示します。 この� �合は、リポジトリの所有者と名前を指定する必要があります。 この操作のリファレンス ドキュメントについては、「リポジトリの issue の一覧表示」を参照してく� さい。

注: このコマンドを your GitHub Enterprise Server instanceで動作させるには、octocat/Spoon-Knife を、your GitHub Enterprise Server instanceによって所有されているリポジトリに置き換えます。 それ以外の� �合は、gh auth login コマンドを再実行して、your GitHub Enterprise Server instanceではなく GitHub.com に対して認証を行います。

octocat/Spoon-Knife リポジトリから issue を取得するには、{owner}octocatに、{repo}Spoon-Knife に置き換えます。

gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues

注: この例を your GitHub Enterprise Server instanceで動作させるには、octocat/Spoon-Knife を、your GitHub Enterprise Server instance によって所有されているリポジトリに置き換えます。 それ以外の� �合は、新しい Octokit インスタンスを作成、baseURL は指定しません。

Octokit.js で要求を行うと、パス パラメーターを含むすべてのパラメーターが、request メソッドの 2 番目の引数としてオブジェクトで渡されます。 octocat/Spoon-Knife リポジトリから issue を取得するには、owneroctocat として、repoSpoon-Knife として指定します。

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

octocat/Spoon-Knife リポジトリから issue を取得するには、{owner}octocatに、{repo}Spoon-Knife に置き換えます。 完全なパスを構築するには、GitHub REST API のベース URL https://api.github.com を先� �に付� します (https://api.github.com/repos/octocat/Spoon-Knife/issues)。

注: GitHub.com の代わりに your GitHub Enterprise Server instance を使用する� �合は、https://api.github.com の代わりに http(s)://HOSTNAME/api/v3に使用し、[hostname] を your GitHub Enterprise Server instanceの名前に置き換えます。 octocat/Spoon-Knife を、your GitHub Enterprise Server instanceによって所有されているリポジトリに置き換えます。

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

この操作では、issue のリストと各 issue に関するデータが返されます。 応答の使用について詳しくは、「応答の使用」セクションを参照してく� さい。

クエリ パラメーターの使用

クエリ パラメーターを使用すると、要求に対して返されるデータを制御できます。 たとえば、クエリ パラメーターを使用すると、応答のページ分割時に返される� �目の数を指定できます。

既定では、"リポジトリの issue の一覧表示" 操作で 30 個の issue が返され、作成日の降� �で並べ替えられます。 per_page パラメーターを使用すると、30 個ではなく 2 個の issue を返すことができます。 sort パラメーターを使用すると、作成日ではなく、最終更新日で issue を並べ替えることができます。 direction パラメーターを使用すると、降� �ではなく昇� �で結果を並べ替えることができます。

GitHub CLI の� �合は、-F フラグを使用して、数値、ブール値、または null 値のパラメーターを渡します。 文字列パラメーターを渡すには、-f を使用します。

: GitHub CLI では現在、配列のパラメーターは受け入れられていません。 詳しくは、こちらの issue を参照してく� さい。

gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 -f sort=updated -f direction=asc

Octokit.js で要求を行うと、クエリ パラメーターを含むすべてのパラメーターが、request メソッドの 2 番目の引数としてオブジェクトで渡されます。

await octokit.request("GET /repos/{owner}/{repo}/issues", {
  owner: "octocat",
  repo: "Spoon-Knife",
  per_page: 2,
  sort: "updated",
  direction: "asc",
});

cURL の� �合は、パスの末尾に ? を追� してから、クエリ パラメーターの名前と値を parameter_name=value 形式で付� します。 複数のクエリ パラメーターは & で区切ります。

curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2&sort=updated&direction=asc" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"

この操作では、issue のリストと各 issue に関するデータが返されます。 応答の使用について詳しくは、「応答の使用」セクションを参照してく� さい。

本文パラメーターの使用

本文パラメーターを使用すると、API に追� のデータを渡すことができます。 たとえば、"issue の作成" 操作では、新しい issue のタイトルを指定する必要があります。 また、issue 本文に配置するテキストなど、他の情� �を指定することもできます。 この操作の完全なリファレンス ドキュメントについては、「issue の作成」を参照してく� さい。

"issue の作成" 操作では、上記の例の "リポジトリの issue の一覧表示" 操作と同じパスが使用されますが、GET メソッドではなく POST メソッドが使用されます。

GitHub CLI の� �合は、-F フラグを使用して、数値、ブール値、または null 値のパラメーターを渡します。 文字列パラメーターを渡すには、-f を使用します。

: GitHub CLI では現在、配列のパラメーターは受け入れられていません。 詳しくは、こちらの issue を参照してく� さい。

gh api --header 'Accept: application/vnd.github+json' --method POST /repos/octocat/Spoon-Knife/issues -f title="Created with the REST API" -f body="This is a test issue created by the REST API"

Octokit.js で要求を行うと、本文パラメーターを含むすべてのパラメーターが、request メソッドの 2 番目の引数としてオブジェクトで渡されます。

await octokit.request("POST /repos/{owner}/{repo}/issues", {
  owner: "octocat",
  repo: "Spoon-Knife",
  title: "Created with the REST API",
  body: "This is a test issue created by the REST API",
});

cURL の� �合は、--data フラグを使用して JSON オブジェクトで本文パラメーターを渡します。

curl --request POST \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" \
--data '{
  "title": "Created with the REST API",
  "body": "This is a test issue created by the REST API"
}'

この操作によって issue が作成され、新しい issue に関するデータが返されます。 応答で、issue の html_url を見つけ、ブラウザーでその issue に移動します。 応答の使用について詳しくは、「応答の使用」セクションを参照してく� さい。

応答の使用

応答コードとヘッダーについて

すべての要求で、応答の成功を示す HTTP 状態コードが返されます。 応答コードについて詳しくは、MDN HTTP 応答状態コードに関するドキュメントを参照してく� さい。

さらに、応答には、応答の詳細を示すヘッダーが含まれます。 X- または x- で始まるものは、GitHub のカスタ�  ヘッダーです。 たとえば、x-ratelimit-remainingx-ratelimit-reset ヘッダーは、一定期間に行うことができる要求の数を示します。

状態コードとヘッダーを表示するには、要求を送信するときに --include または --i フラグを使用します。

たとえば、次の要求があります。

gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 --include

次のような応答コードとヘッダーが返されます。

HTTP/2.0 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
Cache-Control: private, max-age=60, s-maxage=60
Content-Security-Policy: default-src 'none'
Content-Type: application/json; charset=utf-8
Date: Thu, 04 Aug 2022 19:56:41 GMT
Etag: W/"a63dfbcfdb73621e9d2e89551edcf9856731ced534bd7f1e114a5da1f5f73418"
Link: ; rel="next", ; rel="last"
Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
Server: GitHub.com
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Vary: Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With
X-Accepted-Oauth-Scopes: repo
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-Github-Api-Version-Selected: 2022-08-09
X-Github-Media-Type: github.v3; format=json
X-Github-Request-Id: 1C73:26D4:E2E500:1EF78F4:62EC2479
X-Oauth-Client-Id: 178c6fc778ccc68e1d6a
X-Oauth-Scopes: gist, read:org, repo, workflow
X-Ratelimit-Limit: 15000
X-Ratelimit-Remaining: 14996
X-Ratelimit-Reset: 1659645499
X-Ratelimit-Resource: core
X-Ratelimit-Used: 4
X-Xss-Protection: 0

この例では、応答コードは 200 で、要求が成功したことを示します。

Octokit.js で要求を行うと、request メソッドでは promise が返されます。 要求が成功した� �合、promise は、応答のHTTP 状態コード (status) と応答ヘッダー (headers) を含むオブジェクトに解決されます。 エラーが発生した� �合、promise は、応答のHTTP 状態コード (status) と応答ヘッダー (response.headers) を含むオブジェクトに解決されます。

try/catch ブロックを使用して、エラーが発生した� �合にそれをキャッチできます。 たとえば、次のスクリプトの要求が成功した� �合、そのスクリプトでは状態コードと x-ratelimit-remaining ヘッダーの値がログに記録されます。 要求が成功しなかった� �合、スクリプトでは状態コード、x-ratelimit-remaining ヘッダーの値、およびエラー メッセージがログに記録されます。

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

  console.log(`Success! Status: ${result.status}. Rate limit remaining: ${result.headers["x-ratelimit-remaining"]}`)

} catch (error) {
  console.log(`Error! Status: ${error.status}. Rate limit remaining: ${error.headers["x-ratelimit-remaining"]}. Message: ${error.response.data.message}`)
}

状態コードとヘッダーを表示するには、要求を送信するときに --include または --i フラグを使用します。

たとえば、次の要求があります。

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

次のような応答コードとヘッダーが返されます。

HTTP/2 200
server: GitHub.com
date: Thu, 04 Aug 2022 20:07:51 GMT
content-type: application/json; charset=utf-8
cache-control: public, max-age=60, s-maxage=60
vary: Accept, Accept-Encoding, Accept, X-Requested-With
etag: W/"7fceb7e8c958d3ec4d02524b042578dcc7b282192e6c939070f4a70390962e18"
x-github-media-type: github.v3; format=json
link: ; rel="next", ; rel="last"
access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
access-control-allow-origin: *
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin
content-security-policy: default-src 'none'
x-ratelimit-limit: 15000
x-ratelimit-remaining: 14996
x-ratelimit-reset: 1659645535
x-ratelimit-resource: core
x-ratelimit-used: 4
accept-ranges: bytes
content-length: 4936
x-github-request-id: 14E0:4BC6:F1B8BA:208E317:62EC2715

この例では、応答コードは 200 で、要求が成功したことを示します。

応答本文について

多くの操作で応答本文が返されます。 特に指定しない限り、応答本文は JSON 形式となります。 たとえば、この要求では、各 issue に関するデータと共に issue のリストが返されます。

gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2
await octokit.request("GET /repos/{owner}/{repo}/issues", {
  owner: "octocat",
  repo: "Spoon-Knife",
  per_page: 2,
});
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"

必要な情� �を指定する GraphQL API とは異なり、REST API では通常、必要以上の情� �が返されます。 必要に応じて、応答を解析して特定の情� �を引き出すことができます。

たとえば、> を使用して、応答をファイルにリダイレクトできます。

gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 > data.json

その後、jq を使用して、各 issue のタイトルと作成者 ID を取得できます。

jq '.[] | {title: .title, authorID: .user.id}' data.json

前の 2 つのコマンドでは次のようなものが返されます。

{
  "title": "Update index.html",
  "authorID": 10701255
}
{
  "title": "Edit index file",
  "authorID": 53709285
}

jq について詳しくは、jq のドキュメントjq play を参照してく� さい。

たとえば、各 issue のタイトルと作成者 ID を取得できます。

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

  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}`)
}

たとえば、> を使用して、応答をファイルにリダイレクトできます。

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

その後、jq を使用して、各 issue のタイトルと作成者 ID を取得できます。

jq '.[] | {title: .title, authorID: .user.id}' data.json

前の 2 つのコマンドでは次のようなものが返されます。

{
  "title": "Update index.html",
  "authorID": 10701255
}
{
  "title": "Edit index file",
  "authorID": 53709285
}

jq について詳しくは、jq のドキュメントjq play を参照してく� さい。

次の手� �

この記事では、リポジトリの issue を一覧表示して作成する方法について説明しました。 さらに練習する� �合は、issue にコメントを付けたり、issue のタイトルを編集したり、issue を閉じてみたりしてく� さい。 これらの操作について詳しくは、「issue コメントの作成」と「issue の更新」を参照してく� さい。

使用できる操作について詳しくは、REST リファレンス ドキュメントを参照してく� さい。