GitHub Client API¶
The GitHub plugin adds GitHub operations to Titan through a high-level client and reusable workflows. It covers pull requests, reviews, issues, releases, teams, and repository metadata.
This page documents the plugin from a functional point of view, while also showing how each capability is called and which parameters it needs.
Requirements¶
To use the GitHub plugin in a project:
- Enable the
githubplugin in.titan/config.toml - Enable the
gitplugin, because the GitHub plugin depends on it - Use a GitHub repository that is either configured explicitly or detectable from the git remote
- Install and authenticate the
ghCLI
Example project configuration:
[plugins.git]
enabled = true
[plugins.github]
enabled = true
[plugins.github.config]
repo_owner = "example-org"
repo_name = "example-repo"
default_branch = "main"
pr_template_path = ".github/pull_request_template.md"
auto_assign_prs = true
Accessing the client¶
In Titan code, the public entry point is the GitHub plugin client:
The client returns ClientResult[...] values. In practice, this means each call can succeed with data or return an error result.
Pull request operations¶
Create a pull request¶
Creates a new pull request from a head branch into a base branch.
Call:
client.create_pull_request(
title="Add search filters",
body="## Summary\n- adds filter controls\n- updates results state",
base="main",
head="feature/search-filters",
draft=False,
assignees=["alice"],
reviewers=["bob", "example-org/backend-team"],
labels=["feature", "ui"],
excluded_reviewers=["carol"],
)
Parameters:
title: Required. Pull request title.body: Required. Pull request description.base: Required. Target branch.head: Required. Source branch.draft: Optional. Whether to create the PR as draft.assignees: Optional. GitHub usernames to assign.reviewers: Optional. Usernames or teams.labels: Optional. Labels to apply.excluded_reviewers: Optional. Usernames to exclude after team expansion.
Get a pull request¶
Fetches a single pull request by number.
Call:
Parameters:
pr_number: Required. Pull request number.
List pull requests pending review¶
Returns PRs that still need your review.
Call:
Parameters:
max_results: Optional. Maximum number of PRs to return.include_team_reviews: Optional. Include PRs requested from your teams.
List your pull requests¶
Returns pull requests created by the authenticated user.
Call:
Parameters:
state: Optional. PR state such asopen,closed, ormerged.max_results: Optional. Maximum number of PRs to return.
List all pull requests¶
Returns pull requests from the repository without filtering by author.
Call:
Parameters:
state: Optional. PR state such asopen,closed, ormerged.max_results: Optional. Maximum number of PRs to return.
Read a pull request diff¶
Returns the pull request diff as text.
Call:
Parameters:
pr_number: Required. Pull request number.context_lines: Optional. Number of diff context lines.
Read patches for specific files¶
Returns patch text only for selected files in a PR.
Call:
Parameters:
pr_number: Required. Pull request number.file_paths: Required. List of paths to extract patches for.
List changed files¶
Returns the file paths changed in a pull request.
Call:
Parameters:
pr_number: Required. Pull request number.
List changed files with stats¶
Returns each changed file together with additions, deletions, and status.
Call:
Parameters:
pr_number: Required. Pull request number.
Checkout a pull request locally¶
Checks out the pull request branch in the local repository.
Call:
Parameters:
pr_number: Required. Pull request number.
Add a PR comment¶
Adds a general comment to a pull request.
Call:
Parameters:
pr_number: Required. Pull request number.body: Required. Comment body.
Get the latest PR commit SHA¶
Returns the latest commit SHA associated with the pull request.
Call:
Parameters:
pr_number: Required. Pull request number.
Merge a pull request¶
Merges a pull request using the selected merge strategy.
Call:
client.merge_pr(
pr_number=123,
merge_method="squash",
commit_title="Add search filters",
commit_message="Adds filtering controls and updates result handling.",
)
Parameters:
pr_number: Required. Pull request number.merge_method: Optional. Merge strategy such asmerge,squash, orrebase.commit_title: Optional. Merge commit title.commit_message: Optional. Merge commit message.
Review operations¶
Get review threads¶
Returns code review threads for a pull request.
Call:
Parameters:
pr_number: Required. Pull request number.include_resolved: Optional. Include resolved threads.
Resolve a review thread¶
Marks a review thread as resolved.
Call:
Parameters:
thread_node_id: Required. GraphQL node ID of the thread.
Get reviews for a pull request¶
Returns submitted reviews such as approvals, change requests, and comments.
Call:
Parameters:
pr_number: Required. Pull request number.
Create a draft review¶
Creates a draft review before submitting it.
Call:
client.create_draft_review(
pr_number=123,
payload={
"body": "I left a few comments.",
"comments": [],
},
)
Parameters:
pr_number: Required. Pull request number.payload: Required. Review payload to send to GitHub.
Submit a review¶
Submits a review event, optionally using an existing draft review.
Call:
Parameters:
pr_number: Required. Pull request number.review_id: Optional. Draft review ID, orNoneto submit directly.event: Required. Review event such asAPPROVE,REQUEST_CHANGES, orCOMMENT.body: Optional. Review summary text.
Delete a draft review¶
Deletes an existing draft review.
Call:
Parameters:
pr_number: Required. Pull request number.review_id: Required. Draft review ID.
Reply to a review comment¶
Adds a reply to an existing PR review comment.
Call:
Parameters:
pr_number: Required. Pull request number.comment_id: Required. Comment ID to reply to.body: Required. Reply text.
Get general PR comments¶
Returns PR comments that are not attached to a code line.
Call:
Parameters:
pr_number: Required. Pull request number.
Add a general issue-style comment to a PR¶
Adds a non-inline comment to the pull request conversation.
Call:
Parameters:
pr_number: Required. Pull request number.body: Required. Comment body.
Request or re-request review¶
Requests review from one or more users.
Call:
Parameters:
pr_number: Required. Pull request number.reviewers: Optional. List of GitHub usernames.
Issue operations¶
Create an issue¶
Creates a new GitHub issue.
Call:
client.create_issue(
title="Search results are not paginated",
body="The results page should support server-side pagination.",
assignees=["alice"],
labels=["bug", "backend"],
)
Parameters:
title: Required. Issue title.body: Required. Issue body.assignees: Optional. Assignee usernames.labels: Optional. Labels to apply.
List repository labels¶
Returns the labels available in the repository.
Call:
Parameters:
- No parameters.
Release operations¶
Create a release¶
Creates a GitHub release from a tag.
Call:
client.create_release(
tag_name="v1.2.0",
title="v1.2.0",
notes="Release notes for version 1.2.0.",
generate_notes=False,
verify_tag=True,
prerelease=False,
)
Parameters:
tag_name: Required. Git tag to release.title: Optional. Release title.notes: Optional. Release notes.generate_notes: Optional. Let GitHub generate the notes automatically.verify_tag: Optional. Verify that the tag exists before creating the release.prerelease: Optional. Mark the release as prerelease.
Team operations¶
List team members¶
Returns the members of a GitHub team.
Call:
Parameters:
team_slug: Required. Team identifier inorg/teamformat.
This is also used internally when a pull request is created with team reviewers.
Utility operations¶
Read the PR template¶
Returns the configured PR template content when one is available.
Call:
Parameters:
- No parameters.
Get the current GitHub user¶
Returns the authenticated GitHub username.
Call:
Parameters:
- No parameters.
Get a user's display name¶
Returns the display name for a GitHub login, falling back to the login if needed.
Call:
Parameters:
login: Required. GitHub username.
Get the current user's display name¶
Returns the display name of the authenticated user.
Call:
Parameters:
- No parameters.
Get the default branch¶
Returns the repository default branch from Titan config, GitHub metadata, or local git configuration.
Call:
Parameters:
- No parameters.
Related workflows¶
The GitHub plugin ships with workflows that use these capabilities directly:
create-pr-ai: Creates a pull request after committing and pushing changes, with AI-generated PR content.create-issue-ai: Creates a GitHub issue from an AI-suggested title and description.respond-pr-comments: Helps review pending comments, reply to them, and request another review.
These workflows can be used as-is or extended from .titan/workflows/.