feat: implement advanced pull request operations #6

Open
opened 2026-06-02 06:56:56 +00:00 by a-limasov · 0 comments
Owner

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
## 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
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: a-limasov/gitea-platform-mcp#6