gitlink-cli/skills/gitlink-shared/references/api-reference.md

173 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GitLink API 参考
## 认证端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `/accounts/login` | POST | 用户名密码登录 |
| `/users/me` | GET | 获取当前用户信息 |
## 全局参数
| 参数 | 位置 | 说明 |
|------|------|------|
| `access_token` | Query | OAuth2 Token自动注入 |
| `page` | Query | 分页页码(默认 1 |
| `limit` | Query | 每页条数(默认 20 |
## 响应格式
**成功响应**:
```json
{
"ok": true,
"data": { ... },
"meta": { "page": 1, "limit": 20, "total_count": 100 }
}
```
**错误响应**:
```json
{
"ok": false,
"error": {
"code": 401,
"message": "无效token",
"suggestion": "请先运行 gitlink-cli auth login 登录"
}
}
```
## 常见错误码
| 错误码 | 含义 | 解决方案 |
|--------|------|----------|
| 401 | 未认证 | 运行 `gitlink-cli auth login` |
| 403 | 权限不足 | 确认账户权限或联系项目管理员 |
| 404 | 资源不存在 | 检查 owner/repo/id 是否正确 |
| 422 | 参数校验失败 | 检查请求参数 |
| -1 | GitLink 业务错误 | 查看 message 字段获取详情 |
## API 特殊性
### 必需字段
| 操作 | 必需字段 | 说明 |
|------|----------|------|
| Issue 创建 | `done_ratio: 0` | 数据库约束 |
| Issue 更新 | 当前 `subject``description` | 即使只改状态也应保留,避免清空描述 |
| Release 查看 | `version_id` | 不能用 tag_name |
### 端点前缀
| 操作 | 前缀 | 示例 |
|------|------|------|
| 分支操作 | `/v1/` | `/v1/:owner/:repo/branches` |
| Issue 评论 | 无 | `/issues/:id/journals` |
| 仓库操作 | 无 | `/:owner/:repo/info` |
### 已知 Bug
| Bug | 影响 | 状态 |
|-----|------|------|
| Branch 删除返回"不存在" | 无法删除分支 | 待 GitLink 修复 |
| Release 删除返回"不存在" | 无法删除发布 | 待 GitLink 修复 |
| Create File 返回"已存在" | 无法通过 API 创建文件 | 待 GitLink 修复 |
| `api` 命令路径以 `/` 开头会被解析为本地路径 | 返回 HTML 而非 JSON | 去掉路径前导 `/` 即可 |
---
## 消息通知API
GitLink 的通知功能通过「消息」API 实现。
### 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `/users/{owner}/messages.json` | GET | 获取用户消息列表 |
| `/users/{owner}/messages/{id}/read` | POST | 标记单条消息已读 |
| `/users/{owner}/messages/{id}` | DELETE | 删除消息 |
| `/users/{owner}/messages/settings` | GET | 平台消息设置 |
| `/users/{owner}/messages/settings/list` | GET | 用户消息设置列表 |
| `/users/{owner}/messages/settings/update` | POST | 更新用户消息设置 |
### 查询参数GET messages.json
| 参数 | 类型 | 说明 |
|------|------|------|
| `status` | integer | 1=未读2=已读,不传=全部 |
| `type` | string | `notification`=系统消息,`atme`=@我消息,不传=全部 |
| `page` | integer | 页码(默认 1 |
| `limit` | integer | 每页条数(默认 20 |
### 响应字段
| 字段 | 类型 | 说明 |
|------|------|------|
| `total_count` | integer | 总消息数 |
| `unread_notification` | integer | 未读系统消息数 |
| `unread_atme` | integer | 未读@我消息数 |
| `messages[].id` | integer | 消息唯一 ID |
| `messages[].status` | integer | 1=未读2=已读 |
| `messages[].content` | string | HTML 格式的消息内容 |
| `messages[].source` | enum | 消息来源类型(见下方枚举表) |
| `messages[].notification_url` | string | 消息跳转链接 |
| `messages[].created_at` | string | 创建时间YYYY-MM-DD HH:mm:ss |
| `messages[].time_ago` | string | 相对时间描述 |
| `messages[].type` | string | `notification``atme` |
| `messages[].sender` | object | 发送者信息id, name, login, image_url |
### source 枚举值
| 枚举值 | 含义 | 分类 |
|--------|------|------|
| `IssueAssigned` | 有新指派给我的疑修 | Issue |
| `IssueExpire` | 疑修截止日期到达最后一天 | Issue |
| `IssueAtme` | 在疑修中@我 | @提及 |
| `IssueChanged` | 疑修状态变更 | Issue |
| `IssueDeleted` | 疑修被删除 | Issue |
| `IssueJournal` | 疑修有新评论 | Issue |
| `ProjectIssue` | 项目新 Issue | Issue |
| `PullRequestAssigned` | 有新指派给我的 PR | PR |
| `PullReuqestAtme` | 在 PR 中@我(**官方 API 拼写如此** | @提及 |
| `PullRequestChanged` | PR 状态变更 | PR |
| `PullRequestClosed` | PR 被关闭 | PR |
| `PullRequestJournal` | PR 有新评论 | PR |
| `PullRequestMerged` | PR 已合并 | PR |
| `ProjectPullRequest` | 项目有新 PR | PR |
| `ProjectJoined` | 加入项目 | 系统 |
| `ProjectLeft` | 离开项目 | 系统 |
| `ProjectMemberJoined` | 新成员加入项目 | 系统 |
| `ProjectMemberLeft` | 成员离开项目 | 系统 |
| `ProjectForked` | 项目被 Fork | 系统 |
| `ProjectPraised` | 项目被点赞 | 系统 |
| `ProjectRole` | 项目角色变更 | 系统 |
| `ProjectFollowed` | 项目被关注 | 系统 |
| `ProjectDeleted` | 项目被删除 | 系统 |
| `ProjectTransfer` | 项目转让 | 系统 |
| `ProjectSettingChanged` | 项目设置变更 | 系统 |
| `ProjectMilestone` | 新里程碑 | 系统 |
| `ProjectMilestoneCompleted` | 里程碑完成 | 系统 |
| `ProjectVersion` | 新版本发布 | 系统 |
| `ProjectOpenDevOps` | DevOps 引擎开通 | 系统 |
| `OrganizationJoined` | 加入组织 | 系统 |
| `OrganizationLeft` | 离开组织 | 系统 |
| `OrganizationRole` | 组织角色变更 | 系统 |
| `LoginIpTip` | 登录 IP 提示 | 其他 |
### 调用示例
```bash
# 获取未读通知
gitlink-cli api GET "users/lindiwen23/messages.json" --query "status=1&limit=20" --format json
# 获取 @我 的通知
gitlink-cli api GET "users/lindiwen23/messages.json" --query "type=atme&status=1" --format json
# 标记单条已读
gitlink-cli api POST "users/lindiwen23/messages/740214/read" --format json
# ⚠️ 路径不要以 / 开头,否则会被解析为本地文件路径
```