Introduction
Welcome to the Trustie API! You can use our API to access Trustie API endpoints, which can get information on projects, repository, and users in our platform.
We have language bindings in Shell,avaScript! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
This example API documentation page was created with Trustie. Feel free to edit it and use it as a base for your own API's documentation.
Licenses
Get All Licenses
The Licenses API returns metadata about popular open source licenses and information about a particular project's license file.
示例:
curl -X GET \
-d "name=AFL" \
http://localhost:3000/api/licenses
await octokit.request('GET /api/licenses')
HTTP Request
GET https://forgeplus.trustie.net/api/licenses.json
请求参数
| Name | Required | Type | Description |
|---|---|---|---|
| name | false | string | name of the license |
返回字段说明:
{
"licenses": [
{
"id": 57,
"name": "AFL-1.2"
},
{
"id": 76,
"name": "AFL-3.0"
},
{
"id": 214,
"name": "AFL-1.1"
},
{
"id": 326,
"name": "AFL-2.1"
},
{
"id": 350,
"name": "AFL-2.0"
}
]
}
Gitignores
gitignore模板列表
获取gitignore模板列表, 支持名称搜索过滤
示例:
curl -X GET \
-d "name=Ada" \
http://localhost:3000/api/ignores.json
await octokit.request('GET /api/ignores.json')
HTTP 请求
GET api/ignores.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| name | 否 | 否 | string |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| name | string | gitignore名称 |
返回的JSON示例:
{
"ignores": [
{
"id": 1,
"name": "Ada"
}
]
}
PublicKeys
public_keys列表
获取public_keys列表,支持分页
示例:
curl -X GET \
http://localhost:3000/api/public_keys.json
await octokit.request('GET /api/public_keys.json')
HTTP 请求
GET api/public_keys.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| page | 否 | 1 | int | 页码 |
| limit | 否 | 15 | int | 每页数量 |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_count | int | 总数 |
| public_keys.id | int | ID |
| public_keys.name | string | 密钥标题 |
| public_keys.content | string | 密钥内容 |
| public_keys.fingerprint | string | 密钥标识 |
| public_keys.created_time | string | 密钥创建时间 |
返回的JSON示例:
{
"total_count": 1,
"public_keys": [
{
"id": 16,
"name": "xxx",
"content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDe5ETOTB5PcmcYJkIhfF7+mxmJQDCLg7/LnMoKHpKoo/jYUnFU9OjfsxVo3FTNUvh2475WXMAur5KsFoNKjK9+JHxvoXyJKmyVPWgXU/NRxQyaWPnPLPK8qPRF5ksJE6feBOqtsdxsvBiHs2r1NX/U26Ecnpr6avudD0cmyrEfbYMWbupLrhsd39dswPT73f3W5jc7B9Y47Ioiv8UOju3ABt1+kpuAjaaVC6VtUQoEFiZb1y33yBnyePya7dvFyApyD4ILyyIG2rtZWK7l53YFnwZDuFsTWjEEEQD0U4FBSFdH5wtwx0WQLMSNyTtaFBSG0kJ+uiQQIrxlvikcm63df7zbC3/rWLPsKgW122Zt966dcpFqiCiJNDKZPPw3qpg8TBL6X+qIZ+FxVEk/16/zScpyEfoxQp0GvgxI7hPLErmfkC5tMsib8MAXYBNyvJXna0vg/wOaNNIaI4SAH9Ksh3f/TtalYVjp6WxIwVBfnbq51WnmlnEXePtX6XjAGL+GbF2VQ1nv/IzrY09tNbTV6wQsrSIP3VDzYQxdJ1rdsVNMoJB0H2Pu0NdcSz53Wx45N+myD0QnE05ss+zDp5StY90OYsx2aCo6qAA8Qn2jUjdta7MQWwkPfKrta4tTQ0XbWMjx4/E1+l3J5liwZkl2XOGOwhfXdRsBjaEziZ18kQ== yystopf@163.com",
"fingerprint": "SHA256:cU8AK/+roqUUyiaYXIdS2Nj4+Rb2p6rqWSeRDc+aqKM",
"created_unix": 1626246596,
"created_time": "2021/07/14 15:09"
}
]
}
创建public_key
创建public_key
示例:
curl -X POST \
http://localhost:3000/api/public_keys.json
await octokit.request('POST /api/public_keys.json')
HTTP 请求
POST api/public_keys.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| key | 是 | 否 | string | 密钥 |
| title | 是 | 否 | string | 密钥标题 |
请求的JSON示例:
json { "public_key": { "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDe5ETOTB5PcmcYJkIhfF7+mxmJQDCLg7/LnMoKHpKoo/jYUnFU9OjfsxVo3FTNUvh2475WXMAur5KsFoNKjK9+JHxvoXyJKmyVPWgXU/NRxQyaWPnPLPK8qPRF5ksJE6feBOqtsdxsvBiHs2r1NX/U26Ecnpr6avudD0cmyrEfbYMWbupLrhsd39dswPT73f3W5jc7B9Y47Ioiv8UOju3ABt1+kpuAjaaVC6VtUQoEFiZb1y33yBnyePya7dvFyApyD4ILyyIG2rtZWK7l53YFnwZDuFsTWjEEEQD0U4FBSFdH5wtwx0WQLMSNyTtaFBSG0kJ+uiQQIrxlvikcm63df7zbC3/rWLPsKgW122Zt966dcpFqiCiJNDKZPPw3qpg8TBL6X+qIZ+FxVEk/16/zScpyEfoxQp0GvgxI7hPLErmfkC5tMsib8MAXYBNyvJXna0vg/wOaNNIaI4SAH9Ksh3f/TtalYVjp6WxIwVBfnbq51WnmlnEXePtX6XjAGL+GbF2VQ1nv/IzrY09tNbTV6wQsrSIP3VDzYQxdJ1rdsVNMoJB0H2Pu0NdcSz53Wx45N+myD0QnE05ss+zDp5StY90OYsx2aCo6qAA8Qn2jUjdta7MQWwkPfKrta4tTQ0XbWMjx4/E1+l3J5liwZkl2XOGOwhfXdRsBjaEziZ18kQ== yystopf@163.com", "title": "xxx" } }
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_count | int | 总数 |
| id | int | ID |
| name | string | 密钥标题 |
| content | string | 密钥内容 |
| fingerprint | string | 密钥标识 |
| created_time | string | 密钥创建时间 |
返回的JSON示例:
{
"id": 17,
"name": "xxx",
"content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDe5ETOTB5PcmcYJkIhfF7+mxmJQDCLg7/LnMoKHpKoo/jYUnFU9OjfsxVo3FTNUvh2475WXMAur5KsFoNKjK9+JHxvoXyJKmyVPWgXU/NRxQyaWPnPLPK8qPRF5ksJE6feBOqtsdxsvBiHs2r1NX/U26Ecnpr6avudD0cmyrEfbYMWbupLrhsd39dswPT73f3W5jc7B9Y47Ioiv8UOju3ABt1+kpuAjaaVC6VtUQoEFiZb1y33yBnyePya7dvFyApyD4ILyyIG2rtZWK7l53YFnwZDuFsTWjEEEQD0U4FBSFdH5wtwx0WQLMSNyTtaFBSG0kJ+uiQQIrxlvikcm63df7zbC3/rWLPsKgW122Zt966dcpFqiCiJNDKZPPw3qpg8TBL6X+qIZ+FxVEk/16/zScpyEfoxQp0GvgxI7hPLErmfkC5tMsib8MAXYBNyvJXna0vg/wOaNNIaI4SAH9Ksh3f/TtalYVjp6WxIwVBfnbq51WnmlnEXePtX6XjAGL+GbF2VQ1nv/IzrY09tNbTV6wQsrSIP3VDzYQxdJ1rdsVNMoJB0H2Pu0NdcSz53Wx45N+myD0QnE05ss+zDp5StY90OYsx2aCo6qAA8Qn2jUjdta7MQWwkPfKrta4tTQ0XbWMjx4/E1+l3J5liwZkl2XOGOwhfXdRsBjaEziZ18kQ== yystopf@163.com",
"fingerprint": "SHA256:cU8AK/+roqUUyiaYXIdS2Nj4+Rb2p6rqWSeRDc+aqKM",
"created_time": "2021/07/14 15:26"
}
删除public_key
删除public_key
示例:
curl -X DELETE \
http://localhost:3000/api/public_keys/:id.json
await octokit.request('DELETE /api/public_keys/:id.json')
HTTP 请求
DELETE api/public_keys/:id.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| id | 是 | 否 | int | 密钥ID |
返回的JSON示例:
{
"status": 0,
"message": "success"
}
Users
获取当前登陆用户信息
获取当前登陆用户信息
示例:
curl -X GET http://localhost:3000/api/users/me.json
await octokit.request('GET /api/users/me.json')
HTTP 请求
GET api/users/me.json
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| user_id | int | 用户id |
| username | string | 用户名称 |
| admin | boolean | 是否为管理用户 |
| login | string | 登录名 |
| image_url | string | 用户头像 |
返回的JSON示例:
{
"username": "username",
"login": "login",
"user_id": 100000,
"image_url": "avatars/User/b",
"admin": false
}
更改用户信息
更改用户信息
示例:
curl -X PATCH/PUT http://localhost:3000/api/users/yystopf.json
await octokit.request('PATCH/PUT /api/users/:login.json')
HTTP 请求
PATCH/PUT /api/users/:login.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| user.nickname | string | 用户昵称 |
| user.image | base64/file | 用户头像 |
| user.user_extension_attributes.gender | int | 性别, 0男 1女 |
| user.user_extension_attributes.province | string | 省份 |
| user.user_extension_attributes.city | string | 城市 |
| user.user_extension_attributes.description | string | 简介 |
| user.user_extension_attributes.custom_department | string | 单位名称 |
| user.user_extension_attributes.technical_title | string | 职业 |
| user.user_extension_attributes.show_email | bool | 是否展示邮箱 |
| user.user_extension_attributes.show_location | bool | 是否展示位置 |
| user.user_extension_attributes.show_department | bool | 是否展示公司 |
请求的JSON示例:
{
"user": {
"nickname": "xxx",
"user_extension_attributes": {
"gender": 0,
"province": "湖南",
"city": "长沙",
"description": "个性签名",
"custom_department": "湖南智擎科技有限公司",
}
}
}
返回的JSON示例:
{
"status": 0,
"message": "success"
}
获取用户星标项目
获取用户星标项目
示例:
curl -X GET http://localhost:3000/api/users/yystopf/is_pinned_projects.json
await octokit.request('GET /api/users/:login/is_pinned_projects.json')
HTTP 请求
GET api/users/:login/is_pinned_projects.json
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_count | int | 星标项目数量 |
| identifier | string | 项目标识 |
| name | string | 项目名称 |
| description | string | 项目描述 |
| visits | int | 项目访问数量 |
| praises_count | int | 项目点赞数量 |
| watchers_count | int | 项目关注数量 |
| issues_count | int | 项目issue数量 |
| pull_requests_count | int | 项目合并请求数量 |
| forked_count | int | 项目复刻数量 |
| is_public | bool | 项目是否公开 |
| mirror_url | string | 镜像地址 |
| type | int | 项目类型 0 普通项目 1 普通镜像项目 2 同步镜像项目 |
| time_ago | string | 上次更新时间 |
| open_devops | int | 是否开启devops |
| forked_from_project_id | int | fork项目id |
| platform | string | 项目平台 |
| author.name | string | 项目拥有者名称 |
| author.type | string | 项目拥有者类型 |
| author.login | string | 项目拥有者用户名 |
| author.image_url | string | 项目拥有者头像 |
| category.name | string | 项目分类名称 |
| language.name | string | 项目语言名称 |
| position | int | 项目排序 |
返回的JSON示例:
{
"total_count": 1,
"projects": [
{
"id": 89,
"repo_id": 89,
"identifier": "monkey",
"name": "boke",
"description": "dkkd",
"visits": 4,
"praises_count": 0,
"watchers_count": 0,
"issues_count": 0,
"pull_requests_count": 0,
"forked_count": 0,
"is_public": true,
"mirror_url": "https://github.com/viletyy/monkey.git",
"type": 1,
"last_update_time": 1619685144,
"time_ago": "27天前",
"forked_from_project_id": null,
"open_devops": false,
"platform": "forge",
"author": {
"name": "测试组织",
"type": "Organization",
"login": "ceshi_org",
"image_url": "images/avatars/Organization/9?t=1612706073"
},
"category": {
"id": 3,
"name": "深度学习"
},
"language": {
"id": 2,
"name": "C"
}
}
]
}
用户添加星标项目
用户添加星标项目
示例:
curl -X POST http://localhost:3000/api/users/yystopf/is_pinned_projects/pin.json
await octokit.request('GET /api/users/:login/is_pinned_projects/pin.json')
HTTP 请求
POST /api/users/:login/is_pinned_projects/pin.json
请求字段说明:
同时设定多个星标项目
| 参数 | 类型 | 字段说明 |
|---|---|---|
| is_pinned_project_ids | array | 设定为星标项目的id |
只设定一个星标项目
| 参数 | 类型 | 字段说明 |
|---|---|---|
| is_pinned_project_id | integer | 设定为星标项目的id |
返回的JSON示例:
{
"status": 0,
"message": "success"
}
星标项目展示排序
星标项目展示排序
示例:
curl -X PATCH http://localhost:3000/api/users/yystopf/is_pinned_projects/11.json
await octokit.request('PATCH/PUT /api/users/:login/is_pinned_projects/:id.json')
HTTP 请求
PATCH/PUT /api/users/:login/is_pinned_projects/:id.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| pinned_projects.position | int | 排序,数字越大排名越前 |
请求的JSON示例:
{
"pinned_project": {
"position": 1
}
}
返回的JSON示例:
{
"status": 0,
"message": "success"
}
用户近期活动统计
用户近期活动统计, 默认显示近一周的数据
示例:
curl -X GET http://localhost:3000/api/users/yystopf/statistics/activity.json
await octokit.request('GET /api/users/:login/statistics/activity.json')
HTTP 请求
GET /api/users/:login/statistics/activity.json
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| dates | array | 时间 |
| issues_count | array | 易修数量 |
| pull_requests_count | array | 合并请求数量 |
| commtis_count | array | 贡献数量 |
返回的JSON示例:
{
"dates": [
"2021.05.21",
"2021.05.22",
"2021.05.23",
"2021.05.24",
"2021.05.25",
"2021.05.26",
"2021.05.27",
"2021.05.28"
],
"issues_count": [
0,
0,
0,
0,
0,
0,
0,
0
],
"pull_requests_count": [
0,
0,
0,
0,
0,
0,
0,
0
],
"commits_count": [
0,
0,
0,
0,
0,
0,
0,
0
]
}
获取用户贡献度
获取用户贡献度
示例:
curl -X GET http://localhost:3000/api/users/yystopf/headmaps.json
await octokit.request('GET /api/users/:login/headmaps.json')
HTTP 请求
GET api/users/:login/headmaps.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| year | string | 年份 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_contributions | int | 所选时间内的总贡献度 |
| headmaps.date | string | 时间 |
| headmaps.contributions | int | 贡献度 |
返回的JSON示例:
{
"total_contributions": 139,
"headmaps": [
{
"date": "2021-02-07",
"contributions": 1
},
{
"date": "2021-02-21",
"contributions": 13
},
{
"date": "2021-02-25",
"contributions": 5
},
{
"date": "2021-03-01",
"contributions": 2
},
{
"date": "2021-03-04",
"contributions": 1
},
{
"date": "2021-03-15",
"contributions": 9
},
{
"date": "2021-03-22",
"contributions": 14
},
{
"date": "2021-03-24",
"contributions": 1
},
{
"date": "2021-03-30",
"contributions": 11
},
{
"date": "2021-04-06",
"contributions": 1
},
{
"date": "2021-04-12",
"contributions": 1
},
{
"date": "2021-04-13",
"contributions": 2
},
{
"date": "2021-04-19",
"contributions": 3
},
{
"date": "2021-04-23",
"contributions": 37
},
{
"date": "2021-04-25",
"contributions": 2
},
{
"date": "2021-04-26",
"contributions": 6
},
{
"date": "2021-04-28",
"contributions": 1
},
{
"date": "2021-04-29",
"contributions": 18
},
{
"date": "2021-04-30",
"contributions": 9
},
{
"date": "2021-05-04",
"contributions": 1
},
{
"date": "2021-05-06",
"contributions": 1
}
]
}
获取用户动态
获取用户动态
示例:
curl -X GET http://localhost:3000/api/users/yystopf/project_trends.json
await octokit.request('GET /api/users/:login/project_trends.json')
HTTP 请求
GET api/users/:login/project_trends.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| date | string | 日期,格式: 2021-05-28 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_count | int | 所选时间内的总动态数 |
| project_trends.trend_type | string | 动态类型,Issue:易修,VersionRelease:版本发布,PullRequest:合并请求 |
| project_trends.action_type | string | 操作类型 |
| project_trends.trend_id | integer | 动态id |
| project_trends.user_name | string | 用户名称 |
| project_trends.user_login | string | 用户用户名 |
| project_trends.user_avatar | string | 用户头像 |
| project_trends.action_time | string | 操作时间 |
| project_trends.name | string | 动态标题 |
返回的JSON示例:
{
"total_count": 16,
"project_trends": [
{
"id": 27,
"trend_type": "Issue",
"action_type": "创建了工单",
"trend_id": 18,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "21天前",
"name": "31213123123",
"issue_type": "1",
"status_id": 2,
"priority_id": 4,
"created_at": "2021-05-07 15:39",
"updated_at": "2021-05-27 15:42",
"assign_user_name": "yystopf",
"assign_user_login": "yystopf",
"issue_journal_size": 1,
"issue_journals": []
},
{
"id": 8,
"trend_type": "VersionRelease",
"action_type": "创建了版本发布",
"trend_id": 8,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "24天前",
"name": "heihei1",
"tag_name": "v1.0",
"target_commitish": "master",
"tarball_url": "http://localhost:10080/forgeceshiorg1/ceshi1/archive/v1.0.tar.gz",
"zipball_url": "http://localhost:10080/forgeceshiorg1/ceshi1/archive/v1.0.zip",
"url": "http://localhost:10080/api/v1/repos/forgeceshiorg1/ceshi1/releases/84",
"version_gid": "84",
"created_at": "2021-05-04 12:04"
},
{
"id": 25,
"trend_type": "PullRequest",
"action_type": "关闭了合并请求",
"trend_id": 14,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "28天前",
"name": "13",
"created_at": "2021-04-30 15:39"
},
{
"id": 24,
"trend_type": "PullRequest",
"action_type": "创建了合并请求",
"trend_id": 13,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "28天前",
"name": "211212",
"created_at": "2021-04-30 15:37"
},
{
"id": 23,
"trend_type": "PullRequest",
"action_type": "创建了合并请求",
"trend_id": 12,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "28天前",
"name": "奇偶哦iu",
"created_at": "2021-04-30 10:19"
},
{
"id": 22,
"trend_type": "PullRequest",
"action_type": "创建了合并请求",
"trend_id": 11,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "28天前",
"name": "2112123",
"created_at": "2021-04-29 18:46"
},
{
"id": 21,
"trend_type": "PullRequest",
"action_type": "关闭了合并请求",
"trend_id": 10,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "28天前",
"name": "23123",
"created_at": "2021-04-29 18:45"
},
{
"id": 20,
"trend_type": "PullRequest",
"action_type": "创建了合并请求",
"trend_id": 9,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "28天前",
"name": "33",
"created_at": "2021-04-29 18:37"
},
{
"id": 19,
"trend_type": "PullRequest",
"action_type": "关闭了合并请求",
"trend_id": 8,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "28天前",
"name": "gggg",
"created_at": "2021-04-29 17:51"
},
{
"id": 16,
"trend_type": "Issue",
"action_type": "创建了工单",
"trend_id": 8,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "1个月前",
"name": "hjhkj",
"issue_type": "1",
"status_id": 1,
"priority_id": 2,
"created_at": "2021-04-19 10:52",
"updated_at": "2021-04-19 10:52",
"assign_user_name": null,
"assign_user_login": null,
"issue_journal_size": 0,
"issue_journals": []
},
{
"id": 7,
"trend_type": "VersionRelease",
"action_type": "创建了版本发布",
"trend_id": 7,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "1个月前",
"name": "v3.0.1",
"tag_name": "v3.0.1",
"target_commitish": "master",
"tarball_url": "http://localhost:10080/yystopf/ceshirepo1/archive/v3.0.1.tar.gz",
"zipball_url": "http://localhost:10080/yystopf/ceshirepo1/archive/v3.0.1.zip",
"url": "http://localhost:10080/api/v1/repos/yystopf/ceshirepo1/releases/78",
"version_gid": "78",
"created_at": "2021-03-30 15:51"
},
{
"id": 6,
"trend_type": "VersionRelease",
"action_type": "创建了版本发布",
"trend_id": 6,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "1个月前",
"name": "v3.0.0",
"tag_name": "v3.0.0",
"target_commitish": "master",
"tarball_url": "http://localhost:10080/yystopf/ceshirepo1/archive/v3.0.0.tar.gz",
"zipball_url": "http://localhost:10080/yystopf/ceshirepo1/archive/v3.0.0.zip",
"url": "http://localhost:10080/api/v1/repos/yystopf/ceshirepo1/releases/77",
"version_gid": "77",
"created_at": "2021-03-30 15:33"
},
{
"id": 5,
"trend_type": "VersionRelease",
"action_type": "创建了版本发布",
"trend_id": 5,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "1个月前",
"name": "v1.0.0",
"tag_name": "v1.0.0",
"target_commitish": "master",
"tarball_url": "http://localhost:10080/yystopf/ceshirepo1/archive/v1.0.0.tar.gz",
"zipball_url": "http://localhost:10080/yystopf/ceshirepo1/archive/v1.0.0.zip",
"url": "http://localhost:10080/api/v1/repos/yystopf/ceshirepo1/releases/76",
"version_gid": "76",
"created_at": "2021-03-30 15:27"
},
{
"id": 2,
"trend_type": "VersionRelease",
"action_type": "创建了版本发布",
"trend_id": 2,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "2个月前",
"name": "vvvv",
"tag_name": "v1.1",
"target_commitish": "dev",
"tarball_url": "http://localhost:10080/yystopf/virus_blog/archive/v1.1.tar.gz",
"zipball_url": "http://localhost:10080/yystopf/virus_blog/archive/v1.1.zip",
"url": "http://localhost:10080/api/v1/repos/yystopf/virus_blog/releases/6",
"version_gid": "6",
"created_at": "2021-03-15 14:18"
},
{
"id": 2,
"trend_type": "PullRequest",
"action_type": "创建了合并请求",
"trend_id": 2,
"user_name": "yystopf",
"user_login": "yystopf",
"user_avatar": "system/lets/letter_avatars/2/Y/241_125_89/120.png",
"action_time": "3个月前",
"name": "444",
"created_at": "2021-02-25 17:31"
}
]
}
用户开发能力
用户开发能力, 默认为所有时间下的开发能力
示例:
curl -X GET http://localhost:3000/api/users/yystopf/statistics/develop.json
await octokit.request('GET /api/users/:login/statistics/develop.json')
HTTP 请求
GET /api/users/:login/statistics/develop.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| start_time | integer | 时间戳,开始时间,格式:1621526400 |
| end_time | integer | 时间戳,结束时间,格式:1622131200 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| influence | int | 影响力 |
| contribution | int | 贡献度 |
| activity | int | 活跃度 |
| experience | int | 项目经验 |
| language | int | 语言能力 |
| languages_percent | float | 语言百分比 |
| each_language_score | int | 各门语言分数 |
返回的JSON示例:
{
"platform": {
"influence": 61,
"contribution": 75,
"activity": 66,
"experience": 95,
"language": 87,
"languages_percent": {
"CSS": 0.03,
"C#": 0.13,
"Ruby": 0.04,
"Go": 0.05,
"C": 0.19,
"Java": 0.34,
"Python": 0.09,
"C+": 0.01,
"C++": 0.11,
"Scala": 0.01,
"HTML": 0.01
},
"each_language_score": {
"CSS": 71,
"C#": 86,
"Ruby": 75,
"Go": 77,
"C": 90,
"Java": 93,
"Python": 83,
"C+": 66,
"C++": 85,
"Scala": 66,
"HTML": 66
}
},
"user": {
"influence": 60,
"contribution": 72,
"activity": 65,
"experience": 88,
"language": 84,
"languages_percent": {
"C": 0.25,
"C#": 0.33,
"C++": 0.13,
"CSS": 0.08,
"Go": 0.04,
"HTML": 0.04,
"Java": 0.04,
"Ruby": 0.08
},
"each_language_score": {
"C": 81,
"C#": 84,
"C++": 75,
"CSS": 71,
"Go": 66,
"HTML": 66,
"Java": 66,
"Ruby": 71
}
}
}
用户角色定位
用户角色定位,默认显示所有时间下的角色定位数据
示例:
curl -X GET http://localhost:3000/api/users/yystopf/statistics/role.json
await octokit.request('GET /api/users/:login/statistics/role.json')
HTTP 请求
GET /api/users/:login/statistics/role.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| start_time | integer | 时间戳,开始时间,格式:1621526400 |
| end_time | integer | 时间戳,结束时间,格式:1622131200 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_projects_count | int | 用户所有的项目数量 |
| role.object.count | int | 用户该语言下的项目数量 |
| role.object.percent | float | 用户该语言下的项目占比 |
返回的JSON示例:
{
"total_projects_count": 27,
"role": {
"owner": {
"count": 24,
"percent": 0.89
},
"manager": {
"count": 1,
"percent": 0.04
},
"developer": {
"count": 2,
"percent": 0.07
},
"reporter": {
"count": 0,
"percent": 0.0
}
}
}
用户专业定位
用户专业定位,默认显示所有时间下的专业定位数据
示例:
curl -X GET http://localhost:3000/api/users/yystopf/statistics/major.json
await octokit.request('GET /api/users/:login/statistics/major.json')
HTTP 请求
GET /api/users/:login/statistics/major.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| start_time | integer | 时间戳,开始时间,格式:1621526400 |
| end_time | integer | 时间戳,结束时间,格式:1622131200 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| categories | int | 用户项目分类 |
返回的JSON示例:
{
"categories": [
"大数据",
"机器学习",
"深度学习",
"人工智能",
"智慧医疗",
"云计算"
]
}
待办事项-用户通知信息
待办事项-用户通知信息
示例:
curl -X GET http://localhost:3000/api/users/yystopf/applied_messages.json
await octokit.request('GET /api/users/:login/applied_messages.json')
HTTP 请求
GET /api/users/:login/applied_messages.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| login | string | 用户标识 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| applied | object | 通知主体 |
| applied.id | int | 通知主体的迁移id |
| applied.status | string | 通知主体的迁移状态,canceled:取消,common:正在迁移, accept:已接受,refuse:已拒绝 |
| applied.time_ago | string | 通知主体的迁移创建的时间 |
| applied.project.id | int | 通知主体的迁移项目的id |
| applied.project.identifier | string | 通知主体的迁移项目的标识 |
| applied.project.name | string | 通知主体的迁移项目的名称 |
| applied.project.description | string | 通知主体的迁移项目的描述 |
| applied.project.is_public | bool | 通知主体的迁移项目是否公开 |
| applied.project.owner.id | bool | 通知主体的迁移项目拥有者id |
| applied.project.owner.type | string | 通知主体的迁移项目拥有者类型 |
| applied.project.owner.name | string | 通知主体的迁移项目拥有者昵称 |
| applied.project.owner.login | string | 通知主体的迁移项目拥有者标识 |
| applied.project.owner.image_url | string | 通知主体的迁移项目拥有者头像 |
| applied.user.id | int | 通知主体的迁移创建者的id |
| applied.user.type | string | 通知主体的迁移创建者的类型 |
| applied.user.name | string | 通知主体的迁移创建者的名称 |
| applied.user.login | string | 通知主体的迁移创建者的标识 |
| applied.user.image_url | string | 通知主体的迁移创建者头像 |
| applied_user.id | int | 通知发起者的id |
| applied_user.type | string | 通知发起者的类型 |
| applied_user.name | string | 通知发起者的名称 |
| applied_user.login | string | 通知发起者的标识 |
| applied_user.image_url | string | 通知发起者头像 |
| applied_type | string | 通知类型 |
| name | string | 通知内容 |
| viewed | string | 是否已读,waiting:未读,viewed:已读 |
| status | string | 通知状态, canceled:已取消,common: 正常,successed:成功,failure:失败 |
| time_ago | string | 通知时间 |
返回的JSON示例:
{
"total_count": 5,
"applied_messages": [
{
"applied": {
"project": {
"id": 74,
"identifier": "hehuisssjssjjsjs",
"name": "hehuisssjssjjsjs",
"description": "wwww",
"is_public": false,
"owner": {
"id": 10,
"type": "User",
"name": "testforge1",
"login": "testforge1",
"image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
}
},
"user": {
"id": 6,
"type": "User",
"name": "何慧",
"login": "yystopf",
"image_url": "images/avatars/User/6?t=1622513134"
},
"id": 6,
"status": "accepted",
"created_at": "2021-06-09 16:34",
"time_ago": "1分钟前"
},
"applied_user": {
"id": 6,
"type": "User",
"name": "何慧",
"login": "yystopf",
"image_url": "images/avatars/User/6?t=1622513134"
},
"applied_type": "AppliedProject",
"name": "已通过你加入【hehuisssjssjjsjs】仓库的申请。",
"viewed": "waiting",
"status": "successed",
"created_at": "2021-06-09 16:34",
"time_ago": "1分钟前"
},
{
"applied": {
"project": {
"id": 86,
"identifier": "ceshi_repo1",
"name": "测试项目啊1",
"description": "二十多",
"is_public": true,
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
}
},
"user": {
"id": 6,
"type": "User",
"name": "yystopf",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
},
"owner": {
"id": 9,
"type": "Organization",
"name": "测试组织",
"login": "ceshi_org",
"image_url": "images/avatars/Organization/9?t=1612706073"
},
"id": 4,
"status": "common",
"created_at": "2021-04-26 09:54",
"time_ago": "35分钟前"
},
"applied_user": {
"id": 6,
"type": "User",
"name": "yystopf",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
},
"applied_type": "AppliedTransferProject",
"name": "正在将【测试项目啊1】仓库转移给【测试组织】",
"viewed": "viewed",
"status": "common",
"created_at": "2021-04-26 09:54",
"time_ago": "35分钟前"
},
...
]
}
待办事项-接受仓库
待办事项-接受仓库
示例:
curl -X GET http://localhost:3000/api/users/yystopf/applied_transfer_projects.json
await octokit.request('GET /api/users/:login/applied_transfer_projects.json')
HTTP 请求
GET /api/users/:login/applied_transfer_projects.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| login | string | 用户标识 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 迁移id |
| status | string | 迁移状态,canceled:取消,common:正在迁移, accept:已接受,refuse:已拒绝 |
| time_ago | string | 迁移创建的时间 |
| project.id | int | 迁移项目的id |
| project.identifier | string | 迁移项目的标识 |
| project.name | string | 迁移项目的名称 |
| project.description | string | 迁移项目的描述 |
| project.is_public | bool | 迁移项目是否公开 |
| project.owner.id | bool | 迁移项目拥有者id |
| project.owner.type | string | 迁移项目拥有者类型 |
| project.owner.name | string | 迁移项目拥有者昵称 |
| project.owner.login | string | 迁移项目拥有者标识 |
| project.owner.image_url | string | 迁移项目拥有者头像 |
| user.id | int | 迁移创建者的id |
| user.type | string | 迁移创建者的类型 |
| user.name | string | 迁移创建者的名称 |
| user.login | string | 迁移创建者的标识 |
| user.image_url | string | 迁移创建者头像 |
| owner.id | int | 迁移接受者的id |
| owner.type | string | 迁移接受者的类型 |
| owner.name | string | 迁移接受者的名称 |
| owner.login | string | 迁移接受者的标识 |
| owner.image_url | string | 迁移接受者头像 |
返回的JSON示例:
{
"total_count": 4,
"applied_transfer_projects": [
{
"project": {
"id": 86,
"identifier": "ceshi_repo1",
"name": "测试项目啊1",
"description": "二十多",
"is_public": true,
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
}
},
"user": {
"id": 6,
"type": "User",
"name": "yystopf",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
},
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
},
"id": 1,
"status": "canceled",
"created_at": "2021-04-25 18:06",
"time_ago": "16小时前"
},
...
]
}
用户接受迁移
用户接受迁移
示例:
curl -X POST http://localhost:3000/api/users/yystopf/applied_transfer_projects/2/accept.json
await octokit.request('GET /api/users/:login/applied_transfer_projects/:id/accept.json')
HTTP 请求
GET /api/users/:login/applied_transfer_projects/:id/accept.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| login | string | 用户标识 |
| id | int | 迁移id |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 迁移id |
| status | string | 迁移状态,canceled:取消,common:正在迁移, accept:已接受,refuse:已拒绝 |
| time_ago | string | 迁移创建的时间 |
| project.id | int | 迁移项目的id |
| project.identifier | string | 迁移项目的标识 |
| project.name | string | 迁移项目的名称 |
| project.description | string | 迁移项目的描述 |
| project.is_public | bool | 迁移项目是否公开 |
| project.owner.id | bool | 迁移项目拥有者id |
| project.owner.type | string | 迁移项目拥有者类型 |
| project.owner.name | string | 迁移项目拥有者昵称 |
| project.owner.login | string | 迁移项目拥有者标识 |
| project.owner.image_url | string | 迁移项目拥有者头像 |
| user.id | int | 迁移创建者的id |
| user.type | string | 迁移创建者的类型 |
| user.name | string | 迁移创建者的名称 |
| user.login | string | 迁移创建者的标识 |
| user.image_url | string | 迁移创建者头像 |
| owner.id | int | 迁移接受者的id |
| owner.type | string | 迁移接受者的类型 |
| owner.name | string | 迁移接受者的名称 |
| owner.login | string | 迁移接受者的标识 |
| owner.image_url | string | 迁移接受者头像 |
返回的JSON示例:
{
"project": {
"id": 86,
"identifier": "ceshi_repo1",
"name": "测试项目啊1",
"description": "二十多",
"is_public": true,
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
}
},
"user": {
"id": 6,
"type": "User",
"name": "yystopf",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
},
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
},
"id": 1,
"status": "canceled",
"created_at": "2021-04-25 18:06",
"time_ago": "16小时前"
}
用户拒绝迁移
用户拒绝迁移
示例:
curl -X POST http://localhost:3000/api/users/yystopf/applied_transfer_projects/2/refuse.json
await octokit.request('GET /api/users/:login/applied_transfer_projects/:id/refuse.json')
HTTP 请求
GET /api/users/:login/applied_transfer_projects/:id/refuse.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| login | string | 用户标识 |
| id | int | 迁移id |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 迁移id |
| status | string | 迁移状态,canceled:取消,common:正在迁移, accept:已接受,refuse:已拒绝 |
| time_ago | string | 迁移创建的时间 |
| project.id | int | 迁移项目的id |
| project.identifier | string | 迁移项目的标识 |
| project.name | string | 迁移项目的名称 |
| project.description | string | 迁移项目的描述 |
| project.is_public | bool | 迁移项目是否公开 |
| project.owner.id | bool | 迁移项目拥有者id |
| project.owner.type | string | 迁移项目拥有者类型 |
| project.owner.name | string | 迁移项目拥有者昵称 |
| project.owner.login | string | 迁移项目拥有者标识 |
| project.owner.image_url | string | 迁移项目拥有者头像 |
| user.id | int | 迁移创建者的id |
| user.type | string | 迁移创建者的类型 |
| user.name | string | 迁移创建者的名称 |
| user.login | string | 迁移创建者的标识 |
| user.image_url | string | 迁移创建者头像 |
| owner.id | int | 迁移接受者的id |
| owner.type | string | 迁移接受者的类型 |
| owner.name | string | 迁移接受者的名称 |
| owner.login | string | 迁移接受者的标识 |
| owner.image_url | string | 迁移接受者头像 |
返回的JSON示例:
{
"project": {
"id": 86,
"identifier": "ceshi_repo1",
"name": "测试项目啊1",
"description": "二十多",
"is_public": true,
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
}
},
"user": {
"id": 6,
"type": "User",
"name": "yystopf",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
},
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
},
"id": 1,
"status": "canceled",
"created_at": "2021-04-25 18:06",
"time_ago": "16小时前"
}
待办事项-项目申请
待办事项-项目申请
示例:
curl -X GET http://localhost:3000/api/users/yystopf/applied_projects.json
await octokit.request('GET /api/users/:login/applied_projects.json')
HTTP 请求
GET /api/users/:login/applied_projects.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| login | string | 用户标识 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 申请id |
| status | string | 申请状态,canceled:取消,common:正在申请, accept:已接受,refuse:已拒绝 |
| time_ago | string | 申请创建的时间 |
| project.id | int | 申请项目的id |
| project.identifier | string | 申请项目的标识 |
| project.name | string | 申请项目的名称 |
| project.description | string | 申请项目的描述 |
| project.is_public | bool | 申请项目是否公开 |
| project.owner.id | bool | 申请项目拥有者id |
| project.owner.type | string | 申请项目拥有者类型 |
| project.owner.name | string | 申请项目拥有者昵称 |
| project.owner.login | string | 申请项目拥有者标识 |
| project.owner.image_url | string | 申请项目拥有者头像 |
| user.id | int | 申请创建者的id |
| user.type | string | 申请创建者的类型 |
| user.name | string | 申请创建者的名称 |
| user.login | string | 申请创建者的标识 |
| user.image_url | string | 申请创建者头像 |
返回的JSON示例:
{
"total_count": 4,
"applied_transfer_projects": [
{
"project": {
"id": 74,
"identifier": "hehuisssjssjjsjs",
"name": "hehuisssjssjjsjs",
"description": "wwww",
"is_public": false,
"owner": {
"id": 10,
"type": "User",
"name": "testforge1",
"login": "testforge1",
"image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
}
},
"user": {
"id": 6,
"type": "User",
"name": "何慧",
"login": "yystopf",
"image_url": "images/avatars/User/6?t=1622513134"
},
"id": 7,
"status": "common",
"created_at": "2021-06-09 16:41",
"time_ago": "7分钟前"
},
...
]
}
用户接受申请
用户接受申请
示例:
curl -X POST http://localhost:3000/api/users/yystopf/applied_projects/2/accept.json
await octokit.request('GET /api/users/:login/applied_projects/:id/accept.json')
HTTP 请求
GET /api/users/:login/applied_projects/:id/accept.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| login | string | 用户标识 |
| id | int | 申请id |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 申请id |
| status | string | 申请状态,canceled:取消,common:正在申请, accept:已接受,refuse:已拒绝 |
| time_ago | string | 申请创建的时间 |
| project.id | int | 申请项目的id |
| project.identifier | string | 申请项目的标识 |
| project.name | string | 申请项目的名称 |
| project.description | string | 申请项目的描述 |
| project.is_public | bool | 申请项目是否公开 |
| project.owner.id | bool | 申请项目拥有者id |
| project.owner.type | string | 申请项目拥有者类型 |
| project.owner.name | string | 申请项目拥有者昵称 |
| project.owner.login | string | 申请项目拥有者标识 |
| project.owner.image_url | string | 申请项目拥有者头像 |
| user.id | int | 申请创建者的id |
| user.type | string | 申请创建者的类型 |
| user.name | string | 申请创建者的名称 |
| user.login | string | 申请创建者的标识 |
| user.image_url | string | 申请创建者头像 |
返回的JSON示例:
{
"project": {
"id": 74,
"identifier": "hehuisssjssjjsjs",
"name": "hehuisssjssjjsjs",
"description": "wwww",
"is_public": false,
"owner": {
"id": 10,
"type": "User",
"name": "testforge1",
"login": "testforge1",
"image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
}
},
"user": {
"id": 6,
"type": "User",
"name": "何慧",
"login": "yystopf",
"image_url": "images/avatars/User/6?t=1622513134"
},
"id": 7,
"status": "accept",
"created_at": "2021-06-09 16:41",
"time_ago": "7分钟前"
}
用户拒绝申请
用户拒绝申请
示例:
curl -X POST http://localhost:3000/api/users/yystopf/applied_projects/2/refuse.json
await octokit.request('GET /api/users/:login/applied_projects/:id/refuse.json')
HTTP 请求
GET /api/users/:login/applied_projects/:id/refuse.json
请求字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| login | string | 用户标识 |
| id | int | 申请id |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 申请id |
| status | string | 申请状态,canceled:取消,common:正在申请, accept:已接受,refuse:已拒绝 |
| time_ago | string | 申请创建的时间 |
| project.id | int | 申请项目的id |
| project.identifier | string | 申请项目的标识 |
| project.name | string | 申请项目的名称 |
| project.description | string | 申请项目的描述 |
| project.is_public | bool | 申请项目是否公开 |
| project.owner.id | bool | 申请项目拥有者id |
| project.owner.type | string | 申请项目拥有者类型 |
| project.owner.name | string | 申请项目拥有者昵称 |
| project.owner.login | string | 申请项目拥有者标识 |
| project.owner.image_url | string | 申请项目拥有者头像 |
| user.id | int | 申请创建者的id |
| user.type | string | 申请创建者的类型 |
| user.name | string | 申请创建者的名称 |
| user.login | string | 申请创建者的标识 |
| user.image_url | string | 申请创建者头像 |
返回的JSON示例:
{
"project": {
"id": 74,
"identifier": "hehuisssjssjjsjs",
"name": "hehuisssjssjjsjs",
"description": "wwww",
"is_public": false,
"owner": {
"id": 10,
"type": "User",
"name": "testforge1",
"login": "testforge1",
"image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
}
},
"user": {
"id": 6,
"type": "User",
"name": "何慧",
"login": "yystopf",
"image_url": "images/avatars/User/6?t=1622513134"
},
"id": 7,
"status": "accept",
"created_at": "2021-06-09 16:41",
"time_ago": "7分钟前"
}
Projects
申请加入项目
申请加入项目
示例:
curl -X POST http://localhost:3000/api/applied_projects.json
await octokit.request('POST /api/appliedr_projects.json')
HTTP 请求
POST /api/applied_projects.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| applied_project.code | 是 | string | 邀请码 | |
| applied_project.role | 否 | string | 项目权限,reporter: 报告者, developer: 开发者,manager:管理员 |
请求的JSON示例
{
"applied_project": {
"code": "1una34",
"role": "developer"
}
}
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 申请id |
| status | string | 申请状态,canceled:取消,common:正在申请, accept:已接受,refuse:已拒绝 |
| time_ago | string | 项目申请创建的时间 |
| project.id | int | 申请项目的id |
| project.identifier | string | 申请项目的标识 |
| project.name | string | 申请项目的名称 |
| project.description | string | 申请项目的描述 |
| project.is_public | bool | 申请项目是否公开 |
| project.owner.id | bool | 申请项目拥有者id |
| project.owner.type | string | 申请项目拥有者类型 |
| project.owner.name | string | 申请项目拥有者昵称 |
| project.owner.login | string | 申请项目拥有者标识 |
| project.owner.image_url | string | 申请项目拥有者头像 |
| user.id | int | 申请创建者的id |
| user.type | string | 申请创建者的类型 |
| user.name | string | 申请创建者的名称 |
| user.login | string | 申请创建者的标识 |
| user.image_url | string | 申请创建者头像 |
返回的JSON示例:
{
"project": {
"id": 74,
"identifier": "hehuisssjssjjsjs",
"name": "hehuisssjssjjsjs",
"description": "wwww",
"is_public": false,
"owner": {
"id": 10,
"type": "User",
"name": "testforge1",
"login": "testforge1",
"image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
}
},
"user": {
"id": 6,
"type": "User",
"name": "何慧",
"login": "yystopf",
"image_url": "images/avatars/User/6?t=1622513134"
},
"id": 7,
"status": "common",
"created_at": "2021-06-09 16:41",
"time_ago": "1分钟前"
}
获取项目列表
获取项目列表,也可以更加相关条件过滤搜素
示例:
curl -X GET \
-d "page=1" \
-d "limit=5" \
http://localhost:3000/api/projects | jq
await octokit.request('GET /api/projects')
HTTP 请求
GET api/projects
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| page | false | 1 | string | 页数,第几页 |
| limit | false | 15 | string | 每页多少条数据,默认15条 |
| sort_by | false | string | 排序类型, 取值:updated_on、created_on、forked_count、praises_count; updated_on: 更新时间排序,created_on: 创建时间排序,forked_count: fork数据排序,praises_count: 点赞数量排序,默认为updated_on更新时间排序 | |
| sort_direction | false | string | 排序方式,取值为: desc、asc; desc: 降序排序, asc: 升序排序, 默认为:desc | |
| search | false | string | 按照项目名称搜索 | |
| category_id | false | int | 项目类别id | |
| language_id | false | int | 项目语言id | |
| project_type | false | string | 项目类型, 取值为:common、mirror; common:开源托管项目, mirror:开源镜像项目 |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_count | int | 项目总条数 |
| id | string | 项目id |
| name | string | 项目名称 |
| description | string | 项目简介 |
| visits | int | 流量数 |
| forked_count | int | 被fork的数量 |
| praises_count | int | star数量 |
| is_public | boolean | 是否公开, true:公开,false:未公开 |
| mirror_url | string | 镜像url |
| last_update_time | int | 最后更新时间,为UNIX格式的时间戳 |
| author | object | 项目创建者 |
| -- name | string | 用户名,也是用户标识 |
| category | object | 项目类别 |
| -- id | int | 项目类型id |
| -- name | string | 项目类型名称 |
| language | object | 项目语言 |
| -- id | int | 项目语言id |
| -- name | string | 项目语言名称 |
返回的JSON示例:
{
"total_count": 3096,
"projects": [
{
"id": 1400794,
"repo_id": 1402452,
"identifier": "cscw_2021_sponsor",
"name": "Sponsor机制下的开源贡献",
"description": "CSCW 2021 sponsor机制研究",
"visits": 5,
"praises_count": 0,
"forked_count": 0,
"is_public": true,
"mirror_url": null,
"type": 0,
"last_update_time": 1611971671,
"time_ago": "2天前",
"forked_from_project_id": null,
"open_devops": false,
"platform": "forge",
"author": {
"name": "张迅晖",
"login": "Nigel",
"image_url": "images/avatars/User/3675?t=1611832880"
},
"category": {
"id": 13,
"name": "云计算和大数据"
},
"language": {
"id": 34,
"name": "Python3.6"
}
}
]
}
推荐项目
获取推荐项目列表
示例:
curl -X GET \
http://localhost:3000/api/projects/recommend | jq
await octokit.request('GET /api/projects/recommend.json')
HTTP 请求
GET api/projects/recommend
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_count | int | 项目总条数 |
| id | string | 项目id |
| name | string | 项目名称 |
| description | string | 项目简介 |
| visits | int | 流量数 |
| forked_count | int | 被fork的数量 |
| praises_count | int | star数量 |
| is_public | boolean | 是否公开, true:公开,false:未公开 |
| mirror_url | string | 镜像url |
| last_update_time | int | 最后更新时间,为UNIX格式的时间戳 |
| author | object | 项目创建者 |
| -- name | string | 用户名,也是用户标识 |
| category | object | 项目类别 |
| -- id | int | 项目类型id |
| -- name | string | 项目类型名称 |
| language | object | 项目语言 |
| -- id | int | 项目语言id |
| -- name | string | 项目语言名称 |
返回的JSON示例:
[
{
"id": 20,
"repo_id": 2,
"identifier": "PNAekinmH",
"name": "FNILL",
"visits": 13567,
"author": {
"name": "王一达",
"login": "wangyida",
"image_url": "avatars/User/b"
},
"category": {
"id": 8,
"name": "其他"
}
}
]
项目导航
获取项目导航信息
示例:
curl -X GET \
http://localhost:3000/api/yystopf/ceshi/menu_list | jq
await octokit.request('GET /api/yystopf/ceshi/menu_list')
HTTP 请求
GET api/:owner/:repo/menu_list
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| menu_name | string | 导航名称, home:主页,code:代码库,issues:易修,pulls:合并请求,devops:工作流,versions:里程碑,activity:动态,setting:仓库设置 |
返回的JSON示例:
[
{
"menu_name": "home"
},
{
"menu_name": "code"
},
{
"menu_name": "pulls"
},
{
"menu_name": "activity"
}
]
项目主页
获取项目主页信息
示例:
curl -X GET \
http://localhost:3000/api/jasder/forgeplus/about | jq
await octokit.request('GET /api/jasder/forgeplus/about')
HTTP 请求
GET api/:owner/:repo/about
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| identifier | string | project's identifier |
| content | string | 主页内容 |
| attachments | array | 附件 |
返回的JSON示例:
{
"content": "",
"identifier": "forgeplus",
attachments: []
}
项目模块信息
项目模块信息
示例:
curl -X GET \
http://localhost:3000/api/yystopf/ceshi/project_units.json
await octokit.request('GET /api/yystopf/ceshi/project_units')
HTTP 请求
GET /api/yystopf/ceshi/project_units
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| type | string | 模块名称 |
返回的JSON示例:
[
{
"type": "code"
},
{
"type": "pulls"
},
{
"type": "issues"
}
]
更改项目模块展示
更改项目模块展示
示例:
curl -X POST \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{ \"unit_typs\": [\"code\", \"pulls\"]}" \
http://localhost:3000/api/yystopf/ceshi/project_units.json
await octokit.request('POST /api/yystopf/ceshi/project_units')
HTTP 请求
POST /api/yystopf/ceshi/project_units
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| unit_types | 是 | array | 项目模块内容, 支持以下参数:code:代码库,issues:易修,pulls:合并请求,devops:工作流,versions:里程碑 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| status | int | 返回状态, 0: 表示操作成功 |
| message | string | 返回信息说明 |
返回的JSON示例:
{
"status": 0,
"message": "success"
}
创建项目
创建项目
示例:
curl -X POST \
-d "user_id=36401" \
-d "name=hnfl_demo" \
-d "description=my first project" \
-d "repository_name=hnfl_demo" \
-d "project_category_id=1" \
-d "project_language_id=2" \
-d "ignore_id=2" \
-d "license_id=1" \
http://localhost:3000/api/projects.json
await octokit.request('GET /api/projects.json')
HTTP 请求
POST api/projects
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| user_id | 是 | int | 用户id或者组织id | |
| name | 是 | string | 项目名称 | |
| description | 是 | string | 项目描述 | |
| repository_name | 是 | string | 仓库名称, 只含有数字、字母、下划线不能以下划线开头和结尾,且唯一 | |
| project_category_id | 是 | int | 项目类别id | |
| project_language_id | 是 | int | 项目语言id | |
| ignore_id | 否 | int | gitignore相关id | |
| license_id | 否 | int | 开源许可证id | |
| private | 否 | boolean | 项目是否私有, true:为私有,false: 公开,默认为公开 |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| name | string | 项目名称 |
返回的JSON示例:
{
"id": 3240,
"name": "好项目"
}
创建镜像项目
创建镜像项目
示例:
curl -X POST \
-d "user_id=36408" \
-d "clone_addr=https://gitea.com/mx8090alex/golden.git" \
-d "name=golden_mirror1" \
-d "description=golden_mirror" \
-d "project_category_id=1" \
-d "project_language_id=2" \
http://localhost:3000/api/projects/migrate.json
await octokit.request('GET /api/projects/migrate.json')
HTTP 请求
POST api/projects/migrate.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| user_id | 是 | int | 用户id或者组织id | |
| name | 是 | string | 项目名称 | |
| clone_addr | 是 | string | 镜像项目clone地址 | |
| description | 否 | string | 项目描述 | |
| repository_name | 是 | string | 仓库名称, 只含有数字、字母、下划线不能以下划线开头和结尾,且唯一 | |
| project_category_id | 是 | int | 项目类别id | |
| project_language_id | 是 | int | 项目语言id | |
| is_mirror | 否 | boolean | 是否设置为镜像, true:是, false:否,默认为否 | |
| auth_username | 否 | string | 镜像源仓库的登录用户名 | |
| auth_password | 否 | string | 镜像源仓库的登录秘密 | |
| private | 否 | boolean | 项目是否私有, true:为私有,false: 非私有,默认为公开 |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| name | string | 项目名称 |
返回的JSON示例:
{
"id": 3241,
"name": "这是一个镜像项目"
}
同步镜像
手动同步镜像
示例:
curl -X POST http://localhost:3000/api/repositories/1244/sync_mirror.json
await octokit.request('POST /api/repositories/1244/sync_mirror.json')
HTTP 请求
POST api/repositories/:id/sync_mirror.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| id | 是 | int | 仓库id |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| status | int | 状态码, 0:标识请求成功 |
| message | string | 服务端返回的信息说明 |
返回的JSON示例:
{
"status": 0,
"message": "success"
}
Fork项目
fork项目
示例:
curl -X POST http://localhost:3000/api/jasder/forgeplus/forks.json
await octokit.request('POST /api/jaser/jasder_test/forks.json')
HTTP 请求
POST api/:owner/:repo/forks.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 项目id |
| identifier | string | 项目标识 |
返回的JSON示例:
{
"id": 3290,
"identifier": "newadm"
}
用户管理的组织列表
用户管理的组织列表
示例:
curl -X GET \
http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizations.json | jq
await octokit.request('GET /api/:owner/:repo/applied_transfer_projects/organizations')
HTTP 请求
GET api/:owner/:repo/applied_transfer_projects/organizations
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| name | string | 组织标识 |
| nickname | string | 组织名称 |
| description | string | 组织描述 |
| avatar_url | string|组织头像 |
返回的JSON示例:
{
"total_count": 3,
"organizations": [
{
"id": 9,
"name": "ceshi_org",
"nickname": "测试组织",
"description": "测试组织",
"avatar_url": "images/avatars/Organization/9?t=1612706073"
},
{
"id": 51,
"name": "ceshi",
"nickname": "测试组织哈哈哈",
"description": "23212312",
"avatar_url": "images/avatars/Organization/51?t=1618800723"
},
{
"id": 52,
"name": "ceshi1",
"nickname": "身份卡手动阀",
"description": "1231手动阀是的",
"avatar_url": "images/avatars/Organization/52?t=1618805056"
}
]
}
迁移项目
迁移项目,edit接口is_transfering为true表示正在迁移
示例:
curl -X POST http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects.json
await octokit.request('POST /api/:owner/:repo/applied_transfer_projects.json')
HTTP 请求
POST /api/:owner/:repo/applied_transfer_projects.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| owner_name | 是 | string | 迁移对象标识 |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 项目id |
| status | string | 项目迁移状态,canceled:取消,common:正在迁移, accept:已接受,refuse:已拒绝 |
| time_ago | string | 项目迁移创建的时间 |
| project.id | int | 迁移项目的id |
| project.identifier | string | 迁移项目的标识 |
| project.name | string | 迁移项目的名称 |
| project.description | string | 迁移项目的描述 |
| project.is_public | bool | 迁移项目是否公开 |
| project.owner.id | bool | 迁移项目拥有者id |
| project.owner.type | string | 迁移项目拥有者类型 |
| project.owner.name | string | 迁移项目拥有者昵称 |
| project.owner.login | string | 迁移项目拥有者标识 |
| project.owner.image_url | string | 迁移项目拥有者头像 |
| user.id | int | 迁移创建者的id |
| user.type | string | 迁移创建者的类型 |
| user.name | string | 迁移创建者的名称 |
| user.login | string | 迁移创建者的标识 |
| user.image_url | string | 迁移创建者头像 |
| owner.id | int | 迁移接受者的id |
| owner.type | string | 迁移接受者的类型 |
| owner.name | string | 迁移接受者的名称 |
| owner.login | string | 迁移接受者的标识 |
| owner.image_url | string | 迁移接受者头像 |
返回的JSON示例:
{
"project": {
"id": 86,
"identifier": "ceshi_repo1",
"name": "测试项目啊1",
"description": "二十多",
"is_public": true,
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
}
},
"user": {
"id": 6,
"type": "User",
"name": "yystopf",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
},
"owner": {
"id": 9,
"type": "Organization",
"name": "测试组织",
"login": "ceshi_org",
"image_url": "images/avatars/Organization/9?t=1612706073"
},
"id": 4,
"status": "common",
"created_at": "2021-04-26 09:54",
"time_ago": "1分钟前"
}
取消迁移项目
迁移项目,edit接口is_transfering为true表示正在迁移
示例:
curl -X POST http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/cancel.json
await octokit.request('POST /api/:owner/:repo/applied_transfer_projects/cancel.json')
HTTP 请求
POST /api/:owner/:repo/applied_transfer_projects/cancel.json
请求参数
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | 迁移id |
| status | string | 迁移状态,canceled:取消,common:正在迁移, accept:已接受,refuse:已拒绝 |
| time_ago | string | 迁移创建的时间 |
| project.id | int | 迁移项目的id |
| project.identifier | string | 迁移项目的标识 |
| project.name | string | 迁移项目的名称 |
| project.description | string | 迁移项目的描述 |
| project.is_public | bool | 迁移项目是否公开 |
| project.owner.id | bool | 迁移项目拥有者id |
| project.owner.type | string | 迁移项目拥有者类型 |
| project.owner.name | string | 迁移项目拥有者昵称 |
| project.owner.login | string | 迁移项目拥有者标识 |
| project.owner.image_url | string | 迁移项目拥有者头像 |
| user.id | int | 迁移创建者的id |
| user.type | string | 迁移创建者的类型 |
| user.name | string | 迁移创建者的名称 |
| user.login | string | 迁移创建者的标识 |
| user.image_url | string | 迁移创建者头像 |
| owner.id | int | 迁移接受者的id |
| owner.type | string | 迁移接受者的类型 |
| owner.name | string | 迁移接受者的名称 |
| owner.login | string | 迁移接受者的标识 |
| owner.image_url | string | 迁移接受者头像 |
返回的JSON示例:
{
"project": {
"id": 86,
"identifier": "ceshi_repo1",
"name": "测试项目啊1",
"description": "二十多",
"is_public": true,
"owner": {
"id": 52,
"type": "Organization",
"name": "身份卡手动阀",
"login": "ceshi1",
"image_url": "images/avatars/Organization/52?t=1618805056"
}
},
"user": {
"id": 6,
"type": "User",
"name": "yystopf",
"login": "yystopf",
"image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
},
"owner": {
"id": 9,
"type": "Organization",
"name": "测试组织",
"login": "ceshi_org",
"image_url": "images/avatars/Organization/9?t=1612706073"
},
"id": 4,
"status": "common",
"created_at": "2021-04-26 09:54",
"time_ago": "1分钟前"
}
Repositories
仓库详情
仓库详情
示例:
curl -X GET http://localhost:3000/api/jasder/jasder_test.json
await octokit.request('GET /api/jasder/jasder_test.json')
HTTP 请求
GET /api/:owner/:repo
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| name | string | 项目名称 |
| identifier | string | 项目标识 |
| is_public | boolean | 项目是否公开, true:公开,false:私有 |
| description | string | 项目简介 |
| repo_id | int | 仓库id |
| repo_identifier | string | 仓库标识 |
返回的JSON示例:
{
"name": "ni项目",
"identifier": "mirror_demo",
"is_public": true,
"description": "my first project mirror_demo",
"repo_id": 75073,
"repo_identifier": "mirror_demo"
}
仓库详情(简版)
仓库详情
示例:
curl -X GET http://localhost:3000/api/jasder/jasder_test/simple.json
await octokit.request('GET /api/jasder/jasder_test/simple.json')
HTTP 请求
GET /api/:owner/:repo/simple
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| name | string | 项目名称 |
| identifier | string | 项目标识 |
| is_public | boolean | 项目是否公开, true:公开,false:私有 |
| description | string | 项目简介 |
| repo_id | int | 仓库id |
| repo_identifier | string | 仓库标识 |
返回的JSON示例:
{
"name": "ni项目",
"identifier": "mirror_demo",
"is_public": true,
"description": "my first project mirror_demo",
"repo_id": 75073,
"repo_identifier": "mirror_demo"
}
仓库详情(新版)
仓库详情
示例:
curl -X GET http://localhost:3000/api/yystopf/ceshi/detail.json
await octokit.request('GET /api/yystopf/ceshi/detail.json')
HTTP 请求
GET /api/:owner/:repo/detail
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| content | string | 仓库简介 |
| website | string | 仓库网址 |
| readme | string | readme文件| |
| identifier | string | 项目标识 |
| name | string | 项目名称 |
| issues_count | int | 项目issue数量 |
| pull_requests_count | int | 项目合并请求数量 |
| project_identifier | int | 项目标识 |
| praises_count | int | 项目点赞数量 |
| forked_count | int | 项目复刻数量 |
| watchers_count | int | 项目关注数量 |
| versions_count | int | 项目里程碑数量 |
| version_releases_count | int | 项目发行版数量 |
| version_releasesed_count | int | 项目发行版已发行数量 |
| permission | string | 项目权限 |
| mirror_url | string | 镜像地址 |
| mirror | bool | 是否为镜像项目 |
| type | int | 项目类型 0 普通项目 1 普通镜像项目 2 同步镜像项目 |
| open_devops | int | 是否开启devops |
| watched | bool | 是否关注 |
| praised | bool | 是否点赞 |
| status | int | 项目状态 |
| forked_from_project_id | int | fork项目id |
| fork_info | object | fork项目信息 |
| size | string | 仓库大小 |
| ssh_url | string | 项目ssh地址 |
| clone_url | string | 项目克隆地址 |
| default_branch | string | 仓库默认分支 |
| empty | bool | 仓库是否为空 |
| full_name | string | 仓库全称 |
| private | bool | 仓库是否为私有项目 |
| license_name | string | 许可证名称 |
| release_versions.list.name | string | 项目issue数量 |
| release_versions.list.tag_name | string | 发行版标签名称 |
| release_versions.list.created_at | string | 发行版创建时间 |
| release_versions.total_count | int | 发行版数量 |
| branches.list.name | string | 分支名称 |
| branches.total_count | int | 分支数量 |
| tags.list.name | string | 标签名称 |
| tags.total_count | int | 标签数量 |
| contributors.list.contributions | int | 贡献数量 |
| contributors.list.login | string | 贡献者登录名 |
| contributors.list.name | string | 贡献者用户名称 |
| contributors.list.image_url | string | 贡献者头像 |
| languages | object | 项目语言占比 |
返回的JSON示例:
{
"content": "仓库简介",
"website": "仓库网址",
"readme": {
"type": "file",
"encoding": "base64",
"size": 9,
"name": "README.md",
"path": "README.md",
"content": "# ceshi\n\n",
"sha": ""
},
"identifier": "ceshi",
"name": "测试项目",
"project_id": 2,
"repo_id": 2,
"issues_count": 0,
"pull_requests_count": 0,
"project_identifier": "ceshi",
"praises_count": 0,
"forked_count": 0,
"watchers_count": 0,
"versions_count": 0,
"version_releases_count": 0,
"version_releasesed_count": 0,
"permission": "Reporter",
"mirror_url": null,
"mirror": false,
"type": 0,
"open_devops": false,
"watched": false,
"praised": false,
"status": 1,
"forked_from_project_id": 1,
"fork_info": {
"fork_form_name": "测试项目",
"fork_project_user_login": "ceshi_org",
"fork_project_identifier": "ceshi",
"fork_project_user_name": "ceshi_org"
},
"size": "25.0 KB",
"ssh_url": "virus@localhost:yystopf/ceshi.git",
"clone_url": "http://localhost:10080/yystopf/ceshi.git",
"default_branch": "master",
"empty": false,
"full_name": "yystopf/ceshi",
"private": false,
"license_name": "gnu-javamail-exception",
"release_versions": {
"list": [
{
"id": 2,
"name": "vvvv",
"tag_name": "v1.1",
"created_at": "2019-07-18 10:16"
}
],
"total_count": 1
},
"branches": {
"list": [
{
"name": "master"
}
],
"total_count": 1
},
"tags": {
"list": [
{
"name": "v1.1"
},
{
"name": "v1.0"
}
],
"total_count": 2
},
"contributors": {
"list": [
{
"contributions": 1,
"gid": 2,
"login": "yystopf",
"type": "User",
"name": "yystopf",
"image_url": "avatars/User/b"
}
],
"total_count": 1
},
"languages": {
"HTML": "50.9%",
"Ruby": "25.6%",
"JavaScript": "21.4%",
"CSS": "1.3%",
"CoffeeScript": "0.7%",
"Shell": "0.1%"
}
}
编辑仓库信息
编辑仓库信息
示例:
curl -X GET http://localhost:3000/api/jasder/jasder_test/edit.json
await octokit.request('GET /api/jasder/jasder_test/edit.json')
HTTP 请求
GET /api/:owner/:repo/edit.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| identifier | string | 仓库标识 |
| project_id | int | 项目id |
| project_name | string | 项目名称 |
| project_identifier | string | 项目标识 |
| project_description | string | 项目简介 |
| project_category_id | int | 项目类别id |
| project_language_id | int | 项目语言id |
| private | boolean | 项目是否私有, true:为私有,false: 公开 |
返回的JSON示例:
{
"identifier": "project",
"project_id": 3263,
"project_name": "项目",
"project_identifier": "project identifier",
"project_description": "project description",
"project_category_id": 1,
"project_language_id": 2,
"private": false
}
修改仓库信息
修改仓库信息
示例:
curl -X PATCH \
-d "name=hnfl_demo" \
-d "description=my first project" \
-d "project_category_id=1" \
-d "project_language_id=2" \
-d "private=true" \
http://localhost:3000/api/jasder/jasder_test.json
await octokit.request('PATCH /api/jasder/jasder_test.json')
HTTP 请求
PATCH /api/:owner/:repo
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| id | 是 | int | 项目id | |
| name | 否 | string | 项目名称 | |
| description | 否 | string | 项目描述 | |
| project_category_id | 否 | int | 项目类别id | |
| project_language_id | 否 | int | 项目语言id | |
| default_branch | 否 | string | 默认分支名称 | |
| private | 否 | boolean | 项目是否私有, true:为私有,false: 公开,默认为公开 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| identifier | string | 项目标识 |
| name | string | 项目名称 |
| description | string | 项目简介 |
| project_category_id | int | 项目类别id |
| project_language_id | int | 项目语言id |
| private | 否 | boolean |
返回的JSON示例:
{
"id": 3263,
"identifier": "project identifier",
"name": "project name",
"description": "project description",
"project_category_id": 1,
"project_language_id": 2,
"is_public": true
}
删除仓库
删除仓库
示例:
curl -X DELETE http://localhost:3000/api/jasder/jasder_test.json
await octokit.request('DELETE /api/jasder/jasder_test.json')
HTTP 请求
PATCH /api/:owner/:repo
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| status | int | 返回状态, 0: 表示操作成功 |
| message | string | 返回信息说明 |
返回的JSON示例:
{
"status": 0,
"message": "success"
}
添加仓库成员
仓库中添加成员操作
示例:
curl -X POST \
-d "user_id=12" \
http://localhost:3000/api/jasder/jasder_test/collaborators.json
await octokit.request('POST /api/jasder/jasder_test/collaborators.json')
HTTP 请求
POST /api/:owner/:repo/collaborators.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| user_id | 是 | int | 用户id |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| status | int | 返回状态, 0: 表示操作成功 |
| message | string | 返回信息说明 |
返回的JSON示例:
{
"status": 0,
"message": "success"
}
删除仓库成员
仓库中删除成员操作
示例:
curl -X DELETE \
-d "user_id=12" \
http://localhost:3000/api/jasder/jasder_test/collaborators.json
await octokit.request('DELETE /api/jasder/jasder_test/collaborators.json')
HTTP 请求
DELETE /api/:owner/:repo/collaborators.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| user_id | 是 | int | 用户id |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| status | int | 返回状态, 0: 表示操作成功 |
| message | string | 返回信息说明 |
返回的JSON示例:
{
"status": 0,
"message": "success"
}
更改仓库成员角色(权限)
更改仓库成员角色
示例:
curl -X PUT \
-d "user_id=12" \
-d "role=Developer" \
http://localhost:3000/api/jasder/jasder_test/change_role.json
await octokit.request('PUT /api/jasder/jasder_test/change_role.json')
HTTP 请求
PUT /api/:owner/:repo/change_role.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| user_id | 是 | int | 用户id | |
| role | 是 | string | 取值范围:"Manager", "Developer", "Reporter";分别为项目管理人员(拥有所有操作权限)、项目开发人员(只拥有读写权限)、项目报告人员(只拥有读权限) |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| status | int | 返回状态, 0: 表示操作成功 |
| message | string | 返回信息说明 |
返回的JSON示例:
{
"status": 0,
"message": "success"
}
获取仓库成员列表
获取仓库成员列表
示例:
curl -X GET \
-d "page=1" \
-d "limit=5" \
http://localhost:3000/api/jasder/jasder_test/collaborators.json
await octokit.request('GET /api/jasder/jasder_test/collaborators.json')
HTTP 请求
GET /api/:owner/:repo/collaborators.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| page | 否 | string | 页数,第几页 | |
| limit | 否 | string | 每页多少条数据,默认15条 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| total_count | int | 返回记录总条数 |
| members | array | 项目成员信息 |
| -- id | int | 用户id |
| -- name | string | 用户名称 |
| -- login | string | 用户登录名/标识 |
| -- image_url | string | 用户头像 |
| -- is_owner | boolean | 是否是项目的拥有者,true:是, false:不是 |
| -- role | string | 该用户在项目中的角色, Manager: 管理员(拥有操作权限); Developer:开发人员(只拥有读写权限); Reporter:报告人员(只拥有读权限) |
返回的JSON示例:
{
"total_count": 2,
"members": [
{
"id": 36401,
"name": "name",
"login": "login",
"image_url": "avatars/User/b",
"is_owner": true,
"role": "Manager"
},
{
"id": 36399,
"name": "name",
"login": "login",
"image_url": "avatars/User/b",
"is_owner": false,
"role": "Developer"
}
]
}
获取仓库所有文件
获取仓库所有文件
示例:
curl -X GET \
-d "ref=develop" \
http://localhost:3000/api/yystopf/ceshi/files.json
await octokit.request('GET /api/yystopf/ceshi/files.json')
HTTP 请求
GET /api/:owner/:repo/files
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| search | 否 | string | 文件搜索关键词 | |
| ref | 是 | string | 分支名,默认为仓库默认分支 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| name | string | 文件名称 |
| path | string | 文件路径 |
| sha | string | 文件标识 |
| type | string | 文件类型 |
| size | int | 文件大小 |
| url | string | 文件地址 |
返回的JSON示例:
[
{
"name": ".gitignore",
"path": ".gitignore",
"sha": "f83922d01ae60f6e637a1a2b9f08871b4f87dfc8",
"type": "file",
"size": 63,
"url": "http://localhost:10080/api/v1/repos/yystopf/ceshi/contents/.gitignore?ref=master",
"html_url": "http://localhost:10080/yystopf/ceshi/src/branch/master/.gitignore"
},
{
"name": "LICENSE",
"path": "LICENSE",
"sha": "8f3b9ab0d08afd3a624d822e3971a2f42b3bc2b9",
"type": "file",
"size": 341,
"url": "http://localhost:10080/api/v1/repos/yystopf/ceshi/contents/LICENSE?ref=master",
"html_url": "http://localhost:10080/yystopf/ceshi/src/branch/master/LICENSE"
},
{
"name": "README.md",
"path": "README.md",
"sha": "1bc8a60ac6ddc876ebc4b60fc68991435bfad93e",
"type": "file",
"size": 9,
"url": "http://localhost:10080/api/v1/repos/yystopf/ceshi/contents/README.md?ref=master",
"html_url": "http://localhost:10080/yystopf/ceshi/src/branch/master/README.md"
}
]
获取仓库代码目录
获取仓库代码目录
示例:
curl -X GET \
-d "ref=develop" \
http://localhost:3000//api/jasder/jasder_test/entries.json
await octokit.request('GET /api/jasder/jasder_test/entries.json')
HTTP 请求
GET /api/:owner/:repo/entries.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| ref | 否 | string | 分支名称、tag名称或是提交记录id,默认为master分支 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| last_commit | object | |
| -- commit | object | |
| id | int | id |
| name | string | 文件夹或文件名称 |
| path | string | 文件夹或文件相对路径 |
| type | string | 文件类型, file:文件,dir:文件目录 |
| size | int | 文件夹或文件大小 单位B |
| content | string | 文件内容 |
| target | string | 标签 |
返回的JSON示例:
{
"last_commit": {
"commit": {
"sha": "3f2de4f78d2d7050486535082cd11cdfc9f3679e",
"url": "http://localhost:3003//api/repositories/api-cloud-platform/commits/3f2de4f78d2d7050486535082cd11cdfc9f3679e",
"message": "update README.md.",
"author": {
"name": "Gitee",
"email": "noreply@gitee.com",
"date": "2020-03-02T20:23:18+08:00"
},
"committer": {
"name": "Gitee",
"email": "noreply@gitee.com",
"date": "2020-03-02T20:23:18+08:00"
},
"timestamp": 1583151798,
"time_from_now": "3个月前"
},
"author": null,
"committer": null
},
"entries": [
{
"name": "ace-gate",
"path": "ace-gate",
"sha": "c83f85fc63b14edcd6fc502eee9996f5a9993eca",
"type": "dir",
"size": 0,
"content": null,
"target": null,
"commit": {
"message": "v2.9 升级alibaba组件release版本\n",
"sha": "6117eaab86f71115f42f2a46ff1683015cda798d",
"created_at": "1970-01-01 08:00",
"time_from_now": "1年前",
"created_at_unix": null
}
}
]
}
获取仓库代码子目录或者文件
获取仓库代码子目录或者文件
示例:
curl -X GET \
-d "ref=master" \
-d "filepath=file" \
http://localhost:3000//api/jasder/jasder_test/sub_entries.json
await octokit.request('GET /api/jasder/jasder_test/sub_entries.json')
HTTP 请求
GET /api/:owner/:repo/sub_entries.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| filepath | 是 | string | 文件夹、文件的相对路径 | |
| ref | 否 | string | 分支名称、tag名称或是提交记录id,默认为master分支 |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| name | string | 文件夹或文件名称 |
| path | string | 文件夹或文件相对路径 |
| type | string | 文件类型, file:文件,dir:文件目录 |
| size | int | 文件夹或文件大小 单位KB |
| content | string | 文件内容, |
| target | string | 标签 |
| url | string | 文件访问链接,带分支 |
| html_url | string | 文件访问链接,未标识分支 |
| git_url | string | 文件夹或文件的git仓库访问链接 |
| download_url | string | 文件下载、文件内容访问链接 |
返回的JSON示例:
[
{
"name": "build.rc",
"path": "lib/build.rc",
"type": "",
"size": 1268,
"content": null,
"target": null,
"url": "http://localhost:3003/api/v1/repos/18816895620/mirror_demo/contents/lib/build.rc?ref=master",
"html_url": "http://localhost:3003/18816895620/mirror_demo/src/branch/master/lib/build.rc",
"git_url": "http://localhost:3003/api/v1/repos/18816895620/mirror_demo/git/blobs/191fcf1a63b3777e2977fcede7dd5309efdd70fe",
"download_url": null
}
]
获取仓库webhooks列表
获取仓库webhooks列表
示例:
curl -X GET \
http://localhost:3000/api/yystopf/ceshi/webhooks.json
await octokit.request('GET /api/yystopf/ceshi/webhooks.json')
HTTP 请求
GET /api/:owner/:repo/webhooks.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| url | string | 地址 |
| http_method | string | 请求方式 |
| is_active | bool | 是否激活 |
| type | string | 类型 |
| last_status | string | 最后一次推送的状态 |
| create_time | string | 创建时间 |
返回的JSON示例:
{
"total_count": 4,
"webhooks": [
{
"id": 2,
"url": "https://oapi.dingtalk.com/robot/send?access_token=7e1e19d0eddb6a5e33c5c2c4e66f4c88f9437184b9ed2c2653194c6374c7d513",
"http_method": "",
"is_active": true,
"type": "dingtalk",
"last_status": "succeed",
"create_time": "2021-07-12 10:50:07"
},
{
"id": 3,
"url": "http://localhost:3000",
"http_method": "GET",
"is_active": true,
"type": "gitea",
"last_status": "succeed",
"create_time": "2021-07-26 10:03:45"
},
{
"id": 4,
"url": "http://localhost:10081",
"http_method": "POST",
"is_active": true,
"type": "gitea",
"last_status": "waiting",
"create_time": "2021-07-26 16:56:53"
},
{
"id": 5,
"url": "http://localhost:3001",
"http_method": "POST",
"is_active": true,
"type": "gitea",
"last_status": "fail",
"create_time": "2021-07-26 16:58:23"
}
]
}
获取仓库单个webhook
获取仓库单个webhook
示例:
curl -X GET \
http://localhost:3000/api/yystopf/ceshi/webhooks/3/edit.json
await octokit.request('GET /api/yystopf/ceshi/webhooks/3/edit.json')
HTTP 请求
GET /api/:owner/:repo/webhooks/:id/edit.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| id | 是 | integer | webhook ID |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| url | string | 地址 |
| content_type | string | POST Content Type |
| http_method | string | 请求方式 |
| secret | string | |
| is_active | bool | 是否激活 |
| type | string | 类型 |
| last_status | string | 最后一次推送的状态, waiting 等待,fail 失败,succeed 成功 |
| branch_filter | string | 分支过滤 |
| events | string | 触发条件 |
| create_time | string | 创建时间 |
| 参数 | 含义 |
|---|---|
| create | 创建分支或标签 |
| delete | 分支或标签删除 |
| fork | 仓库被fork |
| push | git仓库推送 |
| issue | 易修已打开、已关闭、已重新打开或编辑 |
| issue_assign | 易修被指派 |
| issue_label | 易修标签被更新或删除 |
| issue_milestone | 易修被收入里程碑 |
| issue_comment | 易修评论 |
| pull_request | 合并请求 |
| pull_request_assign | 合并请求被指派 |
| pull_request_label | 合并请求被贴上标签 |
| pull_request_milestone | 合并请求被记录于里程碑中 |
| pull_request_comment | 合并请求被评论 |
| pull_request_review_approved | 合并请求被批准 |
| pull_request_review_rejected | 合并请求被拒绝 |
| pull_request_review_comment | 合并请求被提出审查意见 |
| pull_request_sync | 合并请求被同步 |
| repository | 创建或删除仓库 |
| release | 版本发布 |
返回的JSON示例:
{
"id": 3,
"http_method": "GET",
"content_type": "form",
"url": "http://localhost:3000",
"secret": "123456",
"last_status": "succeed",
"is_active": true,
"type": "gitea",
"create_time": "2021-07-26 10:03:45",
"branch_filter": "*",
"events": [
"create",
"delete",
"fork",
"issues",
"issue_assign",
"issue_label",
"issue_milestone",
"issue_comment",
"push",
"pull_request",
"pull_request_assign",
"pull_request_label",
"pull_request_milestone",
"pull_request_comment",
"pull_request_review",
"pull_request_sync",
"repository",
"release"
]
}
添加仓库webhook
添加仓库webhook
示例:
curl -X POST \
http://localhost:3000/api/yystopf/ceshi/webhooks.json
await octokit.request('POST /api/yystopf/ceshi/webhooks.json')
HTTP 请求
POST /api/:owner/:repo/webhooks.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| webhook.url | 是 | string | 目标url | |
| webhook.type | 否 | string | 类型 | |
| webhook.http_method | 是 | string | http方法, POST和GET | |
| webhook.content_type | 是 | string | POST Content Type | |
| webhook.secret | 否 | string | 密钥文本 | |
| webhook.active | 是 | bool | 是否激活 | |
| webhook.branch_filter | 否 | string | 分支过滤 | |
| webhook.events | 否 | array | 触发事件 |
触发事件字段说明
| 参数 | 含义 |
|---|---|
| create | 创建分支或标签 |
| delete | 分支或标签删除 |
| fork | 仓库被fork |
| push | git仓库推送 |
| issue | 易修已打开、已关闭、已重新打开或编辑 |
| issue_assign | 易修被指派 |
| issue_label | 易修标签被更新或删除 |
| issue_milestone | 易修被收入里程碑 |
| issue_comment | 易修评论 |
| pull_request | 合并请求 |
| pull_request_assign | 合并请求被指派 |
| pull_request_label | 合并请求被贴上标签 |
| pull_request_milestone | 合并请求被记录于里程碑中 |
| pull_request_comment | 合并请求被评论 |
| pull_request_review_approved | 合并请求被批准 |
| pull_request_review_rejected | 合并请求被拒绝 |
| pull_request_review_comment | 合并请求被提出审查意见 |
| pull_request_sync | 合并请求被同步 |
| repository | 创建或删除仓库 |
| release | 版本发布 |
请求的JSON示例:
{
"active": true,
"content_type": "json",
"http_method": "GET",
"secret": "123456",
"url": "http://localhost:10000",
"branch_filter": "*",
"events": ["push"]
}
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| url | string | 地址 |
| content_type | string | POST Content Type |
| is_active | bool | 是否激活 |
| type | string | 类型 |
| events | array | 触发事件 |
| create_time | string | 创建时间 |
返回的JSON示例:
{
"id": 18,
"type": "gitea",
"content_type": "json",
"url": "http://localhost:10000",
"events": [
"push"
],
"active": true,
"create_time": "2021-07-26 18:53:43"
}
更新仓库webhook
更新仓库webhook
示例:
curl -X PATCH \
http://localhost:3000/api/yystopf/ceshi/webhooks/7.json
await octokit.request('PATCH /api/yystopf/ceshi/webhooks/7.json')
HTTP 请求
PATCH /api/:owner/:repo/webhooks/:id.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| id | 是 | string | webhook id | |
| webhook.url | 是 | string | 目标url | |
| webhook.type | 否 | string | 类型 | |
| webhook.http_method | 是 | string | http方法, POST和GET | |
| webhook.content_type | 是 | string | POST Content Type | |
| webhook.secret | 否 | string | 密钥文本 | |
| webhook.active | 是 | bool | 是否激活 | |
| webhook.branch_filter | 否 | string | 分支过滤 | |
| webhook.events | 否 | array | 触发事件 |
触发事件字段说明
| 参数 | 含义 |
|---|---|
| create | 创建分支或标签 |
| delete | 分支或标签删除 |
| fork | 仓库被fork |
| push | git仓库推送 |
| issue | 易修已打开、已关闭、已重新打开或编辑 |
| issue_assign | 易修被指派 |
| issue_label | 易修标签被更新或删除 |
| issue_milestone | 易修被收入里程碑 |
| issue_comment | 易修评论 |
| pull_request | 合并请求 |
| pull_request_assign | 合并请求被指派 |
| pull_request_label | 合并请求被贴上标签 |
| pull_request_milestone | 合并请求被记录于里程碑中 |
| pull_request_comment | 合并请求被评论 |
| pull_request_review_approved | 合并请求被批准 |
| pull_request_review_rejected | 合并请求被拒绝 |
| pull_request_review_comment | 合并请求被提出审查意见 |
| pull_request_sync | 合并请求被同步 |
| repository | 创建或删除仓库 |
| release | 版本发布 |
请求的JSON示例:
{
"active": true,
"content_type": "json",
"http_method": "GET",
"secret": "123456",
"url": "http://localhost:10000",
"branch_filter": "*",
"events": ["push"]
}
返回字段说明:
返回的JSON示例:
{
"status": 0,
"message": "success"
}
删除仓库webhook
删除仓库webhook
示例:
curl -X DELETE \
http://localhost:3000/api/yystopf/ceshi/webhooks/7.json
await octokit.request('DELETE /api/yystopf/ceshi/webhooks/7.json')
HTTP 请求
DELETE /api/:owner/:repo/webhooks/:id.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| id | 是 | string | webhook id |
返回字段说明:
返回的JSON示例:
{
"status": 0,
"message": "success"
}
获取仓库webhook的历史推送列表
获取仓库webhook的历史推送列表
示例:
curl -X GET \
http://localhost:3000/api/yystopf/ceshi/webhooks/3/tasks.json
await octokit.request('GET /api/yystopf/ceshi/webhooks/3/tasks.json')
HTTP 请求
GET /api/:owner/:repo/webhooks/:id/tasks.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| id | 是 | integer | webhook ID |
返回字段说明:
| 参数 | 类型 | 字段说明 |
|---|---|---|
| id | int | id |
| uuid | string | 推送uuid |
| type | string | 类型 |
| is_succeed | bool | 是否推送成功 |
| is_delivered | bool | 是否完成推送 |
| payload_content | json | 请求主体内容 |
| request_content | json | 请求内容,头部等等 |
| reponse_content | json | 响应内容,状态,头部,主体等等 |
| delivered_time | string | 推送时间 |
返回的JSON示例:
{
"total_count": 6,
"tasks": [
{
"id": 20,
"type": "gitea",
"uuid": "99aa2c23-6884-4c44-9020-5469320aa408",
"is_succeed": true,
"is_delivered": true,
"payload_content": {
"secret": "123456",
"ref": "refs/heads/master",
"before": "feb48e31362787a7620b53d4df3c4effddbb6f0b",
"after": "feb48e31362787a7620b53d4df3c4effddbb6f0b",
"compare_url": "",
"commits": [
{
"id": "feb48e31362787a7620b53d4df3c4effddbb6f0b",
"message": "fix\n",
"url": "http://localhost:10081/yystopf/ceshi/commit/feb48e31362787a7620b53d4df3c4effddbb6f0b",
"author": {
"name": "viletyy",
"email": "yystopf@163.com",
"username": "root"
},
"committer": {
"name": "viletyy",
"email": "yystopf@163.com",
"username": "root"
},
"verification": {
"verified": false,
"reason": "gpg.error.not_signed_commit",
"signature": "",
"signer": null,
"payload": ""
},
"timestamp": "2021-07-26T13:52:13+08:00",
"added": null,
"removed": null,
"modified": null
}
],
"head_commit": null,
"repository": {
"id": 2,
"owner": {
"id": 3,
"login": "yystopf",
"full_name": "",
"email": "yystopf@forge.com",
"avatar_url": "http://localhost:10081/user/avatar/yystopf/-1",
"language": "zh-CN",
"is_admin": true,
"last_login": "2021-07-21T18:38:21+08:00",
"created": "2021-06-03T14:50:25+08:00",
"username": "yystopf"
},
"name": "ceshi",
"full_name": "yystopf/ceshi",
"description": "",
"empty": false,
"private": false,
"fork": false,
"template": false,
"parent": null,
"mirror": false,
"size": 3846,
"html_url": "http://localhost:10081/yystopf/ceshi",
"ssh_url": "virus@localhost:10081:yystopf/ceshi.git",
"clone_url": "http://localhost:10081/yystopf/ceshi.git",
"original_url": "",
"website": "",
"stars_count": 0,
"forks_count": 1,
"watchers_count": 1,
"open_issues_count": 0,
"open_pr_counter": 0,
"release_counter": 0,
"default_branch": "master",
"archived": false,
"created_at": "2021-06-03T15:15:30+08:00",
"updated_at": "2021-07-26T13:52:16+08:00",
"permissions": {
"admin": false,
"push": false,
"pull": false
},
"has_issues": true,
"internal_tracker": {
"enable_time_tracker": true,
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true
},
"has_wiki": true,
"has_pull_requests": true,
"ignore_whitespace_conflicts": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_squash_merge": true,
"avatar_url": "",
"internal": false
},
"pusher": {
"id": 0,
"login": "yystopf",
"full_name": "",
"email": "yystopf@forge.com",
"avatar_url": "http://localhost:10081/user/avatar/yystopf/-1",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2021-06-03T14:50:25+08:00",
"username": "yystopf"
},
"sender": {
"id": 0,
"login": "yystopf",
"full_name": "",
"email": "yystopf@forge.com",
"avatar_url": "http://localhost:10081/user/avatar/yystopf/-1",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2021-06-03T14:50:25+08:00",
"username": "yystopf"
}
},
"request_content": {
"headers": {
"X-GitHub-Delivery": "99aa2c23-6884-4c44-9020-5469320aa408",
"X-GitHub-Event": "push",
"X-Gitea-Delivery": "99aa2c23-6884-4c44-9020-5469320aa408",
"X-Gitea-Event": "push",
"X-Gitea-Signature": "34a01edcd952ff6410ff6ebc946471161bde74aff86171f21621d2c2c4130f66",
"X-Gogs-Delivery": "99aa2c23-6884-4c44-9020-5469320aa408",
"X-Gogs-Event": "push",
"X-Gogs-Signature": "34a01edcd952ff6410ff6ebc946471161bde74aff86171f21621d2c2c4130f66"
}
},
"response_content": {
"status": 200,
"headers": {
"Cache-Control": "no-store, must-revalidate, private, max-age=0",
"Content-Length": "2556",
"Content-Type": "text/html; charset=utf-8",
"Referrer-Policy": "strict-origin-when-cross-origin",
"Set-Cookie": "__profilin=p%3Dt; path=/; HttpOnly",
"Vary": "Origin",
"X-Content-Type-Options": "nosniff",
"X-Download-Options": "noopen",
"X-Frame-Options": "SAMEORIGIN",
"X-Miniprofiler-Ids": "9ynvpncz5xm0rpgorb5y,hgggd9mv6lr4a9drcrlr,j7zqlx2vy5aji2vtgoba,f1ktsmh3jxvq0z2hf612,mih3dvgvlqhi3zy8lf2x,5k1qbkvbnru8mye9cest,tj6ern8w6awqf2zsimbr,9isaehvubivd52wo5p9v,1rzfhtq1nhuwbgy9p76g,z0xzidzyywna0y7a69m0,hzoklky92ycjqt42gi0s,y0ai7y0t28mcn8x0py2x,322il7nadinp51mw2r5m,m6dukftfsh6tjcxzp1gq,667wlqbytfwbrirnmma1,jcehj3dl8lkw8gk510cr",
"X-Miniprofiler-Original-Cache-Control": "max-age=0, private, must-revalidate",
"X-Permitted-Cross-Domain-Policies": "none",
"X-Request-Id": "08bff080-bbb5-4183-b845-81de3d47120a",
"X-Runtime": "0.394766",
"X-Xss-Protection": "1; mode=block"
},
"body": "<!doctype html><html lang=\"zh-CN\" class=\"notranslate translated-ltr\" translate=\"no\"><head><meta charset=\"utf-8\"><meta name=\"”Keywords”\" content=\"”trustie,trustieforge,forge,确实让创建更美好,协同开发平台″\"><meta name=\"”Keywords”\" content=\"”TrustieOpenSourceProject″\"><meta name=\"”Keywords”\" content=\"”issue,bug,tracker,软件工程,课程实践″\"><meta name=\"”Description”\" content=\"”持续构建协同、共享、可信的软件创建生态开源创作与软件生产相结合,支持大规模群体开展软件协同创新活动”\"><meta name=\"theme-color\" content=\"#000000\"><link rel=\"manifest\" href=\"/react/build//manifest.json\"><link rel=\"stylesheet\" href=\"/react/build/css/iconfont.css\"><link rel=\"stylesheet\" href=\"/react/build/css/edu-purge.css\"><link rel=\"stylesheet\" href=\"/react/build/css/editormd.min.css\"><link rel=\"stylesheet\" href=\"/react/build/css/merge.css\"><link href=\"/react/build/static/css/main.07f7e90c.chunk.css\" rel=\"stylesheet\"></head><body><div id=\"md_div\" style=\"display:none\"></div><div id=\"root\" class=\"page -layout-v -fit widthunit\"></div><div id=\"picture_display\" style=\"display:none\"></div><script src=\"/react/build/js/jquery-1.8.3.min.js\"></script><script src=\"/react/build/js/js_min_all.js\"></script><script src=\"/react/build/js/codemirror/codemirror.js\"></script><script src=\"/react/build/js/editormd/editormd.min.js\"></script><script src=\"/react/build/js/codemirror/merge/merge.js\"></script><script src=\"/react/build/./static/js/runtime~main.3d644966.js\"></script><script src=\"/react/build/./static/js/main.e46872e3.chunk.js\"></script><script async type=\"text/javascript\" id=\"mini-profiler\" src=\"/mini-profiler-resources/includes.js?v=67dd1c2571ced7fc74ae7f1813e47bdf\" data-version=\"67dd1c2571ced7fc74ae7f1813e47bdf\" data-path=\"/mini-profiler-resources/\" data-current-id=\"9ynvpncz5xm0rpgorb5y\" data-ids=\"9ynvpncz5xm0rpgorb5y,hgggd9mv6lr4a9drcrlr,j7zqlx2vy5aji2vtgoba,f1ktsmh3jxvq0z2hf612,mih3dvgvlqhi3zy8lf2x,5k1qbkvbnru8mye9cest,tj6ern8w6awqf2zsimbr,9isaehvubivd52wo5p9v,1rzfhtq1nhuwbgy9p76g,z0xzidzyywna0y7a69m0,hzoklky92ycjqt42gi0s,y0ai7y0t28mcn8x0py2x,322il7nadinp51mw2r5m,m6dukftfsh6tjcxzp1gq,667wlqbytfwbrirnmma1,jcehj3dl8lkw8gk510cr\" data-horizontal-position=\"left\" data-vertical-position=\"top\" data-trivial=\"false\" data-children=\"false\" data-max-traces=\"20\" data-controls=\"false\" data-total-sql-count=\"false\" data-authorized=\"true\" data-toggle-shortcut=\"alt+p\" data-start-hidden=\"false\" data-collapse-results=\"true\" data-html-container=\"body\"></script>\n</body></html>"
},
"delivered_time": "2021-07-28 11:47:29"
}
]
}
仓库webhook测试推送
仓库webhook测试推送
示例:
curl -X POST \
http://localhost:3000/api/yystopf/ceshi/webhooks/3/test.json
await octokit.request('POST /api/yystopf/ceshi/webhooks/3/test.json')
HTTP 请求
POST /api/:owner/:repo/webhooks/:id/test.json
请求参数:
| 参数 | 必选 | 默认 | 类型 | 字段说明 |
|---|---|---|---|---|
| owner | 是 | string | 用户登录名 | |
| repo | 是 | string | 项目标识identifier | |
| id | 是 | integer | webhook ID |
返回字段说明:
返回的JSON示例:
{
"status": 0,
"message": "success"
}
Pulls
Issues
Organizations
Teams
Errors
The Kittn API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request -- Your request is invalid. |
| 401 | Unauthorized -- Your API key is wrong. |
| 403 | Forbidden -- The kitten requested is hidden for administrators only. |
| 404 | Not Found -- The specified kitten could not be found. |
| 405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
| 406 | Not Acceptable -- You requested a format that isn't json. |
| 410 | Gone -- The kitten requested has been removed from our servers. |
| 418 | I'm a teapot. |
| 429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |