forgeplus/api_document.md

82 KiB
Raw Blame History

# API文档 ## 基本介绍 ### 开发API服务地址 https://testgitea.trustie.net/ 响应状态说明: |字段|类型|说明| |-|-|-| |status |int |响应状态码0:请求成功,-1: 请求失败| |message |string |响应说明 | ### API接口

用户注册(通过其他平台)

POST accounts/remote_register

示例

curl -X POST \
-d "email=2456233122@qq.com" \
-d "password=djs_D_00001" \
-d "username=16895620" \
-d "platform=forge" \
http://localhost:3000/api/accounts/remote_register  | jq

请求参数说明:

参数名 必选 类型 说明
email string 邮箱
username string 登录名
password string 秘密
platform string 用户来源的相关平台,取值范围['educoder', 'trustie', 'forge'], 默认值为forge

返回参数说明:

参数名 类型 说明
user json object 返回数据
-- id int 用户id
-- token string 用户token

返回值

{
  "status": 0,
  "message": "success",
  "user": {
    "id": 36400,
    "token": "8c87a80d9cfacc92fcb2451845104f35119eda96"
  }
}

获取当前登录用户信息

GET api/users/me

示例

curl -X GET http://localhost:3000/api/users/me  | jq

返回参数说明:

参数名 类型 说明
user_id int 用户id
username string 用户名称
admin boolean 是否为管理用户
login string 登录名
image_url string 用户头像

返回值

{
  "username": "18816895620",
  "login": "18816895620",
  "user_id": 36401,
  "image_url": "avatars/User/b",
  "admin": false
}

用户列表(带搜索功能)

GET api/users/list

示例

curl -X GET \
-d "limit=10" \
-d "search=18816895620"
http://localhost:3000/api/users/list  | jq

请求参数说明:

参数名 必选 类型 说明
page int 页数,第几页
limit int 每页多少条数据默认15条
search string 用户名、登录名匹配搜索

返回参数说明:

参数名 类型 说明
total_count int 总用户条数
users array
-- username string 用户全名
-- login string 用户登录名
-- user_id int 用户id
-- image_url string 用户头像

返回值

{
  "total_count": 1,
  "users": [
    {
      "username": "18816895620",
      "login": "18816895620",
      "user_id": 36401,
      "image_url": "avatars/User/b"
    }
  ]
}

获取项目类别列表(可根据名称搜素)

GET api/project_categories

示例

curl -X GET \
-d "name=大数据" \
http://localhost:3000/api/project_categories/  | jq

请求参数说明:

参数名 必选 类型 说明
name string 类别名称

返回参数说明:

参数名 类型 说明
project_categories array 返回数据
-- id int 类别id
-- name string 类别名称

返回值

{
  "project_categories": [
    {
      "id": 1,
      "name": "大数据"
    }
  ]
}

获取项目语言列表(可根据名称搜素)

GET api/project_languages

示例

curl -X GET \
-d "name=Ruby" \
http://localhost:3000/api/project_languages/  | jq

请求参数说明:

参数名 必选 类型 说明
name string 类别名称

返回参数说明:

参数名 类型 说明
project_languages array 返回数据
-- id int 语言id
-- name string 语言名称

返回值

{
  "project_languages": [
    {
      "id": 1,
      "name": "Ruby"
    }
  ]
}

获取.gitignore模板列表(可根据名称搜素)

GET api/ignores

示例

curl -X GET \
-d "name=Ada" \
http://localhost:3000/api/ignores/  | jq

请求参数说明:

参数名 必选 类型 说明
name string gitignore名称

返回参数说明:

参数名 类型 说明
ignores array 返回数据
-- id int id
-- name string gitignore名称

返回值

{
  "ignores": [
    {
      "id": 1,
      "name": "Ada"
    }
  ]
}

获取开源许可证列表(可根据名称搜素)

GET api/licenses

示例

curl -X GET \
-d "name=AFL" \
http://localhost:3000/api/licenses/  | jq

请求参数说明:

参数名 必选 类型 说明
name string 开源许可证名称

返回参数说明:

参数名 类型 说明
licenses array 返回数据
-- id int id
-- name string 开源许可证名称

返回值

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

创建项目

POST api/projects

示例

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/  | jq

请求参数说明:

参数名 必选 类型 说明
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 项目名称

返回值

{
  "id": 3240,
  "name": "好项目"
}

新建镜像项目

POST api/projects/migrate

示例

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  | jq

请求参数说明:

参数名 必选 类型 说明
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 项目名称

返回值

{
  "id": 3263,
  "name": "ni项目"
}

手动同步镜像

POST api/repositories/:id/sync_mirror

示例

curl -X POST http://localhost:3000/api/repositories/1244/sync_mirror  | jq

请求参数说明:

参数名 必选 类型 说明
id int 仓库id

返回参数说明:

参数名 类型 说明
status int 状态码, 0:标识请求成功
message string 服务端返回的信息说明

返回值

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

项目详情

GET /api/:namespace_id/:id

示例

curl -X GET http://localhost:3000/api/jasder/jasder_test  | jq

请求参数说明:

参数名 必选 类型 说明
namespace_id string 用户登录名
id string 项目标识identifier

返回参数说明:

参数名 类型 说明
id int id
name string 项目名称
identifier string 项目标识
is_public boolean 项目是否公开, true:公开false:私有
description string 项目简介
repo_id int 仓库id
repo_identifier string 仓库标识

返回值

{
  "name": "ni项目",
  "identifier": "mirror_demo",
  "is_public": true,
  "description": "my first project mirror_demo",
  "repo_id": 75073,
  "repo_identifier": "mirror_demo"
}

项目详情(简版)

GET /api/:namespace_id/:id/simple

示例

curl -X GET http://localhost:3000/api/jasder/jasder_test/simple  | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id

返回参数说明:

参数名 类型 说明
id int id
name string 项目名称
identifier string 项目标识
is_public boolean 项目是否公开, true:公开false:私有
description string 项目简介
repo_id int 仓库id
repo_identifier string 仓库标识

返回值

{
  "identifier": "jasder_test",
  "name": "jasder的测试项目",
  "id": 4967,
  "type": 0,
  "author": {
    "login": "jasder",
    "name": "姓名",
    "image_url": "avatars/User/b"
  }
}

编辑仓库信息

GET  /api/repositories/:id/edit.json

示例

curl -X GET http://localhost:3000/api/repositories/:id/edit.json | jq

返回参数说明:

参数名 类型 说明
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: 公开

返回值

{
  "identifier": "mirror_demo",
  "project_id": 3263,
  "project_name": "ni项目",
  "project_identifier": "mirror_demo",
  "project_description": "my first project mirror_demo",
  "project_category_id": 1,
  "project_language_id": 2,
  "private": false
}

修改项目信息

PATCH api/projects/:id

示例

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/projects/3263.json  | jq

请求参数说明:

参数名 必选 类型 说明
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

返回值

{
  "id": 3263,
  "identifier": "mirror_demo",
  "name": "hnfl_demo",
  "description": "my first project",
  "project_category_id": 1,
  "project_language_id": 2,
  "is_public": true
}

删除项目

DELETE api/projects/:id

示例

curl -X DELETE http://localhost:3000/api/projects/3263.json  | jq

注:只有超级管理员和项目拥有者才能删除仓库

请求参数说明:

参数名 必选 类型 说明
id int 项目id

返回参数说明:

参数名 类型 说明
status int 返回状态, 0: 表示操作成功
message string 返回信息说明

返回值

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

项目添加成员

POST api/projects/:id/members

示例

curl -X POST \
-d "user_id=36406" \
http://localhost:3000/api/projects/3297/members  | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
user_id int 用户id

返回参数说明:

参数名 类型 说明
status int 0:添加成功, -1: 添加失败, 1: 表示已经是项目成员
message string 返回信息说明

返回值

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

项目删除成员

DELETE api/projects/:id/members/remove

示例

curl -X DELETE \
-d "user_id=36400" \
http://localhost:3000/api/projects/3263/members/remove  | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
user_id int 用户id

返回参数说明:

参数名 类型 说明
status int 0:移除成功, -1: 移除失败, 1: 表示还不是项目成员
message string 返回信息说明

返回值

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

更改项目成员角色/权限

PUT api/projects/:id/members/change_role

示例

curl -X PUT \
-d "user_id=36400" \
-d "role=Developer" \
http://localhost:3000/api/projects/3263/members/change_role  | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
user_id int 用户id
role string 取值范围:"Manager", "Developer", "Reporter";分别为项目管理人员(拥有所有操作权限)、项目开发人员(只拥有读写权限)、项目报告人员(只拥有读权限)

返回参数说明:

参数名 类型 说明
status int 0:角色更改成功, -1: 更改失败失败, 1: 表示还不是项目成员
message string 返回信息说明

返回值

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

项目成员列表

GET api/projects/:id/members

示例

curl -X GET \
-d "page=1" \
-d "limit=5" \
http://localhost:3000/api/projects/3263/members  | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
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:报告人员(只拥有读权限)

返回值

{
  "total_count": 2,
  "members": [
    {
      "id": 36401,
      "name": "18816895620",
      "login": "18816895620",
      "image_url": "avatars/User/b",
      "is_owner": true,
      "role": "Manager"
    },
    {
      "id": 36399,
      "name": "18816365620",
      "login": "18816365620",
      "image_url": "avatars/User/b",
      "is_owner": false,
      "role": "Developer"
    }
  ]
}

Fork项目

POST /api/projects/:project_id/forks

示例

curl -X POST http://localhost:3000/api/projects/3297/forks  | jq

请求参数说明:

参数名 必选 类型 说明
project_id int 项目id

返回参数说明:

参数名 类型 说明
id int 项目id
identifier string 项目标识

返回值

{
  "id": 3290,
  "identifier": "newadm"
}

获取代码目录列表

POST /api/:namespace_id/:project_id/repository/entries

示例

curl -X GET \
-d "ref=develop" \
http://localhost:3000//api/jasder/jasder_test/repository/entries  | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
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 标签

返回值

{
  "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": "51年前",
        "created_at_unix": null
      }
    },
    {
      "name": "ace-sidecar",
      "path": "ace-sidecar",
      "sha": "38e41d7810876b464f8f1adcbf998e1b04f710a7",
      "type": "dir",
      "size": 0,
      "content": null,
      "target": null,
      "commit": {
        "message": "[Feature] 升级spring 版本&consul注册中心\n",
        "sha": "c0a5dde35cfc87f7dbaf676aac397b184ba0e55b",
        "created_at": "1970-01-01 08:00",
        "time_from_now": "51年前",
        "created_at_unix": null
      }
    },
    ...
  ]
}

获取子目录代码列表/编辑某个具体的文件

GET /api/repositories/:id/sub_entries

示例

curl -X GET \
-d "ref=master" \
-d "filepath=test1_create_file.rb" \
http://localhost:3000/api/repositories/87/sub_entries.json | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
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 文件下载、文件内容访问链接

返回值

[
  {
    "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
  },
  {
    "name": "cfg.rc",
    "path": "lib/cfg.rc",
    "type": "file",
    "size": 107,
    "content": null,
    "target": null,
    "url": "http://localhost:3003/api/v1/repos/18816895620/mirror_demo/contents/lib/cfg.rc?ref=master",
    "html_url": "http://localhost:3003/18816895620/mirror_demo/src/branch/master/lib/cfg.rc",
    "git_url": "http://localhost:3003/api/v1/repos/18816895620/mirror_demo/git/blobs/0b91ba0ed1c00e130c77bb9058af3787fea986a0",
    "download_url": "http://localhost:3003/18816895620/mirror_demo/raw/branch/master/lib/cfg.rc"
  },
  {
    "name": "fn",
    "path": "lib/fn",
    "type": "dir",
    "size": 0,
    "content": null,
    "target": null,
    "url": "http://localhost:3003/api/v1/repos/18816895620/mirror_demo/contents/lib/fn?ref=master",
    "html_url": "http://localhost:3003/18816895620/mirror_demo/src/branch/master/lib/fn",
    "git_url": "http://localhost:3003/api/v1/repos/18816895620/mirror_demo/git/blobs/e33bd45949ef8f804471d0b6b2c59728eb445989",
    "download_url": null
  }
]

项目类别列表(用于项目列表左侧导航中的项目类别列表)

GET api/project_categories/group_list

示例

curl -X GET http://localhost:3000/api/project_categories/group_list | jq

返回参数说明:

参数名 类型 说明
id int 项目分类id
name string 项目分类名称
projects_count int 项目数量

返回值

[
  {
    "id": 1,
    "name": "大数据",
    "projects_count": 30
  },
  {
    "id": 2,
    "name": "机器学习",
    "projects_count": 1
  },
  {
    "id": 3,
    "name": "深度学习",
    "projects_count": 1
  }
]

项目类型列表(用于项目列表左侧导航上方中的项目类型列表)

GET api/projects/group_type_list

示例

curl -X GET http://localhost:3000/api/projects/group_type_list | jq

返回参数说明:

参数名 类型 说明
project_type string 项目类型
name string 项目类型名称
projects_count int 项目数量

返回值

[
  {
    "project_type": "common",
    "name": "开源托管项目",
    "projects_count": 2106
  },
  {
    "project_type": "mirror",
    "name": "开源镜像项目",
    "projects_count": 1
  }
]

项目列表

GET api/projects

示例

curl -X GET \
-d "page=1" \
-d "limit=5" \
http://localhost:3000/api/projects  | jq

请求参数说明:

参数名 必选 类型 说明
page string 页数,第几页
limit string 每页多少条数据默认15条
sort_by string 排序类型, 取值updated_on | created_on | forked_count | praises_count, updated_on: 更新时间排序created_on: 创建时间排序forked_count: fork数据排序praises_count: 点赞数量排序默认为updated_on更新时间排序
sort_direction string 排序方式,取值为: desc | asc; desc: 降序排序, asc: 升序排序, 默认为desc
search string 按照项目名称搜索
category_id int 项目类别id
language_id int 项目语言id
project_type 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 项目语言名称

返回值

{
  "total_count": 3096,
  "projects": [
    {
      "id": 1,
      "name": "hnfl_demo1",
      "description": "my first project",
      "visits": 0,
      "praises_count": 0,
      "forked_count": 0,
      "is_public": true,
      "mirror_url": null,
      "last_update_time": 1577697461,
      "author": {
        "name": "18816895620",
        "image_url": "avatars/User/b"
      },
      "category": {
        "id": 1,
        "name": "大数据"
      },
      "language": {
        "id": 2,
        "name": "C"
      }
    },
    {
      "id": 2,
      "name": "hnfl_demo",
      "description": "my first project",
      "visits": 0,
      "praises_count": 0,
      "forked_count": 0,
      "is_public": true,
      "mirror_url": null,
      "last_update_time": 1577697403,
      "author": {
        "name": "18816895620",
        "image_url": "avatars/User/b"
      },
      "category": {
        "id": 1,
        "name": "大数据"
      },
      "language": {
        "id": 2,
        "name": "C"
      }
    },
    {
      "id": 3,
      "name": "统计局",
      "description": "my first project",
      "visits": 0,
      "praises_count": 0,
      "forked_count": 0,
      "is_public": true,
      "mirror_url": null,
      "last_update_time": 1577415173,
      "author": {
        "name": "18816895620",
        "image_url": "avatars/User/b"
      },
      "category": {
        "id": 1,
        "name": "大数据"
      },
      "language": {
        "id": 2,
        "name": "C"
      }
    },
    {
      "id": 5,
      "name": "开源同名",
      "description": "my first project",
      "visits": 0,
      "praises_count": 0,
      "forked_count": 0,
      "is_public": false,
      "mirror_url": "https://gitea.com/CasperVector/slew.git",
      "last_update_time": 1577346228,
      "author": {
        "name": "18816895620",
        "image_url": "avatars/User/b"
      },
      "category": {
        "id": 1,
        "name": "大数据"
      },
      "language": {
        "id": 2,
        "name": "C"
      }
    },
    {
      "id": 7,
      "name": "开源支持",
      "description": "my first project",
      "visits": 0,
      "praises_count": 0,
      "forked_count": 0,
      "is_public": true,
      "mirror_url": null,
      "last_update_time": 1577341572,
      "author": {
        "name": "18816895620",
        "image_url": "avatars/User/b"
      },
      "category": {
        "id": 1,
        "name": "大数据"
      },
      "language": {
        "id": 2,
        "name": "C"
      }
    }
  ]
}

推荐项目

GET api/projects/recommend

示例

curl -X GET \
http://localhost:3000/api/projects/recommend  | jq

返回参数说明:

参数名 类型 说明
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 项目语言名称

返回值

[
  {
    "id": 20,
    "repo_id": null,
    "identifier": "PNAekinmH",
    "name": "FNILL",
    "visits": 13567,
    "author": {
      "name": "王一达",
      "login": "wangyida",
      "image_url": "avatars/User/b"
    },
    "category": {
      "id": 8,
      "name": "其他"
    }
  },
  ...
]


项目主页

GET api/:namespace_id/:id/about

示例

curl -X GET \
http://localhost:3000/api/:jason/forgeplus/about  | jq

请求参数说明:

参数名 必选 类型 说明
namespace_id string 用户登录名
id string 项目标识identifier

返回参数说明:

参数名 类型 说明
identifier string project's identifier
content string 主页内容
attachments array 附件
-- name string 用户名,也是用户标识

返回值

{
  "content": "",
  "identifier": "forgeplus",
  attachments: [

  ]
}


修改项目主页内容

POST api/:namespace_id/:id/about

示例

curl -X POST \
-d "content=内容" \
-d "attachment_ids=[1, 2, 2]" \
http://localhost:3000/api/:jasder/forgeplus/about  | jq

请求参数说明:

参数名 必选 类型 说明
namespace_id string 用户登录名
id string 项目标识identifier
content string 内容信息
attachment_ids array 附件id

返回参数说明:

参数名 类型 说明
identifier string project's identifier
content string 主页内容
attachments array 附件
-- name string 用户名,也是用户标识

返回值

{
  "content": "",
  "identifier": "forgeplus",
  attachments: [

  ]
}


获取分支列表

GET /api/:namespace_id/:id/branches

示例

curl -X GET http://localhost:3000/api/jasder/jasder_test/branches | jq

请求参数说明:

参数名 必选 类型 说明
id id 项目id

返回参数说明:

参数名 类型 说明
name string 分支名称
user_can_push boolean 用户是否可push
user_can_merge boolean 用户是否客merge
protected boolean 是否为保护分支
http_url boolean http链接
zip_url boolean zip包下载链接
tar_url boolean tar.gz下载链接
last_commit object 最后提交记录
-- id string 提交记录id
-- message string 提交的说明信息
-- timestamp int 提交时间为UNIX时间戳
-- time_from_now string 转换后的时间
author object 提交用户
-- login string 用户名称
-- image_url string 用户头像

返回值

[
  {
    "name": "develop",
    "user_can_push": true,
    "user_can_merge": true,
    "protected": false,
    "http_url": "http://localhost:3003/18816895620/mirror_demo.git",
    "zip_url": "http://localhost:3003/18816895620/mirror_demo/develop.zip",
    "tar_url": "http://localhost:3003/18816895620/mirror_demo/develop.tar.gz",
    "last_commit": {
      "id": "735674d6696bddbafa993db9c67b40c41246c77f",
      "message": "FIX test branch content\n",
      "timestamp": 1577694074,
      "time_from_now": "1天前"
    },
    "author": {
      "login": "18816895620",
      "image_url": "avatars/User/b"
    }
  },
  {
    "name": "master",
    "user_can_push": true,
    "user_can_merge": true,
    "protected": false,
    "http_url": "http://localhost:3003/18816895620/mirror_demo.git",
    "zip_url": "http://localhost:3003/18816895620/mirror_demo/master.zip",
    "tar_url": "http://localhost:3003/18816895620/mirror_demo/master.tar.gz",
    "last_commit": {
      "id": "19ac3bc45f62cc87a94b8ecce61101d8fd2dafd2",
      "message": "合并pull request测试\n\n该功能很不错感谢你的建议\n",
      "timestamp": 1577244567,
      "time_from_now": "6天前"
    },
    "author": {
      "login": "18816895620",
      "image_url": "avatars/User/b"
    }
  }
]

获取代码库标签列表

GET  /api/repositories/:id/tags

示例

curl -X GET \
-d "limit=20" \
-d "page=1" \
http://localhost:3000/api/repositories/5836/tags.json | jq

请求参数说明:

参数名 必选 类型 说明
id int 仓库id
page string 页数,第几页
limit string 每页多少条数据默认20条

返回参数说明:

参数名 类型 说明
name string 分支名称
user_can_push boolean 用户是否可push
user_can_merge boolean 用户是否客merge
protected boolean 是否为保护分支
http_url boolean http链接
zip_url boolean zip包下载链接
tar_url boolean tar.gz下载链接
last_commit object 最后提交记录
-- id string 提交记录id
-- message string 提交的说明信息
-- timestamp int 提交时间为UNIX时间戳
-- time_from_now string 转换后的时间
author object 提交用户
-- login string 用户名称
-- image_url string 用户头像

返回值

[
  {
    "name": "develop",
    "user_can_push": true,
    "user_can_merge": true,
    "protected": false,
    "http_url": "http://localhost:3003/18816895620/mirror_demo.git",
    "zip_url": "http://localhost:3003/18816895620/mirror_demo/develop.zip",
    "tar_url": "http://localhost:3003/18816895620/mirror_demo/develop.tar.gz",
    "last_commit": {
      "id": "735674d6696bddbafa993db9c67b40c41246c77f",
      "message": "FIX test branch content\n",
      "timestamp": 1577694074,
      "time_from_now": "1天前"
    },
    "author": {
      "login": "18816895620",
      "image_url": "avatars/User/b"
    }
  },
  {
    "name": "master",
    "user_can_push": true,
    "user_can_merge": true,
    "protected": false,
    "http_url": "http://localhost:3003/18816895620/mirror_demo.git",
    "zip_url": "http://localhost:3003/18816895620/mirror_demo/master.zip",
    "tar_url": "http://localhost:3003/18816895620/mirror_demo/master.tar.gz",
    "last_commit": {
      "id": "19ac3bc45f62cc87a94b8ecce61101d8fd2dafd2",
      "message": "合并pull request测试\n\n该功能很不错感谢你的建议\n",
      "timestamp": 1577244567,
      "time_from_now": "6天前"
    },
    "author": {
      "login": "18816895620",
      "image_url": "avatars/User/b"
    }
  }
]

仓库详情

GET /api/:namespace_id/:project_id/repository

示例

curl -X GET \
http://192.168.2.230:3000/api/jasder/forgeplus/repository | jq

请求参数说明:

参数名 必选 类型 说明
namespace_id string 用户登录名
project_id string 项目标识identifier

返回参数说明:

参数名 类型 说明
identifier string 仓库标识
project_id int 项目id
project_identifier string 项目标识
praises_count int 点赞数量
forked_count int fork数量
watchers_count int 关注数量
branches_count int 分支数量
commits_count int 总提交记录数量
issues_count int 总提交记录数量
pull_requests_count int 总提交记录数量
praised boolean 当前登录用户是否已点赞true:已点赞fasle:未点赞, 用户未登录状态为null
watched boolean 当前登录用户是否已关注true:已关注fasle:未关注, 用户未登录状态为null
permission string 当前登录用户对该仓库的操作权限, Manager:管理员,可以在线编辑文件、在线新建文件、可以设置仓库的基本信息; Developer:开发人员,可在线编辑文件、在线新建文件、不能设置仓库信息; Reporter: 报告人员只能查看信息不能设置仓库信息、不能在线编辑文件、不能在线新建文件用户未登录时也会返回Reporter, 说明也只有读取文件的权限
size int 仓库文件大小单位KB
type int 项目类型; 2: 表示是一个镜像(具备同步功能), 1: 普通镜像项目(不具同步功能), 0: 普通托管项目, 3: fork项目
mirror_status int 该字段在type字段为2(一个镜像)时才会出现; 0: 表示同步镜像成功1: 表示正在同步镜像2: 同步失败
mirror_url string 镜像地址, 只有通过镜像过来的项目才会有这个地址
ssh_url string 仓库ssh地址
clone_url string 仓库克隆地址
empty boolean 仓库是否为空true: 空仓库false: 非空仓库
private boolean 仓库是否私有true: 私有仓库fasle: 非私有的
default_branch string 仓库默认分支
full_name string 仓库全名(带用户名)
author object 提交用户
-- login string 用户login
-- name string 用户姓名
-- image_url string 用户头像

返回值

{
  "identifier": "mirror_demo",
  "project_id": 3263,
  "project_identifier": "mirror_demo",
  "praises_count": 1,
  "forked_count": 0,
  "watchers_count": 1,
  "branches_count": 6,
  "commits_count": 107,
  "issues_count": 0,
  "pull_requests_count": 0,
  "permission": "Manager",
  "mirror_url": "https://gitea.com/CasperVector/slew.git",
  "watched": true,
  "praised": true,
  "size": 446,
  "ssh_url": "jasder@localhost:18816895620/mirror_demo.git",
  "clone_url": "http://localhost:3003/18816895620/mirror_demo.git",
  "default_branch": "master",
  "empty": false,
  "full_name": "18816895620/mirror_demo",
  "mirror": false,
  "private": false,
  "author": {
    "login": "18816895620",
    "name": "美女",
    "image_url": "avatars/User/b"
  }
}

获取提交记录列表

GET  /api/repositories/:id/commits

示例

curl -X GET \
-d "sha=develop" \
-d "page=1" \
http://localhost:3000/api/repositories/89/commits.json | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
sha string 分支名称、提交记录的sha标识默认为master分支
page int 页数, 默认为1

返回参数说明:

参数名 类型 说明
total_count int 总记录条数
commits array 提交记录的数组
-- sha string 提交记录sha标识
-- message string 提交的备注说明
-- timestamp int 提交UNIX时间戳
-- time_from_now string 提交距离当前的时间
author object 提交用户
-- login string 用户名称
-- image_url string 用户头像

返回值

{
  "total_count": 63,
  "commits": [
    {
      "sha": "19ac3bc45f62cc87a94b8ecce61101d8fd2dafd2",
      "message": "合并pull request测试",
      "timestamp": 1577244567,
      "time_from_now": "7天前",
      "author": {
        "name": "18816895620",
        "image_url": "avatars/User/b"
      }
    },
    {
      "sha": "2b33c5f55214db41879936312ee43611406c4dbd",
      "message": "FIX .",
      "timestamp": 1577244474,
      "time_from_now": "7天前",
      "author": {
        "name": "18816895620",
        "image_url": "avatars/User/b"
      }
    }
  ]
}

获取某个提交记录(包含diff)

GET  /api/:owner/:repo/commits/:sha

示例

curl -X GET \
http://localhost:3000/api/jasder/repo/commits/b0c4a4a1487d53acebf2addc544b29938cad12df.json | jq

请求参数说明:

参数名 必选 类型 说明
owner string 仓库拥有者
repo string 仓库的identifier值
sha string git的ref或者是提交记录commit的sha标识

返回参数说明: 请参考compare接口

返回值

{
  "files_count": 6,
  "total_addition": 447,
  "total_deletion": 0,
  "commit": {
    "sha": "8f5faee0d3b3be1b8063e84da0c79dd75327b968",
    "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",
    "author": {
      "name": "Jasder",
      "email": "2053003901@@qq.com",
      "date": "2020-11-03T13:56:22+08:00"
    },
    "committer": {
      "name": "Jasder",
      "email": "2053003901@@qq.com",
      "date": "2020-11-03T13:56:22+08:00"
    },
    "timestamp": 1604382982,
    "time_from_now": "3天前"
  },
  "author": null,
  "committer": null,
  "parents": [
    {
      "sha": "c7f5b90725f30d8ad840a026773f9df92debc3af"
    },
  "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
            }
          ]
        }
      ]
    }
  ]
}

点赞

POST /api/projects/:id/praise_tread/like

示例

curl -X POST http://localhost:3000/api/projects/3263/praise_tread/like | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id

返回参数说明:

参数名 类型 说明
status int 0:点赞成功,-1:操作失败2:表示已经点过赞了

返回值

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

取消点赞

DELETE /api/projects/:id/praise_tread/unlike

示例

curl -X DELETE http://localhost:3000/api/projects/3263/praise_tread/unlike | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id

返回参数说明:

参数名 类型 说明
status int 0:点赞成功,-1:操作失败2:表示还未点赞

返回值

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

用户是否点过赞

GET /api/projects/:id/praise_tread/check_like

示例

curl -X GET http://localhost:3000/api/projects/3263/praise_tread/check_like | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id

返回参数说明:

参数名 类型 说明
status int 1:已点过赞0:未点过赞, -1:请求操作失败

返回值

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

项目的点赞者列表

GET /api/projects/:id/praise_tread

示例

curl -X GET \
-d "page=1" \
-d "limit=5" \
http://localhost:3000/api/projects/3263/praise_tread | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
page string 页数,第几页
limit string 每页多少条数据默认15条

返回参数说明:

参数名 类型 说明
total_count int 总条数
praises array 点赞数据
-- name string 用户名称
-- login string 用户标识/登录名(login)
-- image_url string 用户头像

返回值

{
  "total_count": 1,
  "praises": [
    {
      "name": "18816895620",
      "login": "18816895620",
      "image_url": "avatars/User/b"
    }
  ]
}

关注(项目)

POST /api/projects/:id/watchers/follow

示例

curl -X POST http://localhost:3000/api/projects/3263/watchers/follow | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id

返回参数说明:

参数名 类型 说明
status int 0:点赞成功,-1:操作失败2:表示已经点过赞了

返回值

{
    "status": 0,
    "message": "响应成功"
}

取消关注

DELETE /api/projects/:id/watchers/unfollow

示例

curl -X DELETE http://localhost:3000//api/projects/3263/watchers/unfollow | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id

返回参数说明:

参数名 类型 说明
status int 0:点赞成功,-1:操作失败2:表示还未点赞

返回值

{
  "status": 0,
  "message": "响应成功"
}

用户是否关注过项目

GET /api/projects/:id/watchers/check_watch

示例

curl -X GET http://localhost:3000/api/projects/3263/watchers/check_watch | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id

返回参数说明:

参数名 类型 说明
status int 1:已关注0:未关注, -1:请求操作失败

返回值

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

项目的关注者列表

GET /api/projects/:id/watchers

示例

curl -X GET \
-d "page=1" \
-d "limit=5" \
http://localhost:3000//api/projects/3263/watchers | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
page string 页数,第几页
limit string 每页多少条数据默认15条

返回参数说明:

参数名 类型 说明
total_count int 总条数
watchers array 关注数据
-- name string 用户名称
-- login string 用户标识/登录名(login)
-- image_url string 用户头像

返回值

{
  "total_count": 1,
  "watchers": [
    {
      "name": "18816895620",
      "login": "18816895620",
      "image_url": "avatars/User/b"
    }
  ]
}

仓库新建文件

POST /api/repositories/:id/create_file

示例

curl -X POST \
-d 'filepath=test1_create_file1.rb' \
-d 'branch=master' \
-d 'content=提交的内容' \
-d 'message=test commit ' \
http://localhost:3000/api/18816895620/mirror_demo/contents.json | jq

请求参数说明:

参数名 必选 类型 说明
id string 项目id
filepath string 文件相对于仓库的路径
content string 内容
message string 提交说明
branch string 分支名称, branch和new_branch必须存在一个
new_branch string 新的分支名称

返回参数说明:

参数名 类型 说明
name string 文件名
sha string 提交文件的sha值
size int 文件大小, 单位B
content string base64编码后的文件内容
encoding string 编码方式
commit object
-- message string 提交备注说明信息
-- committer object
---- name string 用户名
---- email string 用户邮箱
---- date string 文件创建时间

返回值

{
  "name": "test1_create_file12.rb",
  "sha": "7b70509105b587e71f5692b9e8ab70851e321f64",
  "size": 12,
  "content": "Wm5ObWMyRmtaZz09",
  "encoding": "base64",
  "commit": {
    "message": "good luck\n",
    "author": {
      "name": "18816895620",
      "email": "2456233122@qq.com",
      "date": "2020-01-07T03:31:20Z"
    },
    "committer": {
      "name": "18816895620",
      "email": "2456233122@qq.com",
      "date": "2020-01-07T03:31:20Z"
    }
  }
}

更新仓库中的文件

PUT /api/repositories/:id/update_file.json

示例

curl -X PUT \
-d 'filepath=text1.rb' \
-d 'branch=master' \
-d 'content=ruby code' \
-d 'message=更改提交信息' \
-d 'from_path=text.rb' \
-d "sha=57426eb21e4ceabdf4b206f022077e0040" \
http://localhost:3000/api/repositories/3938/update_file.json | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
filepath string 文件相对于仓库的路径(或修改后的文件路径)
from_path string 原文件相对于仓库的路径, 只有当需要修改原文件名称时,才需要该参数
sha string 文件的sha标识值
content string 内容
message string 提交说明
branch string 分支名称, branch和new_branch必须存在一个,且只能存在一个
new_branch string 新的分支名称

返回参数说明:

参数名 类型 说明
name string 文件名
sha string 提交文件的sha值
size int 文件大小, 单位B
content string base64编码后的文件内容
encoding string 编码方式
commit object
-- message string 提交备注说明信息
-- committer object
---- name string 用户名
---- email string 用户邮箱
---- date string 文件创建时间

返回值

{
  "name": "test1_create_file6.rb",
  "sha": "57426eb21e4ceabdf4b206f022257e08077e0040",
  "size": 16,
  "content": "5o+Q5Lqk55qE5YaF5a65MQ==",
  "encoding": "base64",
  "commit": {
    "message": "更改提交信息\n",
    "author": {
      "name": "18816895620",
      "email": "2456233122@qq.com",
      "date": "2020-01-08T07:05:15Z"
    },
    "committer": {
      "name": "18816895620",
      "email": "2456233122@qq.com",
      "date": "2020-01-08T07:05:15Z"
    }
  }
}

删除仓库中的文件

DELETE /api/repositories/:id/delete_file

示例

curl -X DELETE \
-d 'filepath=test1_create_file12.rb' \
-d 'test delete file' \
-d 'sha=7b70509105b587e71f5692b9e8ab70851e321f64' \
http://localhost:3000/api//api/repositories/3868/delete_file | jq

请求参数说明:

参数名 必选 类型 说明
id int 项目id
filepath string 文件相对于仓库的路径
message string 提交说明
branch string 分支名称, 默认为master分支
new_branch string 新的分支名称

返回参数说明:

参数名 类型 说明
sha string 提交文件的sha值
commit object
-- message string 提交备注说明信息
-- committer object
---- name string 用户名
---- email string 用户邮箱
---- date string 文件创建时间

返回值

{
  "commit": {
    "sha": "7b70509105b587e71f5692b9e8ab70851e321f64",
    "message": "Delete 'test1_create_file11.rb'\n",
    "author": {
      "name": "18816895620",
      "email": "2456233122@qq.com",
      "date": "2020-01-08T07:57:34Z"``
    },
    "committer": {
      "name": "18816895620",
      "email": "2456233122@qq.com",
      "date": "2020-01-08T07:57:34Z"
    }
  }
}

获取pull request文件列表

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

示例

curl -X GET \
http://localhost:3000/api/Jason/test-txt/pulls/1/files.json | jq

请求参数说明:

参数名 必选 类型 说明
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 文件变更之后所在行数(即:页面编辑器开始显示的行数)

返回值

{
  "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列表

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

示例

curl -X GET \
http://localhost:3000/api/Jason/repo/1/commits.json | jq

请求参数说明:

参数名 必选 类型 说明
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 commits 提交时间距当前时间的时间值
-- message string commit说明信息
-- sha string commits sha值

返回值

{
  "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

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

示例

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

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

请求参数说明:

参数名 必选 类型 说明
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 commits 提交时间距当前时间的时间值
-- message string commit说明信息
-- sha string commits 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 文件变更之后所在行数

返回值

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

DevOps相关api


获取devops流程步骤

GET  /api/:owner/:repo/ci_authorize

示例

curl -X GET \
http://localhost:3000/api/jasder/forgeplus/ci_authorize.json  | jq

请求参数说明:

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

返回参数说明:

参数名 类型 说明
step int 初始化devops流程步骤; 0: 标识未开启devops1: 标识用户已填写了云服务器相关信息,但并未开启认证, 2: 标识用户已开启了CI服务端的认证
account string 你的云服务器帐号
ip string 你的云服务器帐号ip
secret string 你的云服务器登录密码
authenticate_url string devops授权认证地址 只有填写了服务器相关信息后才会有该地址
get_drone_token_url string 获取CI服务端token地址, 只有认证成功后才会有该地址

返回值

{
  "step": 0,
  "cloud_account": {
    "id": 1,
    "account": "xxx",
    "ip": "xxx.xxx.xxx.x",
    "secret": "11111",
    "authenticate_url": "http://localhost:3000/login",
    "get_drone_token_url": "http://localhost:3000/account"
  }
}

初始化DevOps流程

POST  /api/:owner/:repo/cloud_accounts

示例

curl -X POST \
-d "account=xx" \
-d "secret=xxx" \
-d "ip_num=xx.xx.xx.xx" \
https://localhost:3000/api/jasder/forgeplus/cloud_accounts.json  | jq

请求参数说明:

参数名 必选 类型 说明
owner string 用户登录名
repo string project's identifier
account string 云服务器ssh连接登录用户名
secret string 云服务器ssh连接登录秘密
ip_num string 云服务器公网IP

返回参数说明:

参数名 类型 说明
status string 服务端返回状态0: 表示请求成功, -1: 标识请求失败
message string 服务端返回信息说明
redirect_url string 重定向地址,请求成功后,需要调整到该地址进行认证

返回值

{
  "status": 0,
  "message": "success",
  "redirect_url": "http://192.168.2.59:3003/login/oauth/authorize?client_id=f0c58484-d0f7-46c0-9efd-de3e3218e723&redirect_uri=http://121.36.81.172:80/login&response_type=code"
}

devops用户认证授权

GET /api/users/ci/oauth_grant

示例

curl -X GET \
-d "password=123456" \
http://localhost:3000/api/users/ci/oauth_grant.json | jq

请求参数说明:

参数名 必选 类型 说明
password string 用户密码

返回参数说明:

参数名 类型 说明
status int 0:成功, -1: 失败
{
  "status": 0,
  "message": "success"
}

激活项目

POST /api/:owner/:repo/activate

示例

curl -X POST \
http://localhost:3000/api/jasder/forgeplus/activate.json | jq

请求参数说明:

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

返回参数说明:

参数名 类型 说明
status int 0:成功, -1: 失败
{
  "status": 0,
  "message": "success"
}

取消激活项目

DELETE /api/:owner/:repo/deactivate

示例

curl -X POST \
http://localhost:3000/api/jasder/forgeplus/deactivate.json | jq

请求参数说明:

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

返回参数说明:

参数名 类型 说明
status int 0:成功, -1: 失败
{
  "status": 0,
  "message": "success"
}

获取仓库的.trustie-pipeline.yml

GET /api/:owner/:repo/get_trustie_pipeline

示例

curl -X GET \
http://localhost:3000/api/jasder/forge/get_trustie_pipeline.json | jq

请求参数说明:

参数名 必选 类型 说明
owner string 用户登录名
repo string project's identifier
ref string 分支名称、tag名称或是提交记录id默认为master分支

返回参数说明:

参数名 类型 说明
name string 文件夹或文件名称
path string 文件夹或文件相对路径
content string 文件内容,
{
  "name": ".trustie-pipeline.yml",
  "path": ".trustie-pipeline.yml",
  "sha": "548sfefsafef48sf485s4f",
  "content": "..jsaf"
}

更新'.trustie-pipeline.yml'文件

PUT /api/:owner/:repo/update_trustie_pipeline

示例

curl -X GET \
http://localhost:3000/api/jasder/forge/update_trustie_pipeline.json | jq

请求参数说明:

参数名 必选 类型 说明
owner string 用户登录名
repo string project's identifier
ref string 分支名称、tag名称或是提交记录id默认为master分支
filepath string 文件相对于仓库的路径(或修改后的文件路径)
from_path string 原文件相对于仓库的路径, 只有当需要修改原文件名称时,才需要该参数
sha string 文件的sha标识值
content string 内容
message string 提交说明
branch string 分支名称, branch和new_branch必须存在一个,且只能存在一个
new_branch string 新的分支名称
ci_language_id string 新的分支名称

返回参数说明:

参数名 类型 说明
status int 接口返回状态, 1: 请求成功, -1: 请求失败
message string 文件夹或文件相对路径
{
  "status": 1,
  "message": ".trustie-pipeline.yml"
}

获取语言列表

GET  /api/ci/languages

示例

curl -X GET http://localhost:3000/api/ci/languages.json | jq

返回参数说明:

参数名 类型 说明
id int id值
name string 语言名称
content string 语言内容
cover_url string 语言的logo链接

返回值

[
  {
    "id": 114,
    "name": "C",
    "cover_url": null,
    "content": "kind: pipeline\n          name: default\n\n          platform:\n            os: linux\n            arch: arm64\n\n          steps:\n          - name: test\n           image: gcc\n           commands:\n           - ./configure\n           - make\n           - make test",
  }
]

获取常用的6大语言

GET  /api/ci/languages/common

示例

curl -X GET http://localhost:3000/api/ci/languages/common.json | jq

返回参数说明:

参数名 类型 说明
id int id值
name string 语言名称
content string 语言内容
cover_url string 语言的logo链接

返回值

[
  {
    "id": 114,
    "name": "C",
    "cover_url": null,
    "content": "kind: pipeline\n          name: default\n\n          platform:\n            os: linux\n            arch: arm64\n\n          steps:\n          - name: test\n           image: gcc\n           commands:\n           - ./configure\n           - make\n           - make test",
  }
]

获取语言详情

GET  /api/ci/languages/:id

示例

curl -X GET http://localhost:3000/api/ci/languages/114.json | jq

请求参数说明:

参数名 必选 类型 说明
id int language's id

返回参数说明:

参数名 类型 说明
id int id值
name string 语言名称
content string 语言内容
cover_url string 语言的logo链接

返回值

[
  {
    "id": 114,
    "name": "C",
    "cover_url": null,
    "content": "kind: pipeline\n          name: default\n\n          platform:\n            os: linux\n            arch: arm64\n\n          steps:\n          - name: test\n           image: gcc\n           commands:\n           - ./configure\n           - make\n           - make test",
  }
]

获取构建列表

GET  /api/:owner/:repo/builds

示例

curl -X GET \
http://localhost:3000/api/Jason/forge/builds | jq

请求参数说明:

参数名 必选 类型 说明
owner string 项目拥有者
repo string 项目identifier
page string 页数,第几页
limit string 每页多少条数据默认20条
search string 构建状态条件过滤; 值说明pending: 准备中failure: 构建失败running: 运行中error构建失败(.trustie-pipeline.yml文件错误)success: 构建成功killed: 撤销构建

返回参数说明:

参数名 类型 说明
id int build's id
number string build's number
status string build's result
event string build's event

返回值

[
  {
    "id": 1,
    "repo_id": 8,
    "trigger": "@hook",
    "number": 1,
    "status": "success",
    "event": "push",
    "action": "",
    "link": "",
    "timestamp": 0,
    "message": "更新 '.trustie-pipeline.yml'\n",
    "before": "5e7c6f7dfd5ce6cc6e287fcbc000dadd9992b324",
    "after": "5e52ce51a239f5c8dd0b489a8a71e94f976179b4",
    "ref": "refs/heads/master",
    "source_repo": "",
    "source": "master",
    "target": "master",
    "author_login": "jasder",
    "author_name": "jasder",
    "author_email": "email.com",
    "author_avatar": "",
    "sender": "jasder",
    "started": "2020-08-19 06:22",
    "finished": "2020-08-19 06:22",
    "created": "2020-08-19 06:22",
    "updated": "2020-08-19 06:22",
    "duration_time": 0,
    "version": 3
  }
]

获取某条构建详情信息

GET  /api/:owner/:repo/builds/:build

示例

curl -X GET \
http://ocalhost:3000/api/jasder/forge/builds/1 | jq

请求参数说明:

参数名 必选 类型 说明
build int build's number

返回参数说明:

参数名 类型 说明
id int build's id
status string build's status
event string build's event

返回值

{
  "id": 1,
  "repo_id": 8,
  "trigger": "@hook",
  "number": 1,
  "status": "success",
  "event": "push",
  "action": "",
  "link": "http://localhost:3000/jasder/forgeplus/compare/5e7c6f7dfd5ce6cc6e287fcbc000dadd9992b324...5e52ce51a239f5c8dd0b489a8a71e94f976179b4",
  "timestamp": 0,
  "message": "更新 '.trustie-pipeline.yml'\n",
  "before": "5e7c6f7dfd5ce6cc6e287fcbc000dadd9992b324",
  "after": "5e52ce51a239f5c8dd0b489a8a71e94f976179b4",
  "ref": "refs/heads/master",
  "source_repo": "",
  "source": "master",
  "target": "master",
  "author_login": "jasder",
  "author_name": "jasder",
  "author_email": "2053003901@qq.com",
  "author_avatar": "http://localhost:3000/user/avatar/jasder/-1",
  "sender": "jasder",
  "started": 1595317786,
  "finished": 1595318426,
  "created": 1595317786,
  "updated": 1595317786,
  "version": 3,
  "stages": [
    {
      "id": 1,
      "repo_id": 8,
      "build_id": 1,
      "number": 1,
      "name": "default",
      "kind": "pipeline",
      "type": "docker",
      "status": "success",
      "errignore": false,
      "exit_code": 0,
      "machine": "121.36.81.172",
      "os": "linux",
      "arch": "arm64",
      "started": 1595317786,
      "stopped": 1595318426,
      "created": 1595317786,
      "updated": 1595318426,
      "version": 4,
      "on_success": true,
      "on_failure": false,
      "steps": [
        {
          "id": 1,
          "step_id": 1,
          "number": 1,
          "name": "clone",
          "status": "success",
          "exit_code": 0,
          "started": 1595317786,
          "stopped": 1595318373,
          "version": 4
        },
        {
          "id": 2,
          "step_id": 1,
          "number": 2,
          "name": "test",
          "status": "success",
          "exit_code": 0,
          "started": 1595318373,
          "stopped": 1595318426,
          "version": 4
        }
      ]
    }
  ]
}

重启构建/重新构建

POST  /api/:owner/:repo/builds/:build/restart

示例

curl -X POST \
http://localhost:3000/api/jasder/forgeplus/builds/1 | jq

请求参数说明:

参数名 必选 类型 说明
build int build's number

返回参数说明:

参数名 类型 说明
id int build's id
status string build's status
event string build's event

返回值

{
  "id": 2,
  "repo_id": 8,
  "trigger": "jasder",
  "number": 2,
  "status": "pending",
  "event": "push",
  "action": "",
  "link": "http://localhost:3000/jasder/forgeplus/compare/5e7c6f7dfd5ce6cc6e287fcbc000dadd9992b324...5e52ce51a239f5c8dd0b489a8a71e94f976179b4",
  "timestamp": 0,
  "message": "更新 '.trustie-pipeline.yml'\n",
  "before": "5e7c6f7dfd5ce6cc6e287fcbc000dadd9992b324",
  "after": "5e52ce51a239f5c8dd0b489a8a71e94f976179b4",
  "ref": "refs/heads/master",
  "source_repo": "",
  "source": "master",
  "target": "master",
  "author_login": "jasder",
  "author_name": "jasder",
  "author_email": "2053003901@qq.com",
  "author_avatar": "http://localhost:3000/user/avatar/jasder/-1",
  "sender": "jasder",
  "started": 0,
  "finished": 0,
  "created": 1595321350,
  "updated": 1595321350,
  "version": 1
}

关闭构建

DELETE  /api/:owner/:repo/builds/:build/stop

示例

curl -X DELETE \
http://localhost:3000/api/jaser/forge/builds/2 | jq

请求参数说明:

参数名 必选 类型 说明
build int build's number

返回参数说明:

参数名 类型 说明
id int build's id
status string build's status
event string build's event

返回值

{
  "id": 2,
  "repo_id": 8,
  "trigger": "jasder",
  "number": 2,
  "status": "killed",
  "event": "push",
  "action": "",
  "link": "http://localhost:3000/jasder/forgeplus/compare/5e7c6f7dfd5ce6cc6e287fcbc000dadd9992b324...5e52ce51a239f5c8dd0b489a8a71e94f976179b4",
  "timestamp": 0,
  "message": "更新 '.trustie-pipeline.yml'\n",
  "before": "5e7c6f7dfd5ce6cc6e287fcbc000dadd9992b324",
  "after": "5e52ce51a239f5c8dd0b489a8a71e94f976179b4",
  "ref": "refs/heads/master",
  "source_repo": "",
  "source": "master",
  "target": "master",
  "author_login": "jasder",
  "author_name": "jasder",
  "author_email": "2053003901@qq.com",
  "author_avatar": "http://localhost:3000/user/avatar/jasder/-1",
  "sender": "jasder",
  "started": 1595321352,
  "finished": 1595321590,
  "created": 1595321350,
  "updated": 1595321352,
  "version": 3,
  "stages": [
    {
      "id": 2,
      "repo_id": 8,
      "build_id": 2,
      "number": 1,
      "name": "default",
      "kind": "pipeline",
      "type": "docker",
      "status": "killed",
      "errignore": false,
      "exit_code": 0,
      "machine": "121.36.81.172",
      "os": "linux",
      "arch": "arm64",
      "started": 1595321352,
      "stopped": 1595321590,
      "created": 1595321350,
      "updated": 1595321352,
      "version": 4,
      "on_success": true,
      "on_failure": false,
      "steps": [
        {
          "id": 3,
          "step_id": 2,
          "number": 1,
          "name": "clone",
          "status": "killed",
          "exit_code": 130,
          "started": 1595321353,
          "stopped": 1595321590,
          "version": 3
        },
        {
          "id": 4,
          "step_id": 2,
          "number": 2,
          "name": "test",
          "status": "skipped",
          "exit_code": 130,
          "started": 1595321590,
          "stopped": 1595321590,
          "version": 2
        }
      ]
    }
  ]
}

获取某条构建的log信息

GET  /api/:owner/:repo/builds/:build/logs/:stage/:step

示例

curl -X GET \
http://localhost:3000/api/dev_ops/builds/2/logs/1/1 | jq

请求参数说明:

参数名 必选 类型 说明
build int build's number
stage int build's stage number
step int build's step number

返回参数说明:

参数名 类型 说明
id int build's id
status string build's status
event string build's event

返回值

[
  {
    "pos": 0,
    "out": "+ git fetch origin +refs/heads/master:\n",
    "time": 1
  },
  {
    "pos": 1,
    "out": "Initialized empty Git repository in /drone/src/.git/\n",
    "time": 1
  },
  {
    "pos": 2,
    "out": "warning: redirecting to https://testgitea2.trustie.net/jasder/forgeplus.git/\n",
    "time": 1
  },
  {
    "pos": 3,
    "out": "From http://testgitea2.trustie.net/jasder/forgeplus\n",
    "time": 493
  },
  {
    "pos": 4,
    "out": " * branch            master     -> FETCH_HEAD\n",
    "time": 493
  },
  {
    "pos": 5,
    "out": " * [new branch]      master     -> origin/master\n",
    "time": 493
  },
  {
    "pos": 6,
    "out": "+ git checkout 5e52ce51a239f5c8dd0b489a8a71e94f976179b4 -b master\n",
    "time": 493
  },
  {
    "pos": 7,
    "out": "Already on 'master'\n",
    "time": 496
  }
]

获取CI服务器配置信息

GET  /api/users/ci/cloud_account

示例

curl -X GET \
http://localhost:3000/api/users/ci/cloud_account | jq

返回参数说明:

参数名 类型 说明
step int 0: 未绑定1: 未认证(已绑定)
ci_certification boolean true: 已认证, false: 未认证
ip string ci服务器ip
redirect_url string 认证地址

返回值

{
  "step": 0,
  "ci_certification": false,
  "cloud_account": {
    "ip": "xxx.xxx.xxx.x",
    "redirect_url": "http://localhost:3000/login",
  }
}

绑定CI服务器

POST  /api/users/ci/cloud_account/bind

示例

curl -X POST \
-d "account=xx" \
-d "secret=xxx" \
-d "ip_num=xx.xx.xx.xx" \
https://localhost:3000/api/users/ci/cloud_account/bind.json  | jq

请求参数说明:

参数名 必选 类型 说明
account string 云服务器ssh连接登录用户名
secret string 云服务器ssh连接登录秘密
ip_num string 云服务器公网IP

返回参数说明:

参数名 类型 说明
step int 0: 未绑定1: 未认证(已绑定)2: 已认证
ip string ci服务器ip
redirect_url string 认证地址

返回值

{
  "step": 0,
  "cloud_account": {
    "ip": "xxx.xxx.xxx.x",
    "redirect_url": "http://localhost:3000/login",
  }
}

解除CI服务器绑定

DELETE  /api/users/ci/cloud_account/unbind

示例

curl -X DELETE \
http://localhost:3000/api/users/ci/cloud_account/unbind.json | jq

返回参数说明:

参数名 类型 说明
status int 状态码, 0: 成功,-1: 失败
message string 返回信息说明

返回值

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

项目列表

GET  /api/users/:login/projects

示例

curl -X GET \
-d "page=1" \
-d "limit=20" \
http://localhost:3000/api/users/Jason/projects.json | jq

请求参数说明:

参数名 必选 类型 说明
page int 页数,第几页
limit int 每页多少条数据默认20条

返回参数说明:

参数名 类型 说明
total_count int 项目总条数
id string 项目id
name string 项目名称
description string 项目简介
open_devops boolean 激活状态true: 激活; false未激活
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 项目语言名称

返回值

{
  "total_count": 3096,
  "projects": [
    {
      "id": 1,
      "name": "hnfl_demo1",
      "description": "my first project",
      "visits": 0,
      "praises_count": 0,
      "forked_count": 0,
      "is_public": true,
      "mirror_url": null,
      "last_update_time": 1577697461,
      "author": {
        "name": "18816895620",
        "image_url": "avatars/User/b"
      },
      "category": {
        "id": 1,
        "name": "大数据"
      },
      "language": {
        "id": 2,
        "name": "C"
      }
    }
  ]
}