# Repositories ## 仓库详情 仓库详情 > 示例: ```shell curl -X GET http://localhost:3000/api/jasder/jasder_test.json ``` ```javascript 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示例: ```json { "name": "ni项目", "identifier": "mirror_demo", "is_public": true, "description": "my first project mirror_demo", "repo_id": 75073, "repo_identifier": "mirror_demo" } ``` ## 仓库详情(简版) 仓库详情 > 示例: ```shell curl -X GET http://localhost:3000/api/jasder/jasder_test/simple.json ``` ```javascript 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示例: ```json { "name": "ni项目", "identifier": "mirror_demo", "is_public": true, "description": "my first project mirror_demo", "repo_id": 75073, "repo_identifier": "mirror_demo" } ``` ## 仓库详情(新版) 仓库详情 > 示例: ```shell curl -X GET http://localhost:3000/api/yystopf/ceshi/detail.json ``` ```javascript 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示例: ```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%" } } ``` ## 仓库标签列表 仓库标签列表 > 示例: ```shell curl -X GET http://localhost:3000/api/yystopf/csfjkkj/tags.json ``` ```javascript 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示例: ```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" } } } ] ``` ## 编辑仓库信息 编辑仓库信息 > 示例: ```shell curl -X GET http://localhost:3000/api/jasder/jasder_test/edit.json ``` ```javascript 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示例: ```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 } ``` ## 修改仓库信息 修改仓库信息 > 示例: ```shell 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 ``` ```javascript 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|项目是否私有, true:为私有,false: 公开,默认为公开 | > 返回的JSON示例: ```json { "id": 3263, "identifier": "project identifier", "name": "project name", "description": "project description", "project_category_id": 1, "project_language_id": 2, "is_public": true } ``` ## 删除仓库 删除仓库 > 示例: ```shell curl -X DELETE http://localhost:3000/api/jasder/jasder_test.json ``` ```javascript 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示例: ```json { "status": 0, "message": "success" } ``` ## 添加仓库成员 仓库中添加成员操作 > 示例: ```shell curl -X POST \ -d "user_id=12" \ http://localhost:3000/api/jasder/jasder_test/collaborators.json ``` ```javascript 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示例: ```json { "status": 0, "message": "success" } ``` ## 删除仓库成员 仓库中删除成员操作 > 示例: ```shell curl -X DELETE \ -d "user_id=12" \ http://localhost:3000/api/jasder/jasder_test/collaborators.json ``` ```javascript 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示例: ```json { "status": 0, "message": "success" } ``` ## 更改仓库成员角色(权限) 更改仓库成员角色 > 示例: ```shell curl -X PUT \ -d "user_id=12" \ -d "role=Developer" \ http://localhost:3000/api/jasder/jasder_test/change_role.json ``` ```javascript 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示例: ```json { "status": 0, "message": "success" } ``` ## 获取仓库成员列表 获取仓库成员列表 > 示例: ```shell curl -X GET \ -d "page=1" \ -d "limit=5" \ http://localhost:3000/api/jasder/jasder_test/collaborators.json ``` ```javascript 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示例: ```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" } ] } ``` ## 获取仓库所有文件 获取仓库所有文件 > 示例: ```shell curl -X GET \ -d "ref=develop" \ http://localhost:3000/api/yystopf/ceshi/files.json ``` ```javascript 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示例: ```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" } ] ``` ## 获取仓库代码目录 获取仓库代码目录 > 示例: ```shell curl -X GET \ -d "ref=develop" \ http://localhost:3000//api/jasder/jasder_test/entries.json ``` ```javascript 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示例: ```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 } } ] } ``` ## 获取仓库代码子目录或者文件 获取仓库代码子目录或者文件 > 示例: ```shell curl -X GET \ -d "ref=master" \ -d "filepath=file" \ http://localhost:3000//api/jasder/jasder_test/sub_entries.json ``` ```javascript 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示例: ```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文件 > 示例: ```shell curl -X GET \ -d "ref=master" \ -d "filepath=lib" \ http://localhost:3000/api/yystopf/csfjkkj/readme.json ``` ```javascript 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示例: ```json { "type": "file", "encoding": "base64", "size": 24, "name": "README.md", "path": "lib/README.md", "content": "ZGZhc2RhZGpmIGRrZnNsCgpzZGZkZnMK", "sha": "860962cd21c60b1a9e07d723080c87c32c18d44a" } ``` ## 获取仓库贡献者 获取仓库贡献者 > 示例: ```shell curl -X GET \ -d "ref=master" \ -d "filepath=lib" \ http://localhost:3000/api/yystopf/csfjkkj/contributors.json ``` ```javascript 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示例: ```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列表 > 示例: ```shell curl -X GET \ http://localhost:3000/api/yystopf/ceshi/webhooks.json ``` ```javascript 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示例: ```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 > 示例: ```shell curl -X GET \ http://localhost:3000/api/yystopf/ceshi/webhooks/3/edit.json ``` ```javascript 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示例: ```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 > 示例: ```shell curl -X POST \ http://localhost:3000/api/yystopf/ceshi/webhooks.json ``` ```javascript 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示例: ```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示例: ```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 > 示例: ```shell curl -X PATCH \ http://localhost:3000/api/yystopf/ceshi/webhooks/7.json ``` ```javascript 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示例: ```json { "active": true, "content_type": "json", "http_method": "GET", "secret": "123456", "url": "http://localhost:10000", "branch_filter": "*", "events": ["push"] } ``` ### 返回字段说明: > 返回的JSON示例: ```json { "status": 0, "message": "success" } ``` ## 删除仓库webhook 删除仓库webhook > 示例: ```shell curl -X DELETE \ http://localhost:3000/api/yystopf/ceshi/webhooks/7.json ``` ```javascript 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示例: ```json { "status": 0, "message": "success" } ``` ## 获取仓库webhook的历史推送列表 获取仓库webhook的历史推送列表 > 示例: ```shell curl -X GET \ http://localhost:3000/api/yystopf/ceshi/webhooks/3/tasks.json ``` ```javascript 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示例: ```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": "
\n" }, "delivered_time": "2021-07-28 11:47:29" } ] } ``` ## 仓库webhook测试推送 仓库webhook测试推送 > 示例: ```shell curl -X POST \ http://localhost:3000/api/yystopf/ceshi/webhooks/3/test.json ``` ```javascript 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示例: ```json { "status": 0, "message": "success" } ```