Skip to content

Latest commit

 

History

History
200 lines (180 loc) · 23.7 KB

File metadata and controls

200 lines (180 loc) · 23.7 KB

Auth Capability Matrix

Generated from priv/generated/auth_manifest.json and the committed GitHub Docs auth snapshots in priv/upstream/github_docs_auth/.

Token Families

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.

Confidence Levels

  • structured: the operation is backed by GitHub's structured availability pages, permission tables, endpoint progAccess, 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.

Token Support Values

  • true or false: 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.

Lookup

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-user

The runtime helper is GitHubEx.AuthMatrix.lookup/1 or GitHubEx.AuthMatrix.lookup/2.

Example Lookups

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 Summary

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

Conflict Notes

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.

Machine-Readable Source

The full per-operation matrix, including source provenance and notes, is committed in priv/generated/auth_manifest.json.