Files

124 lines
3.4 KiB
Markdown

# Pull Requests API reference
Base: `https://git.mpm.to/api/v1`
Note: In Gitea, pull requests are fetched via the issues endpoint with `type=pulls`, or via the dedicated `/pulls` endpoint.
## List pull requests for a repository
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls?state=open&limit=50&page=1"
```
Query params:
- `state`: `open` | `closed` | `all`
- `sort`: `oldest` | `recentupdate` | `leastupdate` | `mostcomment` | `leastcomment` | `priority`
- `milestone`: milestone ID
- `labels`: comma-separated label IDs
Key response fields: `number`, `title`, `body`, `state`, `user.login`, `head.label`, `base.label`, `mergeable`, `merged`, `merged_at`, `created_at`, `html_url`.
## Get a single pull request
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls/{index}"
```
## Create a pull request
```bash
curl -s -X POST \
-H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
-H "Content-Type: application/json" \
-d '{
"title": "PR title",
"body": "Description (markdown supported)",
"head": "feature-branch",
"base": "main",
"assignees": ["username"],
"labels": [123],
"milestone": 1
}' \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls"
```
`head` is the branch with changes; `base` is the branch to merge into.
## Update a pull request
```bash
curl -s -X PATCH \
-H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated title",
"body": "Updated description",
"state": "closed"
}' \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls/{index}"
```
## Merge a pull request
```bash
curl -s -X POST \
-H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
-H "Content-Type: application/json" \
-d '{
"Do": "merge",
"merge_message_field": "Merge PR #N: title",
"merge_style": "merge"
}' \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls/{index}/merge"
```
`merge_style` options: `merge` | `rebase` | `rebase-merge` | `squash`. Always confirm with the user before merging.
## Check if a pull request is merged
```bash
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls/{index}/merge"
```
Returns `204` if merged, `404` if not merged.
## List PR reviews
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls/{index}/reviews"
```
## Submit a PR review
```bash
curl -s -X POST \
-H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
-H "Content-Type: application/json" \
-d '{
"body": "Review comment",
"event": "APPROVED"
}' \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls/{index}/reviews"
```
`event` options: `APPROVED` | `REQUEST_CHANGES` | `COMMENT`.
## List PR commits
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls/{index}/commits"
```
## List PR files changed
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/pulls/{index}/files"
```