Module collaboration_api

Module collaboration_api 

Source
Expand description

§Collaboration API

This module provides HTTP endpoints for code collaboration features:

  • Pull Requests: Merge proposals with code review workflow
  • Issues: Bug reports, feature requests, and task tracking
  • Comments: Threaded discussions on PRs and Issues
  • Reviews: Code reviews with approval/rejection states

§Pull Request Endpoints

MethodPathDescription
GET/api/repos/{owner}/{name}/pullsList pull requests
POST/api/repos/{owner}/{name}/pullsCreate a pull request
GET/api/repos/{owner}/{name}/pulls/{number}Get PR details
PATCH/api/repos/{owner}/{name}/pulls/{number}Update PR (title, state)
POST/api/repos/{owner}/{name}/pulls/{number}/mergeMerge the PR
GET/api/repos/{owner}/{name}/pulls/{number}/commentsList PR comments
POST/api/repos/{owner}/{name}/pulls/{number}/commentsAdd a comment
GET/api/repos/{owner}/{name}/pulls/{number}/reviewsList reviews
POST/api/repos/{owner}/{name}/pulls/{number}/reviewsSubmit a review

§Issue Endpoints

MethodPathDescription
GET/api/repos/{owner}/{name}/issuesList issues
POST/api/repos/{owner}/{name}/issuesCreate an issue
GET/api/repos/{owner}/{name}/issues/{number}Get issue details
PATCH/api/repos/{owner}/{name}/issues/{number}Update issue
GET/api/repos/{owner}/{name}/issues/{number}/commentsList comments
POST/api/repos/{owner}/{name}/issues/{number}/commentsAdd a comment

§State Transitions

§Pull Request States

Open ──┬──> Closed ──> Open (reopen)
       └──> Merged (terminal)

§Issue States

Open <──> Closed

§Review States

  • Pending: Review in progress
  • Commented: Feedback without explicit approval
  • Approved: Code approved
  • ChangesRequested: Changes needed before merge
  • Dismissed: Review dismissed by maintainer

§Query Parameters

List endpoints support filtering:

# List open PRs only
GET /api/repos/alice/myrepo/pulls?state=open

# List closed issues
GET /api/repos/alice/myrepo/issues?state=closed

§Example: Creating a Pull Request

curl -X POST http://localhost:8080/api/repos/alice/myrepo/pulls \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Add new feature",
    "description": "Implements the requested feature",
    "author": "bob",
    "source_branch": "feature/new-feature",
    "target_branch": "main",
    "source_commit": "abc123",
    "target_commit": "def456"
  }'

§Example: Submitting a Review

curl -X POST http://localhost:8080/api/repos/alice/myrepo/pulls/1/reviews \
  -H "Content-Type: application/json" \
  -d '{
    "author": "alice",
    "state": "approved",
    "body": "LGTM!",
    "commit_id": "abc123"
  }'

Structs§

CommentResponse
Response for a comment.
CreateCommentRequest
Request to create a comment.
CreateIssueRequest
Request to create an issue.
CreatePRRequest
Request to create a pull request.
CreateReviewRequest
Request to create a review.
IssueResponse
Response for an issue.
LabelResponse
Response for a label.
ListIssuesQuery
Query parameters for listing issues.
ListPRsQuery
Query parameters for listing pull requests.
MergePRRequest
Request to merge a pull request.
PullRequestResponse
Response for a pull request.
ReviewResponse
Response for a review.
UpdateIssueRequest
Request to update an issue.
UpdatePRRequest
Request to update a pull request.

Functions§

collaboration_routes
Creates the collaboration API routes.