NAV
Shell JavaScript

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 GET http://localhost:3000/api/users/:login/messages.json
await octokit.request('GET /api/users/:login/messages.json')

HTTP 请求

GET api/users/yystopf/messages.json

请求字段说明:

参数 类型 字段说明
type string 消息类型,不传为所有消息,notification为系统消息,atme为@我消息
status integer 是否已读,不传为所有消息,1为未读,2为已读
limit integer 每页个数
page integer 页码

返回字段说明:

参数 类型 字段说明
total_count integer 消息总数
type string 消息类型
unread_notification integer 未读系统通知数量
unread_atme integer 未读@我数量
messages.id integer 消息id
messages.status integer 消息是否已读,1为未读,2为已读
messages.content string 消息内容
messages.notification_url string 消息跳转地址
messages.source string 消息来源
messages.timeago string 消息时间
messages.type string 消息类型,notification为系统消息,atme为@我消息
sender object 消息发送者

消息来源source字段说明

类型 说明
IssueAssigned 有新指派给我的疑修
IssueAssignerExpire 我负责的疑修截止日期到达最后一天
IssueAtme 在疑修中@我
IssueChanged 我创建或负责的疑修状态变更
IssueCreatorExpire 我创建的疑修截止日期到达最后一天
IssueDeleted 我创建或负责的疑修删除
IssueJournal 我创建或负责的疑修有新的评论
LoginIpTip 登录异常提示
OrganizationJoined 账号被拉入组织
OrganizationLeft 账号被移出组织
OrganizationRole 账号组织权限变更
ProjectDeleted 我关注的仓库被删除
ProjectFollowed 我管理的仓库被关注
ProjectForked 我管理的仓库被复刻
ProjectIssue 我管理/关注的仓库有新的疑修
ProjectJoined 账号被拉入项目
ProjectLeft 账号被移出项目
ProjectMemberJoined 我管理的仓库有成员加入
ProjectMemberLeft 我管理的仓库有成员移出
ProjectMilestone 我管理的仓库有新的里程碑
ProjectPraised 我管理的仓库被点赞
ProjectPullRequest 我管理/关注的仓库有新的合并请求
ProjectRole 账号仓库权限变更
ProjectSettingChanged 我管理的仓库项目设置被更改
ProjectTransfer 我关注的仓库被转移
ProjectVersion 我关注的仓库有新的发行版
PullRequestAssigned 有新指派给我的合并请求
PullReuqestAtme 在合并请求中@我
PullRequestChanged 我创建或负责的合并请求状态变更
PullRequestClosed 我创建或负责的合并请求被关闭
PullRequestJournal 我创建或负责的合并请求有新的评论
PullRequestMerged 我创建或负责的合并请求被合并

返回的JSON示例:

{
    "total_count": 5,
    "type": "",
    "unread_notification": 3,
    "unread_atme": 2,
    "messages": [
        {
            "id": 1,
            "status": 1,
            "content": "Atme Message Content 1",
            "notification_url": "http://www.baidu.com",
            "source": "PullRequestAtme",
            "time_ago": "1天前",
            "type": "atme",
            "sender": {
                "id": 5,
                "type": "User",
                "name": "testforge2",
                "login": "testforge2",
                "image_url": "system/lets/letter_avatars/2/T/236_177_85/120.png"
            }
        },
        {
            "id": 2,
            "status": 0,
            "content": "Atme Message Content 2",
            "notification_url": "http://www.baidu.com",
            "source": "IssueAtme",
            "time_ago": "1天前",
            "type": "atme",
            "sender": {
                "id": 4,
                "type": "User",
                "name": "testforge1",
                "login": "testforge1",
                "image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
            }
        },
        {
            "id": 3,
            "status": 1,
            "content": "Notification Message Content 1",
            "notification_url": "http://www.baidu.com",
            "source": "IssueDelete",
            "time_ago": "1天前",
            "type": "notification"
        },
        {
            "id": 4,
            "status": 0,
            "content": "Notification Message Content 2",
            "notification_url": "http://www.baidu.com",
            "source": "IssueChanged",
            "time_ago": "1天前",
            "type": "notification"
        },
        {
            "id": 5,
            "status": 0,
            "content": "Notification Message Content 3",
            "notification_url": "http://www.baidu.com",
            "source": "ProjectJoined",
            "time_ago": "1天前",
            "type": "notification"
        }
    ]
}

用户阅读系统通知

用户阅读系统通知

示例:

curl -X POST http://localhost:3000/api/users/yystopf/system_notification_histories.json
await octokit.request('GET /api/users/:login/system_notification_histories.json')

HTTP 请求

POST /api/users/:login/system_notification_histories.json

请求字段说明:

参数 类型 字段说明
system_notification_id integer 阅读的系统通知id

返回的JSON示例:

{
    "status": 0,
    "message": "success"
}

发送消息

发送消息, 目前只支持atme

示例:

curl -X POST http://localhost:3000/api/users/:login/messages.json
await octokit.request('POST /api/users/:login/messages.json')

HTTP 请求

POST api/users/yystopf/messages.json

请求字段说明:

参数 类型 字段说明
type string 消息类型
receivers_login array 需要发送消息的用户名数组
atmeable_type string atme消息对象,是从哪里@我的,比如评论:Journal、疑修:Issue、合并请求:PullRequest
atmeable_id integer atme消息对象id

请求的JSON示例:

{
    "type": "atme",
    "receivers_login": ["yystopf", "testforge1"],
    "atmeable_type": "Journal",
    "atmeable_id": 67
}

返回的JSON示例:

{
    "status": 0,
    "message": "success"
}

阅读消息

阅读消息

示例:

curl -X POST http://localhost:3000/api/users/:login/messages/read.json
await octokit.request('POST /api/users/:login/messages/read.json')

HTTP 请求

POST api/users/yystopf/messages/read.json

请求字段说明:

参数 类型 字段说明
type string 消息类型,不传为所有消息,notification为系统消息,atme为@我消息
ids array 消息id数组,包含-1则把所有未读消息标记为已读

返回的JSON示例:

{
    "status": 0,
    "message": "success"
}

删除消息

删除消息

示例:

curl -X DELETE http://localhost:3000/api/users/:login/messages.json
await octokit.request('DELETE /api/users/:login/messages.json')

HTTP 请求

DELETE api/users/yystopf/messages.json

请求字段说明:

参数 类型 字段说明
type string 消息类型,atme为@我消息
ids array 消息id数组,包含-1则把所有消息删除

返回的JSON示例:

{
    "status": 0,
    "message": "success"
}

更改用户信息

更改用户信息

示例:

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/template_message_settings.json
await octokit.request('GET /api/template_message_settings.json')

HTTP 请求

GET /api/template_message_settings.json

返回字段说明:

参数 类型 字段说明
type string 消息配置类型
type_name string 消息配置类型含义
total_settings_count int 配置条数
settings.name string 配置名称
settings.key string 配置标识
settings.notification_disabled boolean 站内信设置是否禁用
settings.email_disabled boolean 邮件设置是否禁用

返回的JSON示例:

{
    "status": 0,
    "message": "响应成功",
    "setting_types": [
        {
            "type": "TemplateMessageSetting::Normal",
            "type_name": "",
            "total_settings_count": 3,
            "settings": [
                {
                    "name": "被拉入或移出组织",
                    "key": "Organization",
                    "notification_disabled": true,
                    "email_disabled": false
                },
                {
                    "name": "被拉入或移出项目",
                    "key": "Project",
                    "notification_disabled": true,
                    "email_disabled": false
                },
                {
                    "name": "有权限变更",
                    "key": "Permission",
                    "notification_disabled": true,
                    "email_disabled": false
                }
            ]
        },
        {
            "type": "TemplateMessageSetting::CreateOrAssign",
            "type_name": "我创建的或负责的",
            "total_settings_count": 4,
            "settings": [
                {
                    "name": "疑修被指派",
                    "key": "IssueAssigned",
                    "notification_disabled": true,
                    "email_disabled": false
                },
                {
                    "name": "合并请求被指派",
                    "key": "PullRequestAssigned",
                    "notification_disabled": true,
                    "email_disabled": false
                }
            ]
        },
        {
            "type": "TemplateMessageSetting::ManageProject",
            "type_name": "我管理的仓库",
            "total_settings_count": 4,
            "settings": [
                {
                    "name": "有新的疑修",
                    "key": "Issue",
                    "notification_disabled": true,
                    "email_disabled": false
                },
                {
                    "name": "有新的合并请求",
                    "key": "PullRequest",
                    "notification_disabled": true,
                    "email_disabled": false
                },
                {
                    "name": "有成员变动",
                    "key": "Member",
                    "notification_disabled": true,
                    "email_disabled": false
                },
                {
                    "name": "设置更改",
                    "key": "SettingChanged",
                    "notification_disabled": true,
                    "email_disabled": false
                }
            ]
        }
    ]
}

获取用户消息设置配置信息

获取用户消息设置配置信息

示例:

curl -X GET http://localhost:3000/api/users/yystopf/template_message_settings.json
await octokit.request('GET /api/uses/yystopf/template_message_settings.json')

HTTP 请求

GET /api/users/:user_id/template_message_settings.json

返回字段说明:

参数 类型 字段说明
notification_body string 站内信配置
email_body string 邮件配置

返回的JSON示例:

{
    "status": 0,
    "message": "响应成功",
    "user": {
        "id": 2,
        "type": "User",
        "name": "heh",
        "login": "yystopf",
        "image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png"
    },
    "notification_body": {
        "CreateOrAssign::IssueAssigned": true,
        "CreateOrAssign::PullRequestAssigned": true,
        "ManageProject::Issue": true,
        "ManageProject::PullRequest": true,
        "ManageProject::Member": true,
        "ManageProject::SettingChanged": true,
        "Normal::Organization": true,
        "Normal::Project": true,
        "Normal::Permission": true
    },
    "email_body": {
        "CreateOrAssign::IssueAssigned": false,
        "CreateOrAssign::PullRequestAssigned": false,
        "ManageProject::Issue": false,
        "ManageProject::PullRequest": false,
        "ManageProject::Member": false,
        "ManageProject::SettingChanged": true,
        "Normal::Organization": false,
        "Normal::Project": true,
        "Normal::Permission": false
    }
}

重新设置用户消息设置配置信息

重新设置用户消息设置配置信息

示例:

curl -X POST http://localhost:3000/api/users/yystopf/template_message_settings/update_setting.json
await octokit.request('POST /api/uses/yystopf/template_message_settings/update_setting.json')

HTTP 请求

POST /api/users/:user_id/template_message_settings/update_setting.json

请求字段说明:

参数 类型 字段说明
notification_body string 站内信配置
email_body string 邮件配置

请求的JSON示例:

{
    "setting": {
        "notification_body": {
            "CreateOrAssign::IssueAssigned": true,
            "CreateOrAssign::PullRequestAssigned": true,
            "ManageProject::Issue": true,
            "ManageProject::PullRequest": true,
            "ManageProject::Member": true,
            "ManageProject::SettingChanged": true,
            "Normal::Organization": true,
            "Normal::Project": true,
            "Normal::Permission": true
        },
        "email_body": {
            "CreateOrAssign::IssueAssigned": false,
            "CreateOrAssign::PullRequestAssigned": false,
            "ManageProject::Issue": false,
            "ManageProject::PullRequest": false,
            "ManageProject::Member": false,
            "ManageProject::SettingChanged": true,
            "Normal::Organization": false,
            "Normal::Project": "t",
            "Normal::Permission": false
        }
   }
}

返回字段说明:

参数 类型 字段说明
notification_body string 站内信配置
email_body string 邮件配置

返回的JSON示例:

{
    "status": 0,
    "message": "响应成功",
    "user": {
        "id": 2,
        "type": "User",
        "name": "heh",
        "login": "yystopf",
        "image_url": "system/lets/letter_avatars/2/H/188_239_142/120.png"
    },
    "notification_body": {
        "CreateOrAssign::IssueAssigned": true,
        "CreateOrAssign::PullRequestAssigned": true,
        "ManageProject::Issue": true,
        "ManageProject::PullRequest": true,
        "ManageProject::Member": true,
        "ManageProject::SettingChanged": true,
        "Normal::Organization": true,
        "Normal::Project": true,
        "Normal::Permission": true
    },
    "email_body": {
        "CreateOrAssign::IssueAssigned": false,
        "CreateOrAssign::PullRequestAssigned": false,
        "ManageProject::Issue": false,
        "ManageProject::PullRequest": false,
        "ManageProject::Member": false,
        "ManageProject::SettingChanged": true,
        "Normal::Organization": false,
        "Normal::Project": true,
        "Normal::Permission": false
    }
}

获取用户星标项目

获取用户星标项目

示例:

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/yystopf/csfjkkj/tags.json
await octokit.request('GET /api/yystopf/csfjkkj/tags.json')

HTTP 请求

GET /api/:owner/:repo/tags.json

请求参数:

参数 必选 默认 类型 字段说明
owner string 用户登录名
repo string 项目标识identifier
page 1 integer 页码
limit 20 integer 每页个数

返回字段说明:

参数 类型 字段说明
id int 标签id
name string 标签名称
zipball_url string 标签zip包下载地址
tarball_url string 标签tar包下载地址
tagger object 打标签的人
time_ago string 打标签的时间
created_at_unix string 打标签的时间戳
message string 标签信息
commit object 标签最后一个commit
commit.sha string commit的id
commit.message string commit的提交信息
commit.time_ago string commit的提交时间
commit.created_at_unix string commit的提交时间戳
commit.committer object commit的提交者
commit.author object commit的作者

返回的JSON示例:

[
    {
        "name": "v2.0.0",
        "id": "c7d0873ee41796d1a0e193063095ccf539a9bf31",
        "zipball_url": "http://localhost:3000/api/yystopf/csfjkkj/archive/v2.0.0.zip",
        "tarball_url": "http://localhost:3000/api/yystopf/csfjkkj/archive/v2.0.0.tar.gz",
        "tagger": {
            "id": 4,
            "login": "testforge1",
            "name": "testforge1",
            "image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
        },
        "time_ago": "1天前",
        "created_at_unix": 1632376903,
        "message": "jdfkls",
        "commit": {
            "sha": "08fe383f1e5ebe2e2a384a8ea3ee890a758c7cd7",
            "message": "add\n",
            "time_ago": "1天前",
            "created_at_unix": 1632376186,
            "committer": {
                "id": 4,
                "login": "testforge1",
                "name": "testforge1",
                "image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
            },
            "author": {
                "id": 4,
                "login": "testforge1",
                "name": "testforge1",
                "image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png"
            }
        }
    },
    {
        "name": "v1.0.0",
        "id": "12168ad39c3ef201a445a2db181a3e43d50e40dd",
        "zipball_url": "http://localhost:3000/api/yystopf/csfjkkj/archive/v1.0.0.zip",
        "tarball_url": "http://localhost:3000/api/yystopf/csfjkkj/archive/v1.0.0.tar.gz",
        "tagger": {
            "id": null,
            "login": "viletyy",
            "name": "viletyy",
            "image_url": "system/lets/letter_avatars/2/V/39_141_222/120.png"
        },
        "time_ago": "10天前",
        "created_at_unix": 1631588042,
        "message": "dfks",
        "commit": {
            "sha": "5291b5e45a377c1f7710cc6647259887ed7aaccf",
            "message": "ADD file via upload\n",
            "time_ago": "21天前",
            "created_at_unix": 1630648417,
            "committer": {
                "id": null,
                "login": "yystopf",
                "name": "yystopf",
                "image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
            },
            "author": {
                "id": null,
                "login": "yystopf",
                "name": "yystopf",
                "image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
            }
        }
    }
]

编辑仓库信息

编辑仓库信息

示例:

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
  }
]

获取仓库README文件

获取仓库README文件

示例:

curl -X GET \
-d "ref=master" \
-d "filepath=lib" \
http://localhost:3000/api/yystopf/csfjkkj/readme.json
await octokit.request('GET /api/yystopf/csfjkkj/readme.json')

HTTP 请求

GET /api/:owner/:repo/readme.json

请求参数:

参数 必选 默认 类型 字段说明
owner string 用户登录名
repo string 项目标识identifier
ref string 分支名称、tag名称或是提交记录id,默认为默认分支
filepath string 子目录名称,默认为空

返回字段说明:

参数 类型 字段说明
type string 文件类型, file:文件,dir:文件目录
encoding string 编码
size int 文件夹或文件大小 单位B
name string 文件夹或文件名称
path string 文件夹或文件相对路径
content string 文件内容
sha string 文件commitid

返回的JSON示例:

{
    "type": "file",
    "encoding": "base64",
    "size": 24,
    "name": "README.md",
    "path": "lib/README.md",
    "content": "ZGZhc2RhZGpmIGRrZnNsCgpzZGZkZnMK",
    "sha": "860962cd21c60b1a9e07d723080c87c32c18d44a"
}

获取仓库贡献者

获取仓库贡献者

示例:

curl -X GET \
-d "ref=master" \
-d "filepath=lib" \
http://localhost:3000/api/yystopf/csfjkkj/contributors.json
await octokit.request('GET /api/yystopf/csfjkkj/contributors.json')

HTTP 请求

GET /api/:owner/:repo/contributors.json

请求参数:

参数 必选 默认 类型 字段说明
owner string 用户登录名
repo string 项目标识identifier
ref string 分支名称、tag名称或是提交记录id,默认为整个仓库
filepath string 子目录名称,默认为空

返回字段说明:

参数 类型 字段说明
total_count integer 贡献者数量
contributions integer 贡献数量
login string 用户登录名
type string 用户类型
name string 用户昵称
image_url string 用户头像

返回的JSON示例:

{
    "contributors": [
        {
            "contributions": 5,
            "login": "testforge2",
            "type": "User",
            "name": "testforge2",
            "image_url": "system/lets/letter_avatars/2/T/236_177_85/120.png"
        },
        {
            "contributions": 79,
            "login": "yystopf",
            "type": "User",
            "name": "yystopf",
            "image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
        }
    ],
    "total_count": 2
}

获取仓库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

Get a pull request

获取合并请求详情接口

示例:

curl -X GET http://localhost:3000/api/Jasder/gitlink/pulls/88.json
await octokit.request('GET /api/Jasder/gitlink/pulls/88.json')

HTTP 请求

GET /api/:owner/:repo/pulls/:id.json

请求参数:

参数 必选 默认 类型 字段说明
owner string 用户登录名
repo string 项目标识identifier
id integer pull id值

返回的JSON示例:

{
    "status": 0,
    "message": "响应成功",
    "project_name": "Gitlink",
    "identifier": "forgeplus",
    "project_identifier": "forgeplus",
    "pr_time": "52分钟前",
    "commits_count": 229,
    "files_count": 328,
    "comments_count": 0,
    "comments_total_count": 0,
    "pull_request": {
        "id": 1189,
        "base": "master",
        "head": "develop",
        "status": 0,
        "fork_project_id": null,
        "is_original": false,
        "pull_request_staus": "open",
        "fork_project_user": null,
        "create_user": "jasder",
        "mergeable": true,
        "state": "open"
    },
    "issue": {
        "id": 51888,
        "subject": "FIx release v3.2.0",
        "description": null,
        "is_private": false,
        "branch_name": null,
        "project_author_name": "Gitlink",
        "closed_on": "",
        "created_at": "2021-10-12 15:51",
        "assign_user_name": "victor",
        "assign_user_login": "moshenglv",
        "author_name": "段甲生",
        "author_login": "jasder",
        "author_picture": "images/avatars/User/36480?t=1615520120",
        "issue_status": "新增",
        "priority": "正常",
        "version": null,
        "issue_tags": null
    },
    "conflict_files": []
}

获取pull request文件列表

获取pull request文件列表

示例:

curl -X GET \
http://localhost:3000/api/Jason/gitlink/pulls/1/files.json 
await octokit.request('GET /api/jasder/gitlink/pulls/1/files.json')

HTTP 请求

GET /api/:owner/:repo/pulls/:id/files.json

请求参数:

参数名 必选 类型 说明
owner string 用户登录名
repo string project's identifier
id int pull request's id

返回字段说明:

参数 类型 字段说明
- - -
files_count int 文件更改的总数量
total_addition int 添加代码总行数
total_deletion int 删除代码总行数
files array
-- sha string commit's sha value
-- name string 当前文件名
-- old_name string 修改之前的文件名称,与name相同的话,说明文件名未更改
-- addition int 文件添加的行数
-- deletion int 文件删除的行数
-- type int 文件类型, 1: 表示该文件只添加了内容,2: 表示该文件内容有修改, 3: 表示文件被删除或者改文件只删除了内容
-- isCreated boolean 当前文件是否为新增文件, true: 是, false: 否
-- isDeleted boolean 当前文件是否被删除, true: 是,false: 否
-- isBin boolean 当前文件是否为二进制文件,true: 是,false: 否
-- isLFSFile boolean 当前文件是否为LFS文件,true: 是,false: 否
-- isRenamed boolean 当前文件是否被重命名,true: 是,false: 否
-- sections array
---- fileName string 文件名称
---- lines array
------ leftIdx string 文件变动之前所在行数
------ rightIdx string 文件更改后所在行数
------ type string 文件变更类型,1: 新增,2: 修改, 3: 删除, 4: diff统计信息
------ content string 文件变更的内容
------ sectionInfo object
-------- path string 文件相对仓库的路径
-------- lastLeftIdx int
-------- lastRightIdx int
-------- leftHunkSize int 文件变更之前的行数
-------- rightHunkSize int 文件变更之后的行数(及当前页面编辑器显示的总行数)
-------- leftIdx int 文件变更之前所在行数
-------- rightIdx int 文件变更之后所在行数(即:页面编辑器开始显示的行数)

返回的JSON示例:

{
  "files_count": 6,
  "total_addition": 447,
  "total_deletion": 0,
  "files": [
    {
      "sha": "xefenisnii",
      "name": "文件.txt",
      "old_name": "文件.txt",
      "index": 6,
      "addition": 2,
      "deletion": 0,
      "type": 1,
      "isCreated": true,
      "isDeleted": false,
      "isBin": false,
      "isLFSFile": false,
      "isRenamed": false,
      "isSubmodule": false,
      "sections": [
        {
          "fileName": "文件.txt",
          "name": "",
          "lines": [
            {
              "leftIdx": 0,
              "rightIdx": 0,
              "type": 4,
              "content": "@@ -0,0 +1,2 @@",
              "sectionInfo": {
                "path": null,
                "lastLeftIdx": null,
                "lastRightIdx": null,
                "leftIdx": 0,
                "rightIdx": 0,
                "leftHunkSize": null,
                "rightHunkSize": null
              }
            },
            {
              "leftIdx": 0,
              "rightIdx": 1,
              "type": 2,
              "content": "+用例图一致性更新",
              "sectionInfo": null
            },
            {
              "leftIdx": 0,
              "rightIdx": 2,
              "type": 2,
              "content": "+工程文件直接上传会有文件缺失,现在压缩后上传",
              "sectionInfo": null
            }
          ]
        }
      ]
    }
  ]
}

获取pull request的commits列表

获取pull request的commits列表

示例:

curl -X GET http://localhost:3000/api/jasder/jasder_test/pulls/1/commits.json
await octokit.request('GET /api/jasder/jasder_test/pulls/1/commits.json')

HTTP 请求

GET /api/:owner/:repo/pulls/:id/commits.json

请求参数:

参数名 必选 类型 说明
owner string 用户登录名
repo string project's identifier
id int pull request's id

返回字段说明:

参数 类型 字段说明
commits_count int commits总数量
commits array
-- author object 项目作者
---- login string 用户login
---- name string 用户姓名
---- image_url string 用户头像
-- committer object commit提交用户
---- login string 用户login
---- name string 用户姓名
---- image_url string 用户头像
-- timestamp int commit的unix时间戳
-- time_from_now string commit’s 提交时间距当前时间的时间值
-- message string commit说明信息
-- sha string commit’s sha值

返回的JSON示例:

{
  "commits_count": 1,
  "commits": [
    {
      "author": {
        "id": 36480,
        "login": "jasder",
        "name": "段甲生",
        "image_url": "avatars/User/b"
      },
      "committer": {
        "id": 36480,
        "login": "jasder",
        "name": "段甲生",
        "image_url": "avatars/User/b"
      },
      "timestamp": 1604382982,
      "time_from_now": "3小时前",
      "message": "add some file\n* Add the tag list page to the release page\n* Apply suggestions from code review\n* Add the tags list view\n* Add the delete tag way on ui\n* Not delete tag and clear message when delete a release\n",
      "sha": "8f5faee0d3b3be1b8063e84da0c79dd75327b968"
    }
  ]
}

Compare two commits

Compare two commits

示例:

curl -X GET \
http://localhost:3000/api/Jason/test-txt/compare/master...develop

curl -X GET \
http://localhost:3000/api/Jason/test-txt/compare/master...Jason/test-txt:develop
await octokit.request('GET /api/Jason/test-txt/compare/master...Jason/test-txt:develop')

HTTP 请求

GET /api/:owner/:repo/compare/{base}...{head}.json

请求参数:

参数名 必选 类型 说明
owner string 用户登录名
repo string project's identifier
base string pull request's id
head string pull request's id

返回字段说明:

参数 类型 字段说明
- - -
commits_count int commits总数量
commits array
-- author object 项目作者
---- login string 用户login
---- name string 用户姓名
---- image_url string 用户头像
-- committer object commit提交用户
---- login string 用户login
---- name string 用户姓名
---- image_url string 用户头像
-- timestamp int commit的unix时间戳
-- time_from_now string commit’s 提交时间距当前时间的时间值
-- message string commit说明信息
-- sha string commit’s sha值
diff object
-- files_count int 文件更改的总数量
-- total_addition int 添加代码总行数
-- total_deletion int 删除代码总行数
-- files Array
-- sha string commit's sha
-- name string 当前文件名
-- old_name string 修改之前的文件名称,与name相同的话,说明文件名未更改
-- addition int 文件添加的行数
-- deletion int 文件删除的行数
-- type int 文件类型, 1: 表示该文件只添加了内容,2: 表示该文件内容有修改, 3: 表示文件被删除或者改文件只删除了内容
-- isCreated boolean 当前文件是否为新增文件, true: 是, false: 否
-- isDeleted boolean 当前文件是否被删除, true: 是,false: 否
-- isBin boolean 当前文件是否为二进制文件,true: 是,false: 否
-- isLFSFile boolean 当前文件是否为LFS文件,true: 是,false: 否
-- isRenamed boolean 当前文件是否被重命名,true: 是,false: 否
-- sections array
---- fileName string 文件名称
---- lines array
------ leftIdx string 文件变动之前所在行数
------ rightIdx string 文件更改后所在行数
------ type string 文件变更类型,1: 内容未改动,2: 添加, 3: 删除, 4: diff统计信息
------ content string 文件变更的内容
------ sectionInfo object
-------- path string 文件相对仓库的路径
-------- lastLeftIdx int
-------- lastRightIdx int
-------- leftHunkSize int 文件变更之前的行数
-------- rightHunkSize int 文件变更之后的行数(及当前页面编辑器显示的总行数)
-------- leftIdx int 文件变更之前所在行数
-------- rightIdx int 文件变更之后所在行数

返回的JSON示例:

{
  "commits_count": 1,
  "commits": [
    {
      "author": {
        "id": 36480,
        "login": "jasder",
        "name": "段甲生",
        "image_url": "avatars/User/b"
      },
      "committer": {
        "id": 36480,
        "login": "jasder",
        "name": "段甲生",
        "image_url": "avatars/User/b"
      },
      "timestamp": 1604382982,
      "time_from_now": "4小时前",
      "message": "add some file\n* Add the tag list page to the release page\n* Apply suggestions from code review\n* Add the tags list view\n* Add the delete tag way on ui\n* Not delete tag and clear message when delete a release\n",
      "sha": "8f5faee0d3b3be1b8063e84da0c79dd75327b968"
    }
  ],
  "diff": {
    "files_count": 6,
    "total_addition": 447,
    "total_deletion": 0,
    "files": [
      {
        "name": "build.go",
        "old_name": "build.go",
        "index": 1,
        "addition": 33,
        "deletion": 0,
        "type": 1,
        "isCreated": true,
        "isDeleted": false,
        "isBin": false,
        "isLFSFile": false,
        "isRenamed": false,
        "isSubmodule": false,
        "sections": [
          {
            "fileName": "build.go",
            "name": "",
            "lines": [
              {
                "leftIdx": 0,
                "rightIdx": 0,
                "type": 4,
                "content": "@@ -0,0 +1,33 @@",
                "sectionInfo": {
                  "path": "build.go",
                  "lastLeftIdx": 0,
                  "lastRightIdx": 0,
                  "leftIdx": 0,
                  "rightIdx": 1,
                  "leftHunkSize": 0,
                  "rightHunkSize": 33
                }
              },
              {
                "leftIdx": 0,
                "rightIdx": 1,
                "type": 2,
                "content": "+// Copyright 2020 The Gitea Authors. All rights reserved.",
                "sectionInfo": null
              }
            ]
          }
        ]
      }
    ]
  }

List pull requests

获取合并请求列表

示例:

curl -X GET http://localhost:3000/api/Jasder/gitlink/pulls.json
await octokit.request('GET /api/Jasder/gitlink/pulls.json')

HTTP 请求

GET /api/:owner/:repo/pulls.json

请求参数:

参数 必选 默认 类型 字段说明
owner string 用户登录名
repo string 项目标识identifier

返回的JSON示例:

{
  "status": 0,
  "message": "响应成功",
  "open_count": 4,
  "close_count": 51,
  "merged_issues_size": 123,
  "search_count": 4,
  "limit": null,
  "user_admin_or_member": true,
  "user_admin_or_developer": true,
  "project_name": "Gitlink",
  "project_author_name": "Gitlink",
  "issues": [
    {
      "pull_request_id": 1189,
      "pull_request_status": 0,
      "pull_request_head": "develop",
      "pull_request_base": "master",
      "pull_request_staus": "open",
      "is_original": false,
      "fork_project_id": null,
      "fork_project_identifier": null,
      "fork_project_user": null,
      "id": 51888,
      "name": "FIx release v3.2.0",
      "pr_time": "59分钟前",
      "assign_user_name": "victor",
      "assign_user_login": "moshenglv",
      "author_name": "段甲生",
      "author_login": "jasder",
      "avatar_url": "images/avatars/User/36480?t=1615520120",
      "priority": "正常",
      "version": null,
      "journals_count": 0,
      "issue_tags": null
    }
  ]
}

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.