github
github
GitHub REST API — repositories, issues, pull requests, commits, and code search
Coverage
7% (59 of ~900 endpoints)
Focus: repos, orgs, issues, PRs (full CRUD + merge + reviews), commits, branches, git refs, file management, labels, milestones, search, releases (full CRUD), actions/workflows/jobs, users, tags, topics
Missing: projects v2, teams, webhooks, deployments, code scanning, packages, gists, notifications, environments, pages
Tools (59)
GET list_user_repos List repositories for the authenticated user. Use type to filter (owner, member, all). GET list_orgs List organizations the authenticated user belongs to. GET list_org_repos List repositories for an organization. Use list_orgs first to find org names. GET get_repo Get a single repository by owner and name. PATCH update_repo Update repository settings. Only include fields you want to change. Use for description, homepage, visibility, merge settings, etc. PUT replace_topics Replace all repository topics. Provide the full list of desired topics. GET list_issues List issues for a repository. Also returns PRs unless filtered. State: open, closed, all. Note: GitHub treats PRs as issues — check for pull_request field to distinguish. GET get_issue Get a single issue by number, including body, labels, assignees, and milestone. POST create_issue Create a new issue. Labels are an array of label name strings. PATCH update_issue Update an issue. Set state to 'closed' to close it. Only include fields you want to change. GET list_issue_comments List comments on an issue or pull request. POST create_issue_comment Add a comment to an issue or pull request. Body supports GitHub-Flavored Markdown. GET list_pulls List pull requests for a repository. State: open, closed, all. GET get_pull Get a single pull request including diff stats, mergeable state, and review status. GET list_pull_files List files changed in a pull request with patch diffs and stats. GET list_pull_reviews List reviews on a pull request (approved, changes_requested, commented). POST create_pull Create a new pull request. head is the branch with changes, base is the target branch (e.g. main). Set draft=true to create a draft PR. PATCH update_pull Update a pull request. Set state to 'closed' to close it. Only include fields you want to change. PUT merge_pull Merge a pull request. merge_method: merge, squash, or rebase. Optionally provide sha to ensure merging the expected head commit. GET list_pull_commits List commits on a pull request, ordered chronologically. POST create_pull_review Create a review on a pull request. event: APPROVE, REQUEST_CHANGES, or COMMENT. Body is the review summary. GET list_commits List commits on a repository. Filter by sha (branch), path, author, or date range. GET get_commit Get a single commit by SHA or ref, including full diff stats and file changes. GET list_branches List branches for a repository. GET get_branch Get a single branch including its latest commit SHA and protection status. POST create_ref Create a git reference (branch or tag). For branches use ref='refs/heads/branch-name'. sha is the commit to point to. DELETE delete_ref Delete a git reference. For branches use ref='heads/branch-name' (without refs/ prefix). For tags use ref='tags/tag-name'. GET get_content Get file or directory contents. Files are base64 encoded. Directories return a listing. Use ref for a specific branch/tag/SHA. PUT create_or_update_file Create or update a file. Content must be base64 encoded. To update an existing file, provide the current blob sha (from get_content). Creates a commit. DELETE delete_file Delete a file from the repository. Requires the current blob sha (from get_content). Creates a commit. GET search_code Search for code across repositories. Query syntax: 'keyword repo:owner/repo language:go path:internal'. Results include file path, repo, and text matches. GET search_issues Search issues and PRs across repositories. Query syntax: 'bug repo:owner/repo is:open label:bug'. Use is:pr or is:issue to filter. GET list_releases List releases for a repository, newest first. GET get_latest_release Get the latest published release (not draft/prerelease). GET get_release Get a single release by its numeric ID. POST create_release Create a release. tag_name is required. If the tag does not exist, target_commitish (branch or SHA) is used to create it. Set draft=true for unpublished releases. PATCH update_release Update a release. Only include fields you want to change. DELETE delete_release Delete a release. Does not delete the associated git tag. GET list_workflow_runs List workflow runs for a repository. Filter by branch, status (queued, in_progress, completed), or event (push, pull_request). GET get_workflow_run Get a single workflow run including status, conclusion, and timing. GET list_workflows List all workflows in a repository. Returns workflow ID, name, path, and state. GET list_workflow_run_jobs List jobs for a workflow run. Filter by latest attempt or all attempts. GET get_job Get a single workflow job by ID, including steps with status and timing. GET get_job_log Download the log output of a workflow job. Returns plain text with timestamps. The API responds with a 302 redirect to a temporary download URL which is followed automatically. POST cancel_workflow_run Cancel a workflow run that is in progress or queued. POST rerun_workflow Re-run an entire workflow run. Only works for completed runs. GET list_labels List all labels for a repository. GET get_label Get a single label by name. POST create_label Create a label. Color is a 6-character hex code without '#' prefix (e.g. 'ff0000' for red). PATCH update_label Update a label. Only include fields you want to change. Use new_name to rename. DELETE delete_label Delete a label from the repository. GET list_milestones List milestones for a repository. State: open, closed, all. GET get_milestone Get a single milestone by its number, including open/closed issue counts. POST create_milestone Create a milestone. due_on is an ISO 8601 timestamp (e.g. '2026-04-01T00:00:00Z'). PATCH update_milestone Update a milestone. Set state to 'closed' to close it. Only include fields you want to change. DELETE delete_milestone Delete a milestone. GET get_authenticated_user Get the currently authenticated user's profile including login, name, email, and bio. GET get_user Get a public user profile by username. GET list_tags List tags for a repository, newest first. Each tag includes name and commit SHA. Setup
- Navigate to GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- Click 'Generate new token (classic)'
- Select scopes: repo (full access), read:org (list organizations)
- Copy the token (starts with ghp_ or github_pat_)
Environment variable: CREDENTIAL_GITHUB_TOKEN
Install
Add to your backends.yaml:
- name: github
transport: rest
dadl: /app/dadl/github.dadl
url: "https://api.github.com"
Set the credential:
CREDENTIAL_GITHUB_TOKEN=your-token-here