Generated from priv/generated/auth_manifest.json and the committed GitHub Docs auth snapshots in priv/upstream/github_docs_auth/.
| Token family | Supported operations | Notes |
|---|---|---|
| Fine-grained PAT | 855 | Structured support comes from GitHub's endpoint-availability page plus endpoint progAccess when present. |
| GitHub App installation token | 887 | Structured support comes from GitHub's installation-token availability page. |
| GitHub App user token | 999 | Structured support comes from GitHub's app-user-token availability page. |
| OAuth application client credentials | 5 | These are the five /applications/{client_id}/token* and /grant endpoints. |
Classic PAT and OAuth access token coverage are only lower-confidence legacy hints here. GitHub does not publish one structured classic-PAT coverage index for the full REST surface.
structured: the operation is backed by GitHub's structured availability pages, permission tables, endpointprogAccess, or the special OAuth-application path contract.legacy_hint: the best available signal is legacy OpenAPI prose or classic/OAuth scope hints.unknown: there is no reliable structured or legacy auth signal for that field.conflict: structured sources or legacy prose materially disagree, so the matrix preserves the disagreement instead of pretending certainty.
trueorfalse: derived from structured GitHub docs sources.legacy_scope_hint: only a legacy scope hint exists for that token family.unknown: no trustworthy source exists for that token family.conflict: structured sources or structured-vs-legacy sources disagree.
Use the generated manifest directly or ask the CLI helper for one operation at a time:
mix github.auth.lookup GET /user/repos
mix github.auth.lookup repos/list-for-authenticated-userThe runtime helper is GitHubEx.AuthMatrix.lookup/1 or GitHubEx.AuthMatrix.lookup/2.
| Example | Operation | Fine-grained PAT | GitHub App install | GitHub App user | Notes |
|---|---|---|---|---|---|
| 00_smoke.exs | GET / | no auth required for the smoke request | supported | supported | The smoke example also calls GET /rate_limit, which works without auth for this path. |
| 01_get_authenticated_user.exs | GET /user | supported with no fine-grained PAT permissions | not listed | supported | conflict |
| 02_list_authenticated_repos.exs | GET /user/repos | Metadata: read | not listed | supported | Public-read fallback exists, but private-resource access still follows the listed permission requirements. |
| 03_list_repo_issues.exs | GET /repos/{owner}/{repo}/issues | Issues: read | supported | supported | Public-read fallback exists, but private-resource access still follows the listed permission requirements. |
| 04_list_pull_requests.exs | GET /repos/{owner}/{repo}/pulls | Pull requests: read | supported | supported | Public-read fallback exists, but private-resource access still follows the listed permission requirements. |
| 05_list_workflow_runs.exs | GET /repos/{owner}/{repo}/actions/runs | Actions: read | supported | supported | Public-read fallback exists, but private-resource access still follows the listed permission requirements. |
| Module | Total | FG PAT | App install | App user | Conflicts |
|---|---|---|---|---|---|
| Actions | 184 | 179 | 184 | 183 | 0 |
| Activity | 32 | 11 | 13 | 19 | 8 |
| Apps | 37 | 0 | 3 | 5 | 3 |
| Billing | 10 | 10 | 7 | 10 | 0 |
| Campaigns | 5 | 5 | 5 | 5 | 0 |
| Checks | 12 | 0 | 12 | 12 | 12 |
| Classroom | 6 | 0 | 0 | 6 | 6 |
| CodeScanning | 21 | 21 | 21 | 21 | 0 |
| CodeSecurity | 20 | 11 | 11 | 11 | 0 |
| CodesOfConduct | 2 | 0 | 2 | 2 | 2 |
| Codespaces | 48 | 48 | 23 | 48 | 0 |
| Copilot | 11 | 11 | 11 | 11 | 0 |
| Credentials | 1 | 0 | 1 | 1 | 1 |
| Dependabot | 22 | 21 | 21 | 21 | 0 |
| DependencyGraph | 3 | 3 | 3 | 3 | 0 |
| Emojis | 1 | 0 | 1 | 1 | 1 |
| EnterpriseTeamMemberships | 6 | 0 | 6 | 6 | 0 |
| EnterpriseTeamOrganizations | 6 | 0 | 6 | 6 | 0 |
| EnterpriseTeams | 5 | 0 | 5 | 5 | 0 |
| Gists | 20 | 9 | 0 | 20 | 11 |
| Git | 13 | 13 | 13 | 13 | 0 |
| Gitignore | 2 | 0 | 2 | 2 | 2 |
| HostedCompute | 6 | 6 | 6 | 6 | 0 |
| Interactions | 9 | 9 | 6 | 9 | 0 |
| Issues | 55 | 52 | 52 | 55 | 3 |
| Licenses | 3 | 1 | 3 | 3 | 2 |
| Markdown | 2 | 1 | 2 | 2 | 1 |
| Meta | 5 | 0 | 5 | 5 | 5 |
| Migrations | 22 | 8 | 0 | 8 | 0 |
| Oidc | 8 | 5 | 8 | 8 | 0 |
| Orgs | 108 | 93 | 102 | 108 | 7 |
| Packages | 27 | 0 | 26 | 18 | 3 |
| PrivateRegistries | 6 | 6 | 6 | 6 | 0 |
| Projects | 26 | 13 | 13 | 13 | 0 |
| Pulls | 27 | 27 | 27 | 27 | 0 |
| RateLimit | 1 | 0 | 1 | 1 | 1 |
| Reactions | 15 | 12 | 15 | 15 | 3 |
| Repos | 201 | 198 | 194 | 200 | 0 |
| Search | 7 | 1 | 7 | 7 | 6 |
| SecretScanning | 9 | 9 | 8 | 9 | 0 |
| SecurityAdvisories | 10 | 8 | 10 | 10 | 2 |
| Teams | 32 | 31 | 31 | 32 | 1 |
| Users | 47 | 33 | 15 | 46 | 13 |
| Operation | Notes |
|---|---|
| GET /events | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /feeds | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /networks/{owner}/{repo}/events | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /orgs/{org}/events | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/events | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/events/public | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/received_events | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/received_events/public | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /apps/{app_slug} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/marketplace_purchases | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/marketplace_purchases/stubbed | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /repos/{owner}/{repo}/check-runs | Conflict: OpenAPI prose still says GitHub App only, but endpoint progAccess marks fine-grained PAT or GitHub App user-token support. Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /repos/{owner}/{repo}/check-runs/{check_run_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| PATCH /repos/{owner}/{repo}/check-runs/{check_run_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /repos/{owner}/{repo}/check-suites | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| PATCH /repos/{owner}/{repo}/check-suites/preferences | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /repos/{owner}/{repo}/check-suites/{check_suite_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /repos/{owner}/{repo}/commits/{ref}/check-runs | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /repos/{owner}/{repo}/commits/{ref}/check-suites | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /assignments/{assignment_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /assignments/{assignment_id}/accepted_assignments | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /assignments/{assignment_id}/grades | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /classrooms | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /classrooms/{classroom_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /classrooms/{classroom_id}/assignments | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /codes_of_conduct | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /codes_of_conduct/{key} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /credentials/revoke | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /emojis | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/public | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/starred | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/{gist_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/{gist_id}/comments | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/{gist_id}/comments/{comment_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/{gist_id}/commits | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/{gist_id}/forks | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/{gist_id}/star | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gists/{gist_id}/{sha} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/gists | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gitignore/templates | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /gitignore/templates/{name} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /issues | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /orgs/{org}/issues | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/issues | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /licenses | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /licenses/{license} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /markdown/raw | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET / | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /meta | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /octocat | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /versions | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /zen | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /organizations | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /orgs/{org} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /orgs/{org}/attestations/bulk-list | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /orgs/{org}/attestations/{subject_digest} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/memberships/orgs | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/orgs | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/orgs | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /orgs/{org}/docker/conflicts | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/docker/conflicts | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/docker/conflicts | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /rate_limit | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /repos/{owner}/{repo}/releases/{release_id}/reactions | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /repos/{owner}/{repo}/releases/{release_id}/reactions | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /search/code | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /search/commits | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /search/issues | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /search/repositories | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /search/topics | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /search/users | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /advisories | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /advisories/{ghsa_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/teams | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/social_accounts | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /user/{account_id} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| POST /users/{username}/attestations/bulk-list | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/attestations/{subject_digest} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/followers | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/following | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/following/{target_user} | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/gpg_keys | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/social_accounts | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
| GET /users/{username}/ssh_signing_keys | Conflict: endpoint progAccess and the fine-grained PAT availability page disagree. |
The full per-operation matrix, including source provenance and notes, is committed in priv/generated/auth_manifest.json.