[備忘録] SAMLを使用するOrganization内のプルリクをGithub API v3でGETする（curl, Postman）

GithubAPIを使ってやりたいことがあったのですが、認証でつまづいたのでメモ。
そもそもGithubAPIとはみたなところは下記参考にしたサイトをご参照ください。

## 参考にしたサイト
- [GithubAPIについて色々とまとめてみた](https://qiita.com/syossan27/items/dd3bd152792360c29d01)
- [GitHub REST API を使用する](https://maku77.github.io/git/github/github-rest-api.html)
- [公式](https://developer.github.com/v3/)

## 目的
- 会社のリポジトリの自分のプルリク情報を手元でサクッとgetしたかっただけなのですが、OrganizationがSAMLを使用していたためちょっとつまづきました。そのあたりを自分用にまとめます。
- 叩きたいAPIはコレ：[`GET /repos/:owner/:repo/pulls/:pull_number`](https://developer.github.com/v3/pulls/#get-a-single-pull-request)
    - `:`がついてるとこは変数

## まずは認証なしでとれるやつ（SAMLとかじゃないパブリックなコンテンツ）
- [制限](https://qiita.com/syossan27/items/dd3bd152792360c29d01#%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%9F%E3%82%89githubapi%E3%82%92%E4%BD%BF%E3%81%88%E3%82%8B%E3%81%AE)はありますが、認証なしでもAPI叩けます
- これは特に何もせず叩くだけでOK
- サンプルプルリクエストURL：[`https://github.com/octokit/webhooks.js/pull/122`](https://github.com/octokit/webhooks.js/pull/122)
    - octokitが`:owner`、webhooks.jsが`:repo`にあたるようです

#### terminal

```:terminal
<Request>
curl https://api.github.com/repos/octokit/webhooks.js/pulls/122

<Response>
{
  "url": "https://api.github.com/repos/octokit/webhooks.js/pulls/122",
  "id": 402685424,
  "node_id": "MDExOlB1bGxSZXF1ZXN0NDAyNjg1NDI0",
  "html_url": "https://github.com/octokit/webhooks.js/pull/122",
  "diff_url": "https://github.com/octokit/webhooks.js/pull/122.diff",
  "patch_url": "https://github.com/octokit/webhooks.js/pull/122.patch",
  "issue_url": "https://api.github.com/repos/octokit/webhooks.js/issues/122",
  "number": 122,
  "state": "open",
  ...
}
```
#### Postman
- MethodをGETにしてURLを入力してSendを押すだけ
<img width="1127" alt="スクリーンショット 2020-04-14 12.39.29のコピー.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412846/ad20987b-f154-c8ea-270d-353df11c1056.png">


## 認証いるやつ（今回のSAMLを使用したOrganizationのケース）

### 基本認証を使います（非推奨ですが簡単なので）
1. [個人アクセストークンを作成する](https://help.github.com/ja/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)
2. [個人アクセストークンをOrganizationで認可する](https://help.github.com/ja/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on)
3. 個人アクセストークンをパスワードにしてAPIにアクセスする（[XXX]のところは各々読み替えをお願いします）

#### terminal

```:terminal
<Request>
① curl -u [username] https://api.github.com/repos/[hoge Organization]/[fuga Repository]/pulls/[1234]
   Enter host password for user [username]: [個人アクセストークン]
または
② curl -H 'Authorization: token [個人アクセストークン]' https://api.github.com/repos/[hoge Organization]/[fuga Repository]/pulls/[1234]

<Response>
{
  "url": "https://api.github.com/repos/octokit/webhooks.js/pulls/122",
  "id": 402685424,
  "node_id": "MDExOlB1bGxSZXF1ZXN0NDAyNjg1NDI0",
  "html_url": "https://github.com/octokit/webhooks.js/pull/122",
  "diff_url": "https://github.com/octokit/webhooks.js/pull/122.diff",
  "patch_url": "https://github.com/octokit/webhooks.js/pull/122.patch",
  "issue_url": "https://api.github.com/repos/octokit/webhooks.js/issues/122",
  "number": 122,
  "state": "open",
  ...
}
```

- 注意点
    - ①は2020/11に[使えなくなる](https://developer.github.com/changes/2020-02-14-deprecating-password-auth/)らしいです。
    - サクッとやるなら基本認証で良いと思いますが、ちゃんとやるなら[OAuth](https://qiita.com/syossan27/items/dd3bd152792360c29d01#%E8%AA%8D%E8%A8%BC%E3%81%A3%E3%81%A6)でやった方が良さそうです。

#### Postman
- 認証がない場合に加え、下記画像のAuthタブを選択し、`TYPE=”Basic Auth”`を選択
- パスワードに個人アクセストークンを入力してSend

<img width="1132" alt="スクリーンショット 2020-04-14 12.53.15のコピー.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412846/c02a6561-cb93-da7b-7783-15bde90ecff8.png">


## 最後に
ミス等ありましたらご指摘いただけますと幸いです。