Beyond basic PR CRUD, reviewers need to be requested explicitly, individual file
reviews differ from overall PR reviews, and review dismissals are used when a
review is outdated. These are standard code review workflow primitives.
dismiss_pr_review body: {"message": "Superseded by newer commit"} — message is required by Gitea API
A review can only be dismissed if it is in APPROVED or REQUEST_CHANGES state
## Context
Beyond basic PR CRUD, reviewers need to be requested explicitly, individual file
reviews differ from overall PR reviews, and review dismissals are used when a
review is outdated. These are standard code review workflow primitives.
## Endpoints to implement
| Method | Path | Tool name | Description |
|--------|------|-----------|-------------|
| GET | `/repos/{owner}/{repo}/pulls/{index}/requested_reviewers` | `list_requested_reviewers` | List requested reviewers |
| POST | `/repos/{owner}/{repo}/pulls/{index}/requested_reviewers` | `request_reviewers` | Request reviewers |
| DELETE | `/repos/{owner}/{repo}/pulls/{index}/requested_reviewers` | `remove_requested_reviewers` | Remove reviewer requests |
| GET | `/repos/{owner}/{repo}/pulls/{index}/files` | `list_pr_files` | List changed files in PR |
| GET | `/repos/{owner}/{repo}/pulls/{index}/commits` | `list_pr_commits` | List commits in PR |
| GET | `/repos/{owner}/{repo}/pulls/{index}/reviews/{id}` | `get_pr_review` | Get single review |
| DELETE | `/repos/{owner}/{repo}/pulls/{index}/reviews/{id}` | `delete_pr_review` | Delete a review |
| POST | `/repos/{owner}/{repo}/pulls/{index}/reviews/{id}/dismissals` | `dismiss_pr_review` | Dismiss a review |
| DELETE | `/repos/{owner}/{repo}/pulls/{index}/reviews/{id}/dismissals` | `undismiss_pr_review` | Un-dismiss a review |
## Acceptance Criteria
- [ ] `request_reviewers(owner, repo, index, reviewers, team_reviewers)` — both are optional lists
- [ ] `list_pr_files` returns list of changed files with `filename`, `status`, `additions`, `deletions`
- [ ] `list_pr_commits` returns commits in chronological order
- [ ] `dismiss_pr_review(owner, repo, index, id, message)` requires a dismissal message
- [ ] `delete_pr_review` only works on `PENDING` reviews; document this constraint in docstring
## Technical Notes
- `request_reviewers` body: `{"reviewers": ["alice", "bob"], "team_reviewers": ["core-team"]}`
- `dismiss_pr_review` body: `{"message": "Superseded by newer commit"}` — message is required by Gitea API
- A review can only be dismissed if it is in `APPROVED` or `REQUEST_CHANGES` state
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Context
Beyond basic PR CRUD, reviewers need to be requested explicitly, individual file
reviews differ from overall PR reviews, and review dismissals are used when a
review is outdated. These are standard code review workflow primitives.
Endpoints to implement
/repos/{owner}/{repo}/pulls/{index}/requested_reviewerslist_requested_reviewers/repos/{owner}/{repo}/pulls/{index}/requested_reviewersrequest_reviewers/repos/{owner}/{repo}/pulls/{index}/requested_reviewersremove_requested_reviewers/repos/{owner}/{repo}/pulls/{index}/fileslist_pr_files/repos/{owner}/{repo}/pulls/{index}/commitslist_pr_commits/repos/{owner}/{repo}/pulls/{index}/reviews/{id}get_pr_review/repos/{owner}/{repo}/pulls/{index}/reviews/{id}delete_pr_review/repos/{owner}/{repo}/pulls/{index}/reviews/{id}/dismissalsdismiss_pr_review/repos/{owner}/{repo}/pulls/{index}/reviews/{id}/dismissalsundismiss_pr_reviewAcceptance Criteria
request_reviewers(owner, repo, index, reviewers, team_reviewers)— both are optional listslist_pr_filesreturns list of changed files withfilename,status,additions,deletionslist_pr_commitsreturns commits in chronological orderdismiss_pr_review(owner, repo, index, id, message)requires a dismissal messagedelete_pr_reviewonly works onPENDINGreviews; document this constraint in docstringTechnical Notes
request_reviewersbody:{"reviewers": ["alice", "bob"], "team_reviewers": ["core-team"]}dismiss_pr_reviewbody:{"message": "Superseded by newer commit"}— message is required by Gitea APIAPPROVEDorREQUEST_CHANGESstate