CODING OPEN API
基础路径
API BASE URL
- https://{your-team}.coding.net
CODING 提供了丰富的 API 接口,注册应用即可使用,无需审核,支持两种认证方式:OAuth 2.0 协议、个人访问令牌。
OAuth 认证
创建 CODING 应用
- 点击【个人设置】->【开放生态】->【创建应用】,填写信息。「回调地址」可填写为
http://127.0.0.1
,便于本地开发。
- 创建完成会获得 Client ID 和 Client Secret。
用户授权
浏览器访问以下链接,进入到授权登录页面:
GET https://{your-team}.coding.net/oauth_authorize.html
参数说明:
- your-team:团队域名前缀;
- client_id:应用详情页的 Client ID;
- redirect_uri:应用详情页填写的回调地址;
- response_type:返回类型,固定为 code;
- scope:授权范围,以逗号分隔,包括:
scope 名称 | 授权 | 说明 |
---|---|---|
user | 读 | 获取用户信息(名称、头像等 ) |
user:email | 读 | 读取用户的 email |
notification | 读/写 | 读取用户通知信息 |
project | 读 | 授权项目信息、项目列表,仓库信息,公钥列表、成员 |
project:api_doc | 发布 | 授权发布 API 文档 |
project:artifacts | 读/写 | 授权推送、拉取制品库 |
project:depot | 读/写 | 完整的仓库控制权限 |
project:file | 读/写 | 授权读取与操作文件 |
project:issue | 读/写 | 授权读取与操作项目协同模块 |
project:key | 读/写 | 授权读取与操作部署公钥和个人公钥 |
project:members | 读/写 | 授权项目管理者读取与操作成员 |
project:notice | 读/写 | 授权发布、删除、查询项目公告接口 |
登录授权后,浏览器将带着授权码(code)参数跳转到回调地址,如:
http://127.0.0.1:9002/api/oauth/callback?code=7923f69445119400c12e1a70b027a97a
获取 access_token
获取授权码(code)后,开发者的后端程序向 CODING 发送请求,获取 access_token。
请求链接:
POST https://{your-team}.coding.net/api/oauth/access_token
参数说明:
- your-team:团队域名前缀;
- client_id:应用详情页的 Client ID;
- client_secret:应用详情页的 Client Secret;
- code:上一步获取的授权码;
- grant_type:授权类型,固定为 authorization_code;
返回值:
{
"access_token": "8883405e6c14856a1e2b3c4e2d2f2666",
"refresh_token": "6663211fda1a41f5a1c1fa320d819aaa",
"team": "anywhere",
"expires_in": "780260",
"token_type":"bearer"
}
获取当前用户信息
请求链接:
GET https://{your-team}.coding.net/api/me
参数说明:
- access_token:上一步获取的 access_token;
请求示例:
curl https://codes-farm.coding.net/api/me?access_token=at58a21646f43699196c42a30d77at
返回值:
{
"avatar": "https://coding-net-production-static-ci.codehub.cn/2cb665a3-bebc-4b09-aa00-2b6df3e33edc.jpg",
"created_at": 1572178118000,
"global_key": "KMRnIKgzbV",
"name": "sink",
"name_pinyin": "sink",
"updated_at": 1598411867000,
"path": "/u/KMRnIKgzbV",
"id": 183478,
"team": "anywhere",
"email_validation": 1
}
个人令牌认证
获取个人令牌
点击右上角的【个人设置】>【访问令牌】>【新建令牌】,勾选相关权限后会生成「个人访问令牌」。若刷新页面令牌会消失,需输入账号密码后重新生成。
获取当前用户信息
请求链接:
GET https://{your-team}.coding.net/api/me
header:
Authorization: token {访问令牌}
请求示例:
curl -H 'Authorization: token t0544956253e82fa2ba780a5248750t' \
https://codes-farm.coding.net/api/me
若提示错误,请在
-H
参数前添加--header 'Content-Type: application/json'
参数。
新版接口认证方式
新版接口不再使用 RESTFul,而使用 POST 和统一链接。
统一链接:https://e.coding.net/open-api
Accept: application/json
OAuth2:Authorization: Bearer at58a21646f43699196c42a30d77at
个人令牌:
Authorization: token f5d7a1e1dabb116335b648c5fd9a1c868e4f31d3
输入示例:
{
"Action":"DescribeOneProject",
"ProjectId":2
}
输出示例:
{
"Response": {
"Project": {
"Name": "coding-demo",
"Id": 2,
},
"RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
}
}
查询团队内所有项目列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingProjects。 |
PageNumber | 是 | Integer | 页数 |
PageSize | 是 | Integer | 每页条数 |
ProjectName | 否 | String | 项目名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Data | ProjectsData | 项目列表数据 |
ProjectsData
名称 | 类型 | 描述 |
---|---|---|
PageNumber | Integer | 第几页 |
PageSize | Integer | 每页条数 |
TotalCount | Integer | 总条数 |
ProjectList | Array of Project | 项目集合 |
Project
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 项目 ID |
CreatedAt | Integer | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | Integer | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
Status | Integer | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Type | Integer | 类型 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
DisplayName | String | 显示名称 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
Icon | String | 图标 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IsDemo | Boolean | 是否为模板项目 注意:此字段可能返回 null,表示取不到有效值。 |
MaxMember | Integer | 最大团员数 注意:此字段可能返回 null,表示取不到有效值。 |
UserOwnerId | Integer | 个人所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Archived | Boolean | 是否压缩 注意:此字段可能返回 null,表示取不到有效值。 |
StartDate | Integer | 项目开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
TeamOwnerId | Integer | 团队所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
EndDate | Integer | 项目结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingProjects",
3 "ProjectName": "coding",
4 "PageNumber": 1,
5 "PageSize": 10
6}
成功示例
1{
2 "Response": {
3 "RequestId": "f41034cf-169d-4373-0514-334885a6a9db",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 1,
7 "TotalCount": 1,
8 "ProjectList": [
9 {
10 "Id": 1,
11 "CreatedAt": 1619580482000,
12 "UpdatedAt": 1619580482000,
13 "Status": 1,
14 "Type": 2,
15 "MaxMember": 0,
16 "Name": "empty",
17 "DisplayName": "empty",
18 "Description": "",
19 "Icon": "https://e.coding.net/static/project_icon/scenery-version-2-4.svg",
20 "TeamOwnerId": 1,
21 "UserOwnerId": 0,
22 "StartDate": 0,
23 "EndDate": 0,
24 "TeamId": 1,
25 "IsDemo": false,
26 "Archived": false
27 }
28 ]
29 }
30 }
31}
查询团队成员列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTeamMembers。 |
PageNumber | 是 | Integer | 请求页数 |
PageSize | 是 | Integer | 请求条数 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [TeamMemberData] | 团队成员分页列表信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
TeamMemberData
团队成员分页信息
名称 | 类型 | 描述 |
---|---|---|
PageNumber | Integer | 第几页 |
PageSize | Integer | 每页条数 |
TotalCount | Integer | 总条数 |
TeamMembers | Array of [UserData] | 成员列表信息 |
UserData
用户成员信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户Id |
TeamId | Integer | 团队Id |
Name | String | 用户名 |
NamePinYin | String | 用户名拼音 |
Avatar | String | 头像 |
String | 邮箱 | |
Phone | String | 手机号 |
EmailValidation | Integer | 邮箱是否验证 0 否 /1 是 |
PhoneValidation | Integer | 手机是否验证 0 否 /1 是 |
Status | Integer | 用户状态 |
Example 1
成功示例
1{
2 "Action": "DescribeTeamMembers",
3 "PageNumber": 1,
4 "PageSize": 10
5}
成功示例
1{
2 "Response": {
3 "RequestId": "de0438d0-1e5e-098f-872a-c96863ed3510",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 1,
7 "TotalCount": 6,
8 "TeamMembers": [
9 {
10 "Id": 6,
11 "TeamId": 1,
12 "Name": "blockuser",
13 "NamePinYin": "blockuser",
14 "Avatar": "http://e.coding.net/static/fruit_avatar/Fruit-4.png",
15 "Email": "blockuser@gmail.com",
16 "Phone": "13800138006",
17 "EmailValidation": 1,
18 "PhoneValidation": 1,
19 "Status": -1
20 }
21 ]
22 }
23 }
24}
创建项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCodingProject |
Name | 是 | String | 项目标识 |
DisplayName | 是 | String | 项目名称 |
GitReadmeEnabled | 否 | Boolean | 启用 README.md 文件初始化项目 true|false |
VcsType | 否 | String | git|svn|hg |
CreateSvnLayout | 否 | Boolean | 是否创建 SVN 仓库推荐布局 默认 false |
Shared | 是 | Integer | 0: 不公开 1:公开源代码 |
ProjectTemplate | 是 | String | 项目模版 CODE_HOST 代码托管项目, PROJECT_MANAGE 项目管理项目, DEV_OPS DevOps 项目, DEMO_BEGIN 范例项目 |
Description | 否 | String | 项目描述 |
Icon | 否 | String | 项目图标 |
GitIgnore | 否 | String | git ignore 文件类型 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProjectId | Integer | 项目 Id |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateCodingProject",
3 "Name": "project",
4 "DisplayName": "project",
5 "Description": "project",
6 "GitReadmeEnabled": true,
7 "VcsType": "git",
8 "CreateSvnLayout": false,
9 "Shared": 1,
10 "ProjectTemplate": "DEV_OPS"
11}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a",
4 "ProjectId": 1
5 }
6}
编辑项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyProject |
ProjectId | 是 | Integer | 项目 id |
Name | 是 | String | 项目标识 |
DisplayName | 是 | String | 项目名称 |
Description | 否 | String | 项目描述 |
StartDate | 否 | String | 开始时间 |
EndDate | 否 | String | 结束时间 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyProject",
3 "ProjectId": 1,
4 "Name": "project",
5 "DisplayName": "project",
6 "Description": "project",
7 "StartDate": "2020-01-01",
8 "EndDate": "2020-01-02"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
删除项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteOneProject |
ProjectId | 是 | Integer | 项目 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteOneProject",
3 "ProjectId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
查询项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeOneProject |
ProjectId | 是 | Integer | 项目 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Project | Project | 项目信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
项目信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 项目 ID |
CreatedAt | Integer | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | Integer | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
Status | Integer | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Type | Integer | 类型 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
DisplayName | String | 显示名称 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
Icon | String | 图标 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IsDemo | Boolean | 是否为模板项目 注意:此字段可能返回 null,表示取不到有效值。 |
MaxMember | Integer | 最大团员数 注意:此字段可能返回 null,表示取不到有效值。 |
UserOwnerId | Integer | 个人所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Archived | Boolean | 是否压缩 注意:此字段可能返回 null,表示取不到有效值。 |
StartDate | Integer | 项目开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
TeamOwnerId | Integer | 团队所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
EndDate | Integer | 项目结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeOneProject",
3 "ProjectId": 2
4}
成功示例
1{
2 "Response": {
3 "Project": {
4 "Name": "coding-demo",
5 "Id": 2,
6 "Type": 2,
7 "DisplayName": "示例项目",
8 "Icon": "https://codehub.cn/7971.png",
9 "Description": "CODING 示例项目",
10 "CreatedAt": 1572933083682,
11 "MaxMember": 0,
12 "TeamId": 12,
13 "UserOwnerId": 0,
14 "IsDemo": true,
15 "Archived": false,
16 "StartDate": 0,
17 "UpdatedAt": 1572933083682,
18 "TeamOwnerId": 0,
19 "EndDate": 0,
20 "Status": 1
21 },
22 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
23 }
24}
查询项目成员列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectMembers。 |
PageNumber | 是 | Integer | 请求页数 |
PageSize | 是 | Integer | 请求条数 |
ProjectId | 是 | Integer | 项目Id |
RoleId | 否 | Integer | 用户组Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [ProjectMemberData] | 项目成员分页列表信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ProjectMemberData
项目成员分页信息
名称 | 类型 | 描述 |
---|---|---|
PageNumber | Integer | 第几页 |
PageSize | Integer | 每页条数 |
TotalCount | Integer | 总条数 |
ProjectMembers | Array of [UserData] | 项目成员列表信息 |
UserData
用户成员信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户Id |
TeamId | Integer | 团队Id |
Name | String | 用户名 |
NamePinYin | String | 用户名拼音 |
Avatar | String | 头像 |
String | 邮箱 | |
Phone | String | 手机号 |
EmailValidation | Integer | 邮箱是否验证 0 否 /1 是 |
PhoneValidation | Integer | 手机是否验证 0 否 /1 是 |
Status | Integer | 用户状态 |
Role
用户组
名称 | 类型 | 描述 |
---|---|---|
RoleId | Integer | 用户组Id |
RoleType | String | 用户组类型 |
RoleTypeName | String | 用户组类型名称 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectMembers",
3 "PageNumber": 1,
4 "PageSize": 10,
5 "ProjectId": 1,
6 "RoleId": 1
7}
成功示例
1{
2 "Response": {
3 "RequestId": "de0438d0-1e5e-098f-872a-c96863ed3510",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 1,
7 "TotalCount": 6,
8 "ProjectMembers": [
9 {
10 "Id": 6,
11 "TeamId": 1,
12 "Name": "blockuser",
13 "NamePinYin": "blockuser",
14 "Avatar": "http://e.coding.net/static/fruit_avatar/Fruit-4.png",
15 "Email": "blockuser@gmail.com",
16 "Phone": "13800138006",
17 "EmailValidation": 1,
18 "PhoneValidation": 1,
19 "Status": -1,
20 "GlobalKey": "GK",
21 "Roles": [
22 {
23 "RoleType": "ProjectMember",
24 "RoleId": 1,
25 "RoleTypeName": "开发"
26 }
27 ]
28 }
29 ]
30 }
31 }
32}
查询项目根据项目名称
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectByName。 |
ProjectName | 是 | String | 项目名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Project | [Project] | 项目信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Project
项目信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 项目 ID |
CreatedAt | Integer | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | Integer | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
Status | Integer | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Type | Integer | 类型 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
DisplayName | String | 显示名称 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
Icon | String | 图标 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IsDemo | Boolean | 是否为模板项目 注意:此字段可能返回 null,表示取不到有效值。 |
MaxMember | Integer | 最大团员数 注意:此字段可能返回 null,表示取不到有效值。 |
UserOwnerId | Integer | 个人所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Archived | Boolean | 是否压缩 注意:此字段可能返回 null,表示取不到有效值。 |
StartDate | Integer | 项目开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
TeamOwnerId | Integer | 团队所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
EndDate | Integer | 项目结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectByName",
3 "ProjectName": "coding"
4}
成功示例
1{
2 "Response": {
3 "Project": {
4 "Name": "coding-demo",
5 "Id": 2,
6 "Type": 2,
7 "DisplayName": "示例项目",
8 "Icon": "https://dn-coding-net-production-pp.codehub.cn/79a8bcc4-d9cc-4061-940d-5b3bb31bf571.png",
9 "Description": "CODING 示例项目",
10 "CreatedAt": 1572933083682,
11 "MaxMember": 0,
12 "TeamId": 12,
13 "UserOwnerId": 0,
14 "IsDemo": true,
15 "Archived": false,
16 "StartDate": 0,
17 "UpdatedAt": 1572933083682,
18 "TeamOwnerId": 0,
19 "EndDate": 0,
20 "Status": 1
21 },
22 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
23 }
24}
增加项目成员
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateProjectMember。 |
ProjectId | 是 | Integer | 项目Id |
Type | 是 | Integer | 类型 |90 项目管理员|80 项目成员 |
UserGlobalKeyList.N | 是 | Array of String | 用户user gk数组 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateProjectMember",
3 "ProjectId": 1,
4 "Type": 1,
5 "UserGlobalKeyList": [
6 "gk1",
7 "gk2"
8 ]
9}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
查询成员所在项目列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeUserProjects |
UserId | 是 | Integer | 成员 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProjectList | Array of Project | 项目列表信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 项目 ID |
CreatedAt | Integer | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | Integer | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
Status | Integer | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Type | Integer | 类型 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
DisplayName | String | 显示名称 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
Icon | String | 图标 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IsDemo | Boolean | 是否为模板项目 注意:此字段可能返回 null,表示取不到有效值。 |
MaxMember | Integer | 最大团员数 注意:此字段可能返回 null,表示取不到有效值。 |
UserOwnerId | Integer | 个人所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Archived | Boolean | 是否压缩 注意:此字段可能返回 null,表示取不到有效值。 |
StartDate | Integer | 项目开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
TeamOwnerId | Integer | 团队所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
EndDate | Integer | 项目结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeUserProjects",
3 "userId": 2
4}
成功示例
1{
2 "Response": {
3 "ProjectList": [
4 {
5 "Name": "coding-demo",
6 "Id": 2,
7 "Type": 2,
8 "DisplayName": "示例项目",
9 "Icon": "https://dn-coding-net-production-pp.codehub.cn/79a8bcc4-d9cc-4061-940d-5b3bb31bf571.png",
10 "Description": "CODING 示例项目",
11 "CreatedAt": 1572933083682,
12 "MaxMember": 0,
13 "TeamId": 12,
14 "UserOwnerId": 0,
15 "IsDemo": true,
16 "Archived": false,
17 "StartDate": 0,
18 "UpdatedAt": 1572933083682,
19 "TeamOwnerId": 0,
20 "EndDate": 0,
21 "Status": 1
22 }
23 ],
24 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
25 }
26}
获取用户个人信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCurrentUser |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
User | User 类型 | 用户个人信息 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 ID |
Status | Integer | 状态(新用户/已激活) 注意:此字段可能返回 null,表示取不到有效值。 |
String | 邮箱 注意:此字段可能返回 null,表示取不到有效值。 | |
GlobalKey | String | 用户唯一标志 注意:此字段可能返回 null,表示取不到有效值。 |
Avatar | String | 头像地址 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 姓名 注意:此字段可能返回 null,表示取不到有效值。 |
NamePinYin | String | 姓名拼音 注意:此字段可能返回 null,表示取不到有效值。 |
Phone | String | 联系电话 注意:此字段可能返回 null,表示取不到有效值。 |
PhoneValidation | Integer | 手机是否已验证 注意:此字段可能返回 null,表示取不到有效值。 |
EmailValidation | Integer | 邮箱是否已验证 注意:此字段可能返回 null,表示取不到有效值。 |
PhoneRegionCode | String | 手机号地区 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCurrentUser"
3}
成功示例
1{
2 "Response": {
3 "RequestId": "367bdaa8-e4c7-a070-ecf6-00fea8e6fab9",
4 "User": {
5 "Id": 150258,
6 "Status": 1,
7 "Email": "test@coding.net",
8 "GlobalKey": "EHRIORBbfF",
9 "Avatar": "https://coding-net-production-static-ci.codehub.cn/WM-TEXT-AVATAR-nfutKljCRlKcSLDTOmrv.jpg",
10 "Name": "张三",
11 "NamePinYin": "zhangsan",
12 "Phone": "13800138000",
13 "PhoneValidation": 1,
14 "EmailValidation": 1,
15 "PhoneRegionCode": "+86",
16 "TeamId": 102882
17 }
18 }
19}
配置项目成员权限
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyProjectPermission。 |
RoleId | 是 | Integer | 权限 ID |
UserGK | 是 | String | user gk |
ProjectId | 是 | Integer | 项目 Id |
ActionFlag | 是 | Boolean | 权限创建、删除 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyProjectPermission",
3 "RoleId": 120,
4 "UserGK": "TDqyhVeWYN",
5 "ProjectId": 2,
6 "ActionFlag": false
7}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
查询项目用户组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectRoles。 |
ProjectId | 是 | Integer | 项目Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Roles | Array of [Role] | 用户组 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Role
用户组
名称 | 类型 | 描述 |
---|---|---|
RoleId | Integer | 用户组Id |
RoleType | String | 用户组类型 |
RoleTypeName | String | 用户组类型名称 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectRoles",
3 "ProjectId": "1"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "de0438d0-1e5e-098f-872a-c96863ed3510",
4 "Roles": [
5 {
6 "RoleType": "ProjectMember",
7 "RoleId": 1,
8 "RoleTypeName": "开发"
9 }
10 ]
11 }
12}
查询需求关联事项列表
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeRequirementDefectRelation。 |
ProjectName | 是 | String | 项目名称 |
RequirementCode | 是 | Integer | 需求 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issues | Array of IssueSimpleData | 缺陷列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeRequirementDefectRelation",
3 "ProjectName": "project-demo",
4 "RequirementCode": 1
5}
成功示例
1{
2 "Response": {
3 "Issues": [
4 {
5 "Code": 27,
6 "Type": "REQUIREMENT",
7 "Name": "xxx",
8 "IssueStatusId": 4,
9 "IssueStatusName": "未开始",
10 "IssueStatusType": "TODO",
11 "Priority": "3",
12 "Assignee": {
13 "Status": 1,
14 "Name": "xxx",
15 "Id": 1,
16 "Phone": "111",
17 "TeamId": 1,
18 "GlobalKey": "coding",
19 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20 "Email": "coding.com",
21 "TeamGlobalKey": "coding"
22 }
23 },
24 {
25 "Code": 25,
26 "Type": "REQUIREMENT",
27 "Name": "xxx",
28 "IssueStatusId": 4,
29 "IssueStatusName": "未开始",
30 "IssueStatusType": "TODO",
31 "Priority": "3",
32 "Assignee": {
33 "Status": 1,
34 "Name": "xxx",
35 "Id": 1,
36 "Phone": "111",
37 "TeamId": 1,
38 "GlobalKey": "coding",
39 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40 "Email": "coding.com",
41 "TeamGlobalKey": "coding"
42 }
43 }
44 ],
45 "RequestId": "1"
46 }
47}
修改缺陷所属的需求
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyDefectRelatedRequirement。 |
ProjectName | 是 | String | 项目名称 |
DefectCode | 是 | Integer | 缺陷 Code |
RequirementCode | 是 | Integer | 需求 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "DefectCode": 2,
4 "RequirementCode": 3
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
需求关联缺陷
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateRequirementDefectRelation。 |
ProjectName | 是 | String | 项目名称 |
RequirementCode | 是 | Integer | 需求 Code |
DefectCode | 是 | Integer | 缺陷 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "RequirementCode": 1,
4 "DefectCode": 2
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
创建事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIssue |
ProjectName | 是 | String | 项目名称 |
Type | 是 | String | 事项类型 DEFECT - 缺陷 STORY - 用户故事 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 SUB_TASK - 子工作项 RISK - 风险 WORK_ITEM - 工作项(项目集使用) |
IssueTypeId | 否 | Integer | 具体事项类型 ID,参考 DescribeTeamIssueTypeList |
ParentCode | 否 | Integer | 所属事项 Code,Type 为 SUB_TASK 时需指定 |
Name | 是 | String | 事项名称 |
StatusId | 否 | Integer | 事项状态 Id |
AssigneeId | 否 | Integer | 指派人 Id |
Description | 否 | String | 描述 |
DueDate | 否 | String | 截止日期 |
StartDate | 否 | String | 开始日期 |
WorkingHours | 否 | Double | 工时(小时) |
ProjectModuleId | 否 | Integer | 项目模块 Id |
WatcherIds | 否 | Array of Integer | 事项关注人 Id 列表 |
DefectTypeId | 否 | Integer | 项目缺陷类型 Id |
RequirementTypeId | 否 | Integer | 项目需求类型 Id |
Priority | 是 | String | 紧急程度 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 |
IterationCode | 否 | Integer | 迭代 Code,Type 为 EPIC 或 SUB_TASK 时,忽略该值 |
ReleaseCodes | 否 | Array of Integer | 版本 Code 列表 |
EpicCode | 否 | Integer | 史诗 Code,Type 为 EPIC 或 SUB_TASK 时,不传该值 |
StoryPoint | 否 | String | 故事点,例如:0.5、1 |
LabelIds | 否 | Array of Integer | 标签 Id 列表 |
FileIds | 否 | Array of Integer | 文件 Id 列表 |
TargetSortCode | 否 | Integer | 排序目标位置的事项 code 可不填,排在底位 |
ThirdLinks | 否 | Array of CreateThirdLinkForm | 第三方链接列表 |
CustomFieldValues | 否 | Array of IssueCustomFieldForm | 自定义属性值列表,具体见创建示例 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issue | IssueDetail | 事项信息。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueDetail
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型: DEFECT - 缺陷, REQUIREMENT - 需求, MISSION - 任务, EPIC - 史诗, SUB_TASK - 子工作项 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
Assignee | UserSimple | 处理人,Assignee.Id 等于 0 时表示未指定。 |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
Creator | UserSimple | 创建人 |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
ProjectModule | ProjectModule | 项目模块,ProjectModule.Id 等于 0 时表示未指定。 |
Watchers | Array of UserSimple | 关注人 |
Labels | Array of Label | 标签列表 |
Files | Array of ProjectFile | 附件列表 |
RequirementType | 需求类型 | |
DefectType | DefectType | 缺陷类型 |
CustomFields | Array of CustomField | 自定义字段列表 |
ThirdLinks | Array of ThirdLink | 第三方链接列表 |
SubTasks | Array of SubTask | 子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList) |
Parent | IssueSimple | 父事项 |
Epic | Epic | 所属史诗 |
Iteration | IterationSimple | 所属迭代 |
UserSimple
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Status | Integer | 用户状态 |
Avatar | String | 头像地址 |
Name | String | 姓名 |
String | 邮箱 |
ProjectModule
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 模块名称 |
Label
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 名称 |
Color | String | 颜色 |
ProjectFile
参数名称 | 类型 | 描述 |
---|---|---|
FileId | Integer | 文件 Id |
Name | String | 文件名称 |
Type | Integer | 类型 0 - 文件夹 1 - 文本 2 - 图片 3 - 二进制 4 - SVG |
Size | Long | 大小(比特) |
Url | String | 下载地址 |
CustomField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 自定义属性 Id |
ValueString | String | 自定义属性值,JSON 字符串 根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组 另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象 |
ThirdLink
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 第三方链接 Id |
ThirdType | Integer | 第三方链接类型,MODAO - 墨刀 |
Link | String | 链接地址 |
Title | String | 名称 |
IssueSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
Epic
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
SubTask
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
IterationSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 迭代代码 |
Name | String | 迭代名称 |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "CreateIssue",
3 "ProjectName": "demo-project",
4 "Type": "REQUIREMENT",
5 "Name": "一个需求",
6 "Priority": "0",
7 "CustomFieldValues": [
8 {
9 "Id": 34929409,
10 "Content": "1(普通字段)"
11 },
12 {
13 "Id": 34929409,
14 "Content": "1,2,3(多选字段)"
15 }
16 ]
17}
成功示例
1{
2 "Response": {
3 "RequestId": "c2e8cdce-9d9f-be99-e209-3dae07b690ac",
4 "Issue": {
5 "ParentType": "REQUIREMENT",
6 "Code": 27,
7 "Type": "REQUIREMENT",
8 "Name": "test-20200826-1",
9 "Description": "",
10 "IterationId": 0,
11 "IssueStatusId": 4,
12 "IssueStatusName": "未开始",
13 "IssueStatusType": "TODO",
14 "Priority": "0",
15 "Assignee": {
16 "Id": 0,
17 "Status": 0,
18 "GlobalKey": "",
19 "Avatar": "",
20 "Media": "",
21 "Name": "",
22 "Email": ""
23 },
24 "StartDate": 0,
25 "DueDate": 0,
26 "WorkingHours": 0,
27 "Creator": {
28 "Id": 1,
29 "Status": 2,
30 "GlobalKey": "coding",
31 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
32 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
33 "Name": "coding",
34 "Email": ""
35 },
36 "StoryPoint": "",
37 "CreatedAt": 1598843625826,
38 "UpdatedAt": 1598843625826,
39 "CompletedAt": 0,
40 "ProjectModule": {
41 "Id": 0,
42 "Name": ""
43 },
44 "Watchers": [
45 {
46 "Id": 1,
47 "Status": 2,
48 "GlobalKey": "coding",
49 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
50 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
51 "Name": "coding",
52 "Email": ""
53 }
54 ],
55 "Labels": [],
56 "Files": [],
57 "RequirementType": {
58 "Id": 0,
59 "Name": ""
60 },
61 "DefectType": {
62 "Id": 0,
63 "Name": "",
64 "IconUrl": ""
65 },
66 "CustomFields": [],
67 "ThirdLinks": [],
68 "SubTasks": [],
69 "Parent": {
70 "Code": 0,
71 "Type": "",
72 "Name": "",
73 "IssueStatusId": 0,
74 "IssueStatusName": "",
75 "Priority": "",
76 "Assignee": {
77 "Id": 0,
78 "Status": 0,
79 "GlobalKey": "",
80 "Avatar": "",
81 "Media": "",
82 "Name": "",
83 "Email": ""
84 }
85 },
86 "Epic": {
87 "Code": 0,
88 "Type": "",
89 "Name": "",
90 "IssueStatusId": 0,
91 "IssueStatusName": "",
92 "Priority": "",
93 "Assignee": {
94 "Id": 0,
95 "Status": 0,
96 "GlobalKey": "",
97 "Avatar": "",
98 "Media": "",
99 "Name": "",
100 "Email": ""
101 }
102 },
103 "IssueTypeDetail": {
104 "Id": 1,
105 "Name": "用户故事",
106 "IssueType": "REQUIREMENT",
107 "Description": "",
108 "IsSystem": false
109 }
110 }
111 }
112}
删除事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteIssue |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
IssueType | 否 | String | 事项类型,可不填 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteIssue",
3 "ProjectName": "demo-project",
4 "IssueCode": 3
5}
成功示例
1{
2 "Response": {
3 "RequestId": "135f80f0-0577-6421-293e-ec231ff3b337"
4 }
5}
查询事项附件的下载地址
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueFileUrl |
ProjectName | 是 | String | 项目名称 |
FileId | 是 | Integer | 文件 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Url | String | 文件下载地址 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueFileUrl",
3 "ProjectName": "project-demo",
4 "FileId": 7
5}
成功示例
1{
2 "Response": {
3 "RequestId": "3cdcc77c-f1a3-1695-fafe-6bb4fc71b647",
4 "Url": "http://coding-net-test-self-1257242599.cos.ap-shanghai.myqcloud.com/b6357cc0-e357-11ea-af4e-4177fbfe7a25.txt?sign=q-sign-algorithm=sha1&q-ak=AKIDUnFWaPTLQccQyIsuIdCdq04B8xd6iOK4&q-sign-time=1599013747;1599017347&q-key-time=1599013747;1599017347&q-header-list=&q-url-param-list=response-content-disposition;response-expires&q-signature=4aa5d8f991c0388561f0c43e0f15059e91ccede7&response-content-disposition=attachment;filename=testfile-20200821104044.txt&response-expires=Fri, 04 Sep 2020 14:29:07 GMT"
5 }
6}
查询筛选器列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueFilterList |
ProjectName | 是 | String | 项目名称 |
IssueType | 是 | String | 事项类型 ALL - 全部事项 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | IssueFilterListData | 过滤器列表,包含系统过滤器和自定义过滤器。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueFilterListData
参数名称 | 类型 | 描述 |
---|---|---|
SystemFilterList | Array of IssueFilter | 系统过滤器列表 |
SystemFilterList | Array of IssueFilter | 自定义过滤器列表 |
IssueFilter
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 过滤器 ID |
IssueType | String | 事项类型 |
CreatorId | Integer | 创建人 ID |
Name | String | 名称 |
IsSystem | Boolean | 是否是团队筛选器 |
SharedTeam | Boolean | 是否是系统自带 |
IsDefault | Boolean | 默认筛选器 |
Content | String | 筛选组合,JSON 字符串 例如:{"filterIssueType":"ALL","sort":{"key":"PRIORITY","value":"DESC"},"conditions": [{"value":["TODO","PROCESSING"],"key":"STATUS_TYPE","fixed":true,"filterIssueType":"ALL","projectId":1},{"value":[],"key":"ASSIGNEE","fixed":true,"constValue":["UNSPECIFIC"] ,"filterIssueType":"ALL","projectId":1} |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueFilterList",
3 "ProjectName": "demo-project",
4 "IssueType": "REQUIREMENT"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "146e1c15-b712-a7b6-851b-16267a079fad",
4 "Data": {
5 "SystemFilterList": [
6 {
7 "Id": 1,
8 "IssueType": "REQUIREMENT",
9 "CreatorId": 1,
10 "Name": "我未完成的",
11 "IsSystem": true,
12 "SharedTeam": false,
13 "IsDefault": false,
14 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"STATUS_TYPE\",\"Fixed\":true,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[\"TODO\",\"PROCESSING\"],\"TeamView\":false},{\"Key\":\"ASSIGNEE\",\"Fixed\":true,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[1],\"ValueChanged\":null,\"ValidInfo\":null,\"Status\":null,\"TeamView\":false}]}",
15 "CreatedAt": 1597908832000,
16 "UpdatedAt": 1597908832000
17 },
18 {
19 "Id": 2,
20 "IssueType": "REQUIREMENT",
21 "CreatorId": 1,
22 "Name": "分配给我的",
23 "IsSystem": true,
24 "SharedTeam": false,
25 "IsDefault": false,
26 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"ASSIGNEE\",\"Fixed\":true,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[1],\"ValueChanged\":null,\"ValidInfo\":null,\"Status\":null,\"TeamView\":false}]}",
27 "CreatedAt": 1597908833000,
28 "UpdatedAt": 1597908833000
29 },
30 {
31 "Id": 3,
32 "IssueType": "REQUIREMENT",
33 "CreatorId": 1,
34 "Name": "我创建的",
35 "IsSystem": true,
36 "SharedTeam": false,
37 "IsDefault": false,
38 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"CREATOR\",\"Fixed\":false,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[1],\"ValueChanged\":false,\"ValidInfo\":null,\"Status\":null,\"TeamView\":false}]}",
39 "CreatedAt": 1597908833000,
40 "UpdatedAt": 1597908833000
41 },
42 {
43 "Id": 4,
44 "IssueType": "REQUIREMENT",
45 "CreatorId": 1,
46 "Name": "我关注的",
47 "IsSystem": true,
48 "SharedTeam": false,
49 "IsDefault": false,
50 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"WATCHER\",\"Fixed\":false,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[1],\"ValueChanged\":null,\"ValidInfo\":null,\"Status\":null,\"TeamView\":false}]}",
51 "CreatedAt": 1597908833000,
52 "UpdatedAt": 1597908833000
53 },
54 {
55 "Id": 5,
56 "IssueType": "REQUIREMENT",
57 "CreatorId": 1,
58 "Name": "全部打开的",
59 "IsSystem": true,
60 "SharedTeam": false,
61 "IsDefault": true,
62 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"STATUS_TYPE\",\"Fixed\":true,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[\"TODO\",\"PROCESSING\"],\"TeamView\":false}]}",
63 "CreatedAt": 1597908833000,
64 "UpdatedAt": 1597908833000
65 },
66 {
67 "Id": 6,
68 "IssueType": "REQUIREMENT",
69 "CreatorId": 1,
70 "Name": "全部",
71 "IsSystem": true,
72 "SharedTeam": false,
73 "IsDefault": false,
74 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"CREATED_AT\",\"Value\":\"DESC\"},\"Conditions\":[]}",
75 "CreatedAt": 1597908833000,
76 "UpdatedAt": 1597908833000
77 }
78 ],
79 "CustomFilterList": []
80 }
81 }
82}
查询事项列表(旧)
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueList |
ProjectName | 是 | String | 项目名称 |
IssueType | 是 | Integer | 事项类型 ALL - 全部事项 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 |
Offset | 是 | Integer | 偏移量,默认 0 |
Limit | 是 | Integer | 限制数目,默认 20 |
Conditions | 否 | Array of IssueCondition | 筛选条件列表 |
SortKey | 否 | String | 排序字段,默认:CODE 可选值:STATUS, CREATED_AT, PRIORITY, UPDATED_AT, DUE_DATE, CODE, JOIN_ITERATION_AT, STATUS_TYPE, ASSIGNEE, PROJECT_ID, ISSUE_STATUS_ID, ISSUE_ITERATION_SORT, ISSUE_ROADMAP_SORT, PARENT_ID, COMPLETED_AT |
SortValue | 否 | String | 排序方式 DESC - 倒序(默认值) ASC - 正序 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
IssueList | Array of IssueListData | 事项列表。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueCondition
参数名称 | 类型 | 描述 |
---|---|---|
Key | String | 筛选字段 KEY,可选值如下。 ISSUE_TYPE_ID:事项类型,可以参考 DescribeTeamIssueTypeList,多选 DEFECT_TYPE:缺陷类型,多选 REQUIREMENT_TYPE:需求类型,多选 MISSION_TYPE:任务类型,多选 PRIORITY:优先级,多选 DUE_DATE:截止日期,日期范围 UPDATED_AT:更新时间,日期范围 CREATED_AT:创建时间,日期范围 START_DATE:开始日期,日期范围 ASSIGNEE:处理人ID,多选 CREATOR:创建者ID,多选 WATCHER:关注者ID,多选 MODULE:模块,多选 LABEL:标签,多选 STATUS:状态,多选 STATUS_TYPE:状态类型,多选 KEYWORD:事项名称、CODE 模糊搜索 ISSUE_TYPE:事项类型,多选 ISSUE_SUB_TYPE:事项的子项类型,多选 WORKING_HOURS:预估工时,数值范围 ITERATION:迭代,多选 PARENT:父需求,多选 CUSTOM:自定义字段,同时需指定 CustomFieldId |
Value | String | 筛选值,多选值用逗号隔开。 日期格式: 2020-08-01,日期时间格式: 2020-08-01 12:00:00 整数、小数、日期、日期时间类型的字段值应为一个范围,前后闭区间,范围开始值与结束值之间使用"_"连接,例如:"0.1_5.0"、"2020-08-01_2020-08-31"。 |
ConstValue | String | 常量值 "UNSPECIFIC" 表示未指定,例如:处理人、需求类型、标签等字段,使用此值来筛选未指定处理人、需求类型或标签的事项。 |
CustomFieldId | Integer | 自定义字段 Id,Key 为 "CUSTOM" 时需设置该值,常规字段无需设置。 |
IssueListData
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型 |
IssueTypeId | Integer | 事项类型ID |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
AssigneeId | Integer | 处理人 Id |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
CreatorId | Integer | 创建人 Id |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
Iteration | IterationSimple | 迭代信息 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueList",
3 "ProjectName": "demo-project",
4 "IssueType": "ALL",
5 "Offset": 0,
6 "Limit": 10,
7 "Conditions": [
8 {
9 "Key": "STATUS_TYPE",
10 "Value": "TODO"
11 },
12 {
13 "Key": "ISSUE_TYPE_ID",
14 "Value": "1,2"
15 },
16 {
17 "Key": "ASSIGNEE",
18 "Value": "1,2,3"
19 },
20 {
21 "Key": "CUSTOM",
22 "CustomFieldId": 1,
23 "Value": "please fill custom field value id"
24 }
25 ]
26}
成功示例
1{
2 "Response": {
3 "RequestId": "35c5b423-d311-d27f-f48c-a2ddf8b1cc59",
4 "IssueList": [
5 {
6 "ParentType": "REQUIREMENT",
7 "Code": 27,
8 "Type": "REQUIREMENT",
9 "Name": "this demo issue",
10 "Description": "",
11 "IterationId": 1,
12 "IssueStatusId": 4,
13 "IssueStatusName": "未开始",
14 "IssueStatusType": "TODO",
15 "Priority": "3",
16 "AssigneeId": 0,
17 "StartDate": 0,
18 "DueDate": 0,
19 "WorkingHours": 0,
20 "CreatorId": 1,
21 "StoryPoint": "0.5",
22 "CreatedAt": 1598843625000,
23 "UpdatedAt": 1598922564000,
24 "CompletedAt": 0,
25 "Iteration": {
26 "Code": 1,
27 "Name": "Q1 Spring1",
28 "Status": "PROCESSING"
29 },
30 "IssueTypeDetail": {
31 "Id": 1,
32 "Name": "用户故事",
33 "IssueType": "REQUIREMENT",
34 "Description": "",
35 "IsSystem": false
36 }
37 },
38 {
39 "ParentType": "REQUIREMENT",
40 "Code": 25,
41 "Type": "REQUIREMENT",
42 "Name": "test-20200826-1",
43 "Description": "",
44 "IterationId": 1,
45 "IssueStatusId": 4,
46 "IssueStatusName": "未开始",
47 "IssueStatusType": "TODO",
48 "Priority": "3",
49 "AssigneeId": 0,
50 "StartDate": 0,
51 "DueDate": 0,
52 "WorkingHours": 0,
53 "CreatorId": 1,
54 "StoryPoint": "2.0",
55 "CreatedAt": 1598517062000,
56 "UpdatedAt": 1598851550000,
57 "CompletedAt": 0,
58 "Iteration": {
59 "Code": 1,
60 "Name": "Q1 Spring1",
61 "Status": "PROCESSING"
62 },
63 "IssueTypeDetail": {
64 "Id": 1,
65 "Name": "用户故事",
66 "IssueType": "REQUIREMENT",
67 "Description": "",
68 "IsSystem": false
69 }
70 }
71 ]
72 }
73}
查询事项详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssue |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issue | IssueDetail | 事项信息。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueDetail
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型: DEFECT - 缺陷, REQUIREMENT - 需求, MISSION - 任务, EPIC - 史诗, SUB_TASK - 子工作项 |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
Assignee | UserSimple | 处理人,Assignee.Id 等于 0 时表示未指定。 |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
Creator | UserSimple | 创建人 |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
ProjectModule | ProjectModule | 项目模块,ProjectModule.Id 等于 0 时表示未指定。 |
Watchers | Array of UserSimple | 关注人 |
Labels | Array of Label | 标签列表 |
Files | Array of ProjectFile | 附件列表 |
RequirementType | 需求类型 | |
DefectType | DefectType | 缺陷类型 |
CustomFields | Array of CustomField | 自定义字段列表 |
ThirdLinks | Array of ThirdLink | 第三方链接列表 |
SubTasks | Array of SubTask | 子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList) |
Parent | IssueSimple | 父事项 |
Epic | Epic | 所属史诗 |
Iteration | IterationSimple | 所属迭代 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
UserSimple
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Status | Integer | 用户状态 |
Avatar | String | 头像地址 |
Name | String | 姓名 |
String | 邮箱 |
ProjectModule
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 模块名称 |
Label
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 名称 |
Color | String | 颜色 |
ProjectFile
参数名称 | 类型 | 描述 |
---|---|---|
FileId | Integer | 文件 Id |
Name | String | 文件名称 |
Type | Integer | 类型 0 - 文件夹 1 - 文本 2 - 图片 3 - 二进制 4 - SVG |
Size | Long | 大小(比特) |
Url | String | 下载地址 |
CustomField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 自定义属性 Id |
ValueString | String | 自定义属性值,JSON 字符串 根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组 另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象 |
ThirdLink
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 第三方链接 Id |
ThirdType | Integer | 第三方链接类型,MODAO - 墨刀 |
Link | String | 链接地址 |
Title | String | 名称 |
IssueSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
Epic
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
SubTask
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
IterationSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 迭代代码 |
Name | String | 迭代名称 |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeIssue",
3 "ProjectName": "demo-project",
4 "IssueCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "d2e3c64c-99f8-1ef2-c148-36f7d6a81cfe",
4 "Issue": {
5 "ParentType": "REQUIREMENT",
6 "Code": 1,
7 "Type": "REQUIREMENT",
8 "Name": "测试需求1",
9 "Description": "# 标题1\n\n1. 列表1\n2. 列表2\n\n# 标题2\n\n1. 啦啦\n\n# 其他\n\n![图片](/api/project/1/files/11/imagePreview)\n123",
10 "IterationId": 1,
11 "IssueStatusId": 4,
12 "IssueStatusName": "未开始",
13 "IssueStatusType": "TODO",
14 "Priority": "0",
15 "Assignee": {
16 "Id": 0,
17 "Status": 0,
18 "GlobalKey": "",
19 "Avatar": "",
20 "Media": "",
21 "Name": "",
22 "Email": ""
23 },
24 "StartDate": 0,
25 "DueDate": 1596643199000,
26 "WorkingHours": 0,
27 "Creator": {
28 "Id": 1,
29 "Status": 2,
30 "GlobalKey": "coding",
31 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
32 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
33 "Name": "coding",
34 "Email": ""
35 },
36 "StoryPoint": "",
37 "CreatedAt": 1597384413000,
38 "UpdatedAt": 1599035298000,
39 "CompletedAt": 0,
40 "ProjectModule": {
41 "Id": 0,
42 "Name": ""
43 },
44 "Watchers": [],
45 "Labels": [],
46 "Files": [],
47 "RequirementType": {
48 "Id": 0,
49 "Name": ""
50 },
51 "DefectType": {
52 "Id": 0,
53 "Name": "",
54 "IconUrl": ""
55 },
56 "CustomFields": [
57 {
58 "Id": 16,
59 "ValueString": "[{\"Id\":1,\"Status\":2,\"GlobalKey\":\"coding\",\"Avatar\":\"https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0\",\"Media\":\"https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0\",\"Name\":\"coding\",\"Email\":\"coding@coding.com\",\"Name_pinyin\":\"\"}]"
60 },
61 {
62 "Id": 18,
63 "ValueString": "2020-08-06 02:02:00"
64 },
65 {
66 "Id": 19,
67 "ValueString": "123"
68 }
69 ],
70 "ThirdLinks": [
71 {
72 "Id": 1,
73 "ThirdType": "MODAO",
74 "Link": "https://modao.cc/app/7fb28d9af13827fd009f401579cbdc3cef2a456a/embed/v2",
75 "Title": "墨刀 1"
76 }
77 ],
78 "SubTasks": [],
79 "Parent": {
80 "Code": 0,
81 "Type": "",
82 "Name": "",
83 "IssueStatusId": 0,
84 "IssueStatusName": "",
85 "Priority": "",
86 "Assignee": {
87 "Id": 0,
88 "Status": 0,
89 "GlobalKey": "",
90 "Avatar": "",
91 "Media": "",
92 "Name": "",
93 "Email": ""
94 }
95 },
96 "Epic": {
97 "Code": 0,
98 "Type": "",
99 "Name": "",
100 "IssueStatusId": 0,
101 "IssueStatusName": "",
102 "Priority": "",
103 "Assignee": {
104 "Id": 0,
105 "Status": 0,
106 "GlobalKey": "",
107 "Avatar": "",
108 "Media": "",
109 "Name": "",
110 "Email": ""
111 }
112 },
113 "Iteration": {
114 "Code": 1,
115 "Name": "Q1 Spring1",
116 "Status": "PROCESSING"
117 },
118 "IssueTypeDetail": {
119 "Id": 1,
120 "Name": "用户故事",
121 "IssueType": "REQUIREMENT",
122 "Description": "",
123 "IsSystem": false
124 }
125 }
126 }
127}
查询属性设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectIssueFieldList |
ProjectName | 是 | String | 项目名称 |
IssueTypeId | 否 | Integer | 事项类型ID(IssueTypeId 和 IssueType 必须提供一个 ) |
IssueType | 否 | String | 事项类型,没有设置 IssueTypeId 参数则查询默认该默认类型 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 SUB_TASK - 子任务 WORK_ITEM - 项目集工作项 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProjectIssueFieldList | Array of ProjectIssueField | 项目属性列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ProjectIssueField
参数名称 | 类型 | 描述 |
---|---|---|
IssueFieldId | Integer | 关联属性 Id |
NeedDefault | String | 是否有默认值 |
ValueString | String | 默认值, JSON 字符串。例如:{"type":"VARIABLE","value":"CREATOR"} type:默认值类型,VARIABLE - 变量值(如创建者为 CREATOR) | CONSTANT - 常量值 value:默认值,根据 IssueField.ComponentType,可能为不同类型的值:数值、字符串、数组等 |
IssueType | String | 事项类型 |
Required | String | 是否必填 |
IssueField | IssueField | 关联属性 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
IssueField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 属性 Id |
Name | String | 名称 |
IconUrl | String | 图标地址 |
Type | String | 字段类型 |
ComponentType | String | 字段空间类型 TEXT_SINGLE_LINE - 单行文本 TEXT_MULTI_LINE - 多行文本 SELECT_SINGLE - 单选列表 SELECT_MULTI - 多选列表 RADIO - 单选框 CHECKBOX - 多选框 SELECT_MEMBER_SINGLE - 用户单选列表 SELECT_MEMBER_MULTI - 用户多选列表 TEXT_DATETIME - 日期时间选择框 TEXT_DATE - 日期选择框 TEXT_INTEGER - 整数输入框 TEXT_DECIMAL - 小数输入框 |
Description | String | 事项类型 |
Options | Array of IssueFieldOption | 选项列表 |
Unit | String | 单位 |
Selectable | Boolean | 项目中属性可选 |
Required | Boolean | 是否比天 |
Editable | Boolean | 是否可修改 |
Deletable | Boolean | 是否可删除 |
Sortable | Boolean | 是否可排序 |
CreatedBy | Integer | 创建者 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
IssueFieldOption
参数名称 | 类型 | 描述 |
---|---|---|
Icon | String | 选项图标地址 |
Sort | String | 排序 |
Title | String | 选项标题 |
Value | String | 选项值 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectIssueFieldList",
3 "ProjectName": "demo-project",
4 "IssueType": "REQUIREMENT"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "b2f77ca4-a34c-efde-29aa-389940fc8673",
4 "ProjectIssueFieldList": [
5 {
6 "IssueFieldId": 1,
7 "NeedDefault": false,
8 "ValueString": "",
9 "IssueType": "REQUIREMENT",
10 "Required": false,
11 "IssueField": {
12 "Id": 1,
13 "TeamId": 1,
14 "Name": "处理人",
15 "IconUrl": "",
16 "Type": "ASSIGNEE",
17 "ComponentType": "SELECT_MEMBER_SINGLE",
18 "Description": "",
19 "Options": [],
20 "Unit": "",
21 "Selectable": false,
22 "Required": false,
23 "Editable": false,
24 "Deletable": false,
25 "Sortable": true,
26 "CreatedBy": 0,
27 "CreatedAt": 1597283395000,
28 "UpdatedAt": 1597283395000
29 },
30 "CreatedAt": 1597283400000,
31 "UpdatedAt": 1597283400000
32 },
33 {
34 "IssueFieldId": 8,
35 "NeedDefault": true,
36 "ValueString": "{\"type\":\"VARIABLE\",\"value\":\"CREATOR\"}",
37 "IssueType": "REQUIREMENT",
38 "Required": false,
39 "IssueField": {
40 "Id": 8,
41 "TeamId": 1,
42 "Name": "关注者",
43 "IconUrl": "",
44 "Type": "WATCHER",
45 "ComponentType": "SELECT_MEMBER_MULTI",
46 "Description": "",
47 "Options": [],
48 "Unit": "",
49 "Selectable": false,
50 "Required": false,
51 "Editable": false,
52 "Deletable": false,
53 "Sortable": true,
54 "CreatedBy": 0,
55 "CreatedAt": 1597283395000,
56 "UpdatedAt": 1597283395000
57 },
58 "CreatedAt": 1597283400000,
59 "UpdatedAt": 1598513658000
60 },
61 {
62 "IssueFieldId": 11,
63 "NeedDefault": false,
64 "ValueString": "",
65 "IssueType": "REQUIREMENT",
66 "Required": false,
67 "IssueField": {
68 "Id": 11,
69 "TeamId": 1,
70 "Name": "多选菜单",
71 "IconUrl": "",
72 "Type": "CUSTOM",
73 "ComponentType": "SELECT_MULTI",
74 "Description": "我的属性描述",
75 "Options": [
76 {
77 "Icon": "",
78 "Sort": "0",
79 "Title": "选项1",
80 "Value": "1"
81 },
82 {
83 "Icon": "",
84 "Sort": "1",
85 "Title": "选项2",
86 "Value": "2"
87 }
88 ],
89 "Unit": "",
90 "Selectable": true,
91 "Required": false,
92 "Editable": true,
93 "Deletable": true,
94 "Sortable": true,
95 "CreatedBy": 1,
96 "CreatedAt": 1598254806000,
97 "UpdatedAt": 1598594036000
98 },
99 "CreatedAt": 1598254851000,
100 "UpdatedAt": 1598428656000
101 },
102 {
103 "IssueFieldId": 13,
104 "NeedDefault": false,
105 "ValueString": "",
106 "IssueType": "REQUIREMENT",
107 "Required": false,
108 "IssueField": {
109 "Id": 13,
110 "TeamId": 1,
111 "Name": "单行文本",
112 "IconUrl": "",
113 "Type": "CUSTOM",
114 "ComponentType": "TEXT_SINGLE_LINE",
115 "Description": "",
116 "Options": [],
117 "Unit": "",
118 "Selectable": true,
119 "Required": false,
120 "Editable": true,
121 "Deletable": true,
122 "Sortable": true,
123 "CreatedBy": 1,
124 "CreatedAt": 1598513276000,
125 "UpdatedAt": 1598513276000
126 },
127 "CreatedAt": 1598513658000,
128 "UpdatedAt": 1598513658000
129 }
130 ]
131 }
132}
查询状态设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectIssueStatusList |
ProjectName | 是 | String | 项目名称 |
IssueTypeId | 否 | Integer | 事项类型ID(IssueTypeId 和 IssueType 必须设置一个) |
IssueType | 否 | String | 事项类型,如果未设置 IssueTypeId 则查询默认类型 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 SUB_TASK - 子任务 STORY - 用户故事 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProjectIssueStatusList | Array of ProjectIssueStatus | 项目状态列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ProjectIssueStatus
参数名称 | 类型 | 描述 |
---|---|---|
IssueType | String | 事项类型 |
IssueStatusId | Integer | 事项状态 Id |
IsDefault | Boolean | 是否是默认值 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
Sort | Integer | 排序 |
IssueStatus | String | 事项状态 |
IssueStatus
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项状态 Id |
Index | Integer | 状态序号 |
Name | String | 名称 |
Type | String | 类型,例如:TODO、PROCESSING、COMPLETED |
Description | String | 描述 |
IsSystem | Boolean | 是否是系统内置 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectIssueStatusList",
3 "ProjectName": "demo-project",
4 "IssueType": "REQUIREMENT"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "dc827006-32db-a74f-eeae-13bec31c8b92",
4 "ProjectIssueStatusList": [
5 {
6 "IssueType": "REQUIREMENT",
7 "IssueStatusId": 4,
8 "IsDefault": true,
9 "CreatedAt": 1597283400000,
10 "UpdatedAt": 1597283400000,
11 "Sort": 0,
12 "IssueStatus": {
13 "Id": 4,
14 "Index": 3,
15 "Name": "未开始",
16 "Type": "TODO",
17 "Description": "",
18 "IsSystem": true,
19 "CreatedAt": 1597283396000,
20 "UpdatedAt": 1597283396000
21 }
22 },
23 {
24 "IssueType": "REQUIREMENT",
25 "IssueStatusId": 9,
26 "IsDefault": false,
27 "CreatedAt": 1597283400000,
28 "UpdatedAt": 1597283400000,
29 "Sort": 0,
30 "IssueStatus": {
31 "Id": 9,
32 "Index": 8,
33 "Name": "开发中",
34 "Type": "PROCESSING",
35 "Description": "",
36 "IsSystem": true,
37 "CreatedAt": 1597283396000,
38 "UpdatedAt": 1597283396000
39 }
40 },
41 {
42 "IssueType": "REQUIREMENT",
43 "IssueStatusId": 10,
44 "IsDefault": false,
45 "CreatedAt": 1597283400000,
46 "UpdatedAt": 1597283400000,
47 "Sort": 0,
48 "IssueStatus": {
49 "Id": 10,
50 "Index": 9,
51 "Name": "测试中",
52 "Type": "PROCESSING",
53 "Description": "",
54 "IsSystem": true,
55 "CreatedAt": 1597283396000,
56 "UpdatedAt": 1597283396000
57 }
58 },
59 {
60 "IssueType": "REQUIREMENT",
61 "IssueStatusId": 13,
62 "IsDefault": false,
63 "CreatedAt": 1597283400000,
64 "UpdatedAt": 1597283400000,
65 "Sort": 0,
66 "IssueStatus": {
67 "Id": 13,
68 "Index": 12,
69 "Name": "已完成",
70 "Type": "COMPLETED",
71 "Description": "",
72 "IsSystem": true,
73 "CreatedAt": 1597283396000,
74 "UpdatedAt": 1597283396000
75 }
76 }
77 ]
78 }
79}
修改事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIssue |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
ParentCode | 否 | Integer | 所属事项 Code |
Name | 是 | String | 事项名称 |
StatusId | 否 | Integer | 事项状态 Id |
AssigneeId | 否 | Integer | 指派人 Id |
DueDate | 否 | String | 截止日期 |
StartDate | 否 | String | 开始日期 |
Progress | 否 | Double | 进度,示例:10 代表 10% |
WorkingHours | 否 | Double | 工时(小时) |
ProjectModuleId | 否 | Integer | 项目模块 Id |
WatcherIds | 否 | Array of Integer | 添加的事项关注人 Id 列表 |
DelWatcherIds | 否 | Array of Integer | 删除的事项关注人 Id 列表 |
DefectTypeId | 否 | Integer | 项目缺陷类型 Id |
RequirementTypeId | 否 | Integer | 项目需求类型 Id |
Priority | 否 | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 |
StoryPoint | 否 | String | 故事点,例如:0.5、1 |
LabelIds | 否 | Array of Integer | 添加的标签 Id 列表 |
DelLabelIds | 否 | Array of Integer | 删除的标签 Id 列表 |
FileIds | 否 | Array of Integer | 添加的文件 Id 列表 |
DelFileIds | 否 | Array of Integer | 删除的文件 Id 列表 |
CustomFieldValues | 否 | Array of IssueCustomFieldForm | 自定义属性值列表 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issue | IssueDetail | 事项信息。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueDetail
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型: DEFECT - 缺陷, REQUIREMENT - 需求, MISSION - 任务, EPIC - 史诗, SUB_TASK - 子工作项 |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
Assignee | UserSimple | 处理人,Assignee.Id 等于 0 时表示未指定。 |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
Creator | UserSimple | 创建人 |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
ProjectModule | ProjectModule | 项目模块,ProjectModule.Id 等于 0 时表示未指定。 |
Watchers | Array of UserSimple | 关注人 |
Labels | Array of Label | 标签列表 |
Files | Array of ProjectFile | 附件列表 |
RequirementType | 需求类型 | |
DefectType | DefectType | 缺陷类型 |
CustomFields | Array of CustomField | 自定义字段列表 |
ThirdLinks | Array of ThirdLink | 第三方链接列表 |
SubTasks | Array of SubTask | 子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList) |
Parent | IssueSimple | 父事项 |
Epic | Epic | 所属史诗 |
Iteration | IterationSimple | 所属迭代 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
UserSimple
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Status | Integer | 用户状态 |
Avatar | String | 头像地址 |
Name | String | 姓名 |
String | 邮箱 |
ProjectModule
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 模块名称 |
Label
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 名称 |
Color | String | 颜色 |
ProjectFile
参数名称 | 类型 | 描述 |
---|---|---|
FileId | Integer | 文件 Id |
Name | String | 文件名称 |
Type | Integer | 类型 0 - 文件夹 1 - 文本 2 - 图片 3 - 二进制 4 - SVG |
Size | Long | 大小(比特) |
Url | String | 下载地址 |
CustomField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 自定义属性 Id |
ValueString | String | 自定义属性值,JSON 字符串 根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组 另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象 |
ThirdLink
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 第三方链接 Id |
ThirdType | Integer | 第三方链接类型,MODAO - 墨刀 |
Link | String | 链接地址 |
Title | String | 名称 |
IssueSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
Epic
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
SubTask
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
IterationSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 迭代代码 |
Name | String | 迭代名称 |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "ModifyIssue",
3 "ProjectName": "demo-project",
4 "IssueCode": 3,
5 "Type": "REQUIREMENT",
6 "Name": "ceshi-20200817",
7 "Priority": "2",
8 "AssigneeId": 1
9}
成功示例
1{
2 "Response": {
3 "RequestId": "d68f3669-a9ee-ac91-dfec-95e80a134906",
4 "Issue": {
5 "ParentType": "REQUIREMENT",
6 "Code": 3,
7 "Type": "REQUIREMENT",
8 "Name": "ceshi-20200817",
9 "Description": "",
10 "IterationId": 1,
11 "IssueStatusId": 4,
12 "IssueStatusName": "未开始",
13 "IssueStatusType": "TODO",
14 "Priority": "2",
15 "Assignee": {
16 "Id": 1,
17 "Status": 2,
18 "GlobalKey": "coding",
19 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
21 "Name": "coding",
22 "Email": ""
23 },
24 "StartDate": 0,
25 "DueDate": 0,
26 "WorkingHours": 0,
27 "Creator": {
28 "Id": 1,
29 "Status": 2,
30 "GlobalKey": "coding",
31 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
32 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
33 "Name": "coding",
34 "Email": ""
35 },
36 "StoryPoint": "",
37 "CreatedAt": 1597895345000,
38 "UpdatedAt": 1598845197195,
39 "CompletedAt": 0,
40 "ProjectModule": {
41 "Id": 0,
42 "Name": ""
43 },
44 "Watchers": [
45 {
46 "Id": 1,
47 "Status": 2,
48 "GlobalKey": "coding",
49 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
50 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
51 "Name": "coding",
52 "Email": ""
53 }
54 ],
55 "Labels": [],
56 "Files": [],
57 "RequirementType": {
58 "Id": 0,
59 "Name": ""
60 },
61 "DefectType": {
62 "Id": 0,
63 "Name": "",
64 "IconUrl": ""
65 },
66 "CustomFields": [],
67 "ThirdLinks": [],
68 "SubTasks": [],
69 "Parent": {
70 "Code": 0,
71 "Type": "",
72 "Name": "",
73 "IssueStatusId": 0,
74 "IssueStatusName": "",
75 "Priority": "",
76 "Assignee": {
77 "Id": 0,
78 "Status": 0,
79 "GlobalKey": "",
80 "Avatar": "",
81 "Media": "",
82 "Name": "",
83 "Email": ""
84 }
85 },
86 "Epic": {
87 "Code": 0,
88 "Type": "",
89 "Name": "",
90 "IssueStatusId": 0,
91 "IssueStatusName": "",
92 "Priority": "",
93 "Assignee": {
94 "Id": 0,
95 "Status": 0,
96 "GlobalKey": "",
97 "Avatar": "",
98 "Media": "",
99 "Name": "",
100 "Email": ""
101 }
102 },
103 "IssueTypeDetail": {
104 "Id": 1,
105 "Name": "用户故事",
106 "IssueType": "REQUIREMENT",
107 "Description": "",
108 "IsSystem": false
109 }
110 }
111 }
112}
修改事项描述
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIssueDescription |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
Description | 是 | String | 事项描述,支持 MD 语法 |
Example 1
成功示例
1{
2 "Action": "ModifyIssueDescription",
3 "ProjectName": "shashajingdianxiangmu2",
4 "Description": "**description**",
5 "IssueCode": 17
6}
成功示例
1{
2 "Response": {
3 "RequestId": "15c9d55a-79b3-4a72-1f31-f101ae9c0ddf",
4 "IssueDescription": {
5 "Description": "<p><strong>this description</strong></p>"
6 }
7 }
8}
查询后置事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeBlockIssueList。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issues | Array of IssueSimpleData | 后置事项列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1
4}
成功示例
1{
2 "Response": {
3 "Issues": [
4 {
5 "Code": 27,
6 "Type": "REQUIREMENT",
7 "Name": "xxx",
8 "IssueStatusId": 4,
9 "IssueStatusName": "未开始",
10 "IssueStatusType": "TODO",
11 "Priority": "3",
12 "Assignee": {
13 "Status": 1,
14 "Name": "xxx",
15 "Id": 1,
16 "Phone": "111",
17 "TeamId": 1,
18 "GlobalKey": "coding",
19 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20 "Email": "coding.com",
21 "TeamGlobalKey": "coding"
22 }
23 },
24 {
25 "Code": 25,
26 "Type": "REQUIREMENT",
27 "Name": "xxx",
28 "IssueStatusId": 4,
29 "IssueStatusName": "未开始",
30 "IssueStatusType": "TODO",
31 "Priority": "3",
32 "Assignee": {
33 "Status": 1,
34 "Name": "xxx",
35 "Id": 1,
36 "Phone": "111",
37 "TeamId": 1,
38 "GlobalKey": "coding",
39 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40 "Email": "coding.com",
41 "TeamGlobalKey": "coding"
42 }
43 }
44 ],
45 "RequestId": "1"
46 }
47}
查询前置事项
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeBlockedByIssueList。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issues | Array of IssueSimpleData | 前置事项列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1
4}
成功示例
1{
2 "Response": {
3 "Issues": [
4 {
5 "Code": 27,
6 "Type": "REQUIREMENT",
7 "Name": "xxx",
8 "IssueStatusId": 4,
9 "IssueStatusName": "未开始",
10 "IssueStatusType": "TODO",
11 "Priority": "3",
12 "Assignee": {
13 "Status": 1,
14 "Name": "xxx",
15 "Id": 1,
16 "Phone": "111",
17 "TeamId": 1,
18 "GlobalKey": "coding",
19 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20 "Email": "coding.com",
21 "TeamGlobalKey": "coding"
22 }
23 },
24 {
25 "Code": 25,
26 "Type": "REQUIREMENT",
27 "Name": "xxx",
28 "IssueStatusId": 4,
29 "IssueStatusName": "未开始",
30 "IssueStatusType": "TODO",
31 "Priority": "3",
32 "Assignee": {
33 "Status": 1,
34 "Name": "xxx",
35 "Id": 1,
36 "Phone": "111",
37 "TeamId": 1,
38 "GlobalKey": "coding",
39 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40 "Email": "coding.com",
41 "TeamGlobalKey": "coding"
42 }
43 }
44 ],
45 "RequestId": "1"
46 }
47}
查询子事项列表
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeSubIssueList。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
SubIssueList | Array of IssueListData | 子事项列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeSubIssueList",
3 "ProjectName": "project-demo",
4 "IssueCode": 1
5}
成功示例
1{
2 "Response": {
3 "SubIssueList": [
4 {
5 "ParentType": "REQUIREMENT",
6 "Code": 27,
7 "Type": "REQUIREMENT",
8 "Name": "xxx",
9 "Description": "",
10 "IterationId": 0,
11 "IssueStatusId": 4,
12 "IssueStatusName": "未开始",
13 "IssueStatusType": "TODO",
14 "Priority": "3",
15 "AssigneeId": 0,
16 "StartDate": 0,
17 "DueDate": 0,
18 "WorkingHours": 0,
19 "CreatorId": 1,
20 "StoryPoint": "0.5",
21 "CreatedAt": 1598843625000,
22 "UpdatedAt": 1598922564000,
23 "CompletedAt": 0
24 },
25 {
26 "ParentType": "REQUIREMENT",
27 "Code": 25,
28 "Type": "REQUIREMENT",
29 "Name": "xxx",
30 "Description": "",
31 "IterationId": 0,
32 "IssueStatusId": 4,
33 "IssueStatusName": "未开始",
34 "IssueStatusType": "TODO",
35 "Priority": "3",
36 "AssigneeId": 0,
37 "StartDate": 0,
38 "DueDate": 0,
39 "WorkingHours": 0,
40 "CreatorId": 1,
41 "StoryPoint": "2.0",
42 "CreatedAt": 1598517062000,
43 "UpdatedAt": 1598851550000,
44 "CompletedAt": 0
45 }
46 ],
47 "RequestId": "1"
48 }
49}
删除前置事项
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteIssueBlock。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
BlockIssueCode | 是 | Integer | 前置事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1,
4 "BlockIssueCode": 4
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
添加前置事项
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIssueBlock。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
BlockIssueCode | 是 | Integer | 前置事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1,
4 "BlockIssueCode": 4
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
修改事项父需求
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIssueParentRequirement。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
ParentIssueCode | 是 | Integer | 父事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 10,
4 "ParentIssueCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
查询企业所有事项类型列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTeamIssueTypeList。 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueTypes | Array of IssueTypeDetail | 事项类型列表 |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeTeamIssueTypeList"
3}
成功示例
1{
2 "IssueTypes": [
3 {
4 "Id": 1,
5 "Name": "用户故事",
6 "IssueType": "REQUIREMENT",
7 "Description": "",
8 "IsSystem": false
9 },
10 {
11 "Id": 2,
12 "Name": "风险",
13 "IssueType": "REQUIREMENT",
14 "Description": "",
15 "IsSystem": false
16 }
17 ]
18}
查询项目的事项类型列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectIssueTypeList |
ProjectName | 是 | String | 项目名称,非 ID、displayname |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
IssueTypes | Array of IssueTypeDetailWithSplit | 项目内事项类型列表 |
IssueTypeDetailWithSplit
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
SplitType | String | 分解类型, UNSPLITTABLE-不允许分解, SPECIFIC_TYPE-指定类型 , ALL_REQUIREMENT-全部需求类型 |
SplitTargetIssueTypeId | Array of Integer | 可以分解为哪些事项类型,值为类型 ID,SplitType=SPECIFIC_TYPE 时可用 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectIssueTypeList",
3 "ProjectName": "TestDemoProject"
4}
成功示例
1{
2 "IssueTypes": [
3 {
4 "Id": 1,
5 "Name": "用户故事",
6 "IssueType": "REQUIREMENT",
7 "Description": "",
8 "IsSystem": false,
9 "SplitType": "ALL_REQUIREMENT",
10 "SplitTargetIssueTypeId": []
11 },
12 {
13 "Id": 2,
14 "Name": "用户故事2",
15 "IssueType": "REQUIREMENT",
16 "Description": "",
17 "IsSystem": false,
18 "SplitType": "UNSPLITTABLE",
19 "SplitTargetIssueTypeId": []
20 },
21 {
22 "Id": 3,
23 "Name": "用户故事3",
24 "IssueType": "REQUIREMENT",
25 "Description": "",
26 "IsSystem": false,
27 "SplitType": "SPECIFIC_TYPE",
28 "SplitTargetIssueTypeId": [
29 1,
30 2
31 ]
32 },
33 {
34 "Id": 4,
35 "Name": "需求",
36 "IssueType": "REQUIREMENT",
37 "Description": "",
38 "IsSystem": true,
39 "SplitType": "ALL_REQUIREMENT",
40 "SplitTargetIssueTypeId": []
41 }
42 ]
43}
事项列表(新)
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueListWithPage |
ProjectName | 是 | String | 项目名称 |
IssueType | 是 | Integer | 事项类型 ALL - 全部事项 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 |
PageNumber | 是 | Integer | 分页数 |
PageSize | 是 | Integer | 每页展示数,默认 20 ,最大值 500 |
Conditions | 否 | Array of IssueCondition | 筛选条件列表 |
SortKey | 否 | String | 排序字段,默认:CODE 可选值:STATUS, CREATED_AT, PRIORITY, UPDATED_AT, DUE_DATE, CODE, JOIN_ITERATION_AT, STATUS_TYPE, ASSIGNEE, PROJECT_ID, ISSUE_STATUS_ID, ISSUE_ITERATION_SORT, ISSUE_ROADMAP_SORT, PARENT_ID, COMPLETED_AT |
SortValue | 否 | String | 排序方式 DESC - 倒序(默认值) ASC - 正序 |
ShowSubIssues | 否 | Boolean | 是否显示子事项,对应页面上平铺视图“显示子事项”开关,取值 true 或者 false,不填为 false。true 表示显示,false 表示不显示 |
ExcludeSubTask | 否 | Boolean | 是否排除子工作项(subtask),只有当 ShowSubIssues=true 时这个参数才有效,取值 true 或者 false,不填为 false。true 表示排除子工作项,false 表示不排除 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
IssueList | Array of IssueListData | 事项列表。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueCondition
参数名称 | 类型 | 描述 |
---|---|---|
Key | String | 筛选字段 KEY,可选值如下。 ISSUE_TYPE_ID:事项类型,可以参考 DescribeTeamIssueTypeList,多选 DEFECT_TYPE:缺陷类型,多选 REQUIREMENT_TYPE:需求类型,多选 MISSION_TYPE:任务类型,多选 PRIORITY:优先级,多选 DUE_DATE:截止日期,日期范围 UPDATED_AT:更新时间,日期范围 CREATED_AT:创建时间,日期范围 START_DATE:开始日期,日期范围 ASSIGNEE:处理人ID,多选 CREATOR:创建者ID,多选 WATCHER:关注者ID,多选 MODULE:模块,多选 LABEL:标签,多选 STATUS:状态,多选 STATUS_TYPE:状态类型,多选 KEYWORD:事项名称、CODE 模糊搜索 ISSUE_TYPE:事项类型,多选 ISSUE_SUB_TYPE:事项的子项类型,多选 WORKING_HOURS:预估工时,数值范围 ITERATION:迭代,多选 PARENT:父需求,多选 CUSTOM:自定义字段,同时需指定 CustomFieldId |
Value | String | 筛选值,多选值用逗号隔开。 日期格式: 2020-08-01,日期时间格式: 2020-08-01 12:00:00 整数、小数、日期、日期时间类型的字段值应为一个范围,前后闭区间,范围开始值与结束值之间使用"_"连接,例如:"0.1_5.0"、"2020-08-01_2020-08-31"。 |
ConstValue | String | 常量值 "UNSPECIFIC" 表示未指定,例如:处理人、需求类型、标签等字段,使用此值来筛选未指定处理人、需求类型或标签的事项。 |
CustomFieldId | Integer | 自定义字段 Id,Key 为 "CUSTOM" 时需设置该值,常规字段无需设置。 |
IssueListData
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型 |
IssueTypeId | Integer | 事项类型ID |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
AssigneeId | Integer | 处理人 Id |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
CreatorId | Integer | 创建人 Id |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
Iteration | IterationSimple | 迭代信息 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueListWithPage",
3 "ProjectName": "demo-project",
4 "IssueType": "ALL",
5 "PageNumber": 1,
6 "PageSize": 20,
7 "Conditions": [
8 {
9 "Key": "STATUS_TYPE",
10 "Value": "TODO"
11 },
12 {
13 "Key": "ISSUE_TYPE_ID",
14 "Value": "1,2"
15 },
16 {
17 "Key": "ASSIGNEE",
18 "Value": "1,2,3"
19 },
20 {
21 "Key": "CUSTOM",
22 "CustomFieldId": 1,
23 "Value": "please fill custom field value id"
24 }
25 ]
26}
成功示例
1{
2 "Response": {
3 "RequestId": "35c5b423-d311-d27f-f48c-a2ddf8b1cc59",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 20,
7 "TotalPage": 1,
8 "TotalCount": 10,
9 "List": [
10 {
11 "ParentType": "REQUIREMENT",
12 "Code": 27,
13 "Type": "REQUIREMENT",
14 "Name": "this demo issue",
15 "Description": "",
16 "IterationId": 1,
17 "IssueStatusId": 4,
18 "IssueStatusName": "未开始",
19 "IssueStatusType": "TODO",
20 "Priority": "3",
21 "AssigneeId": 0,
22 "StartDate": 0,
23 "DueDate": 0,
24 "WorkingHours": 0,
25 "CreatorId": 1,
26 "StoryPoint": "0.5",
27 "CreatedAt": 1598843625000,
28 "UpdatedAt": 1598922564000,
29 "CompletedAt": 0,
30 "Iteration": {
31 "Code": 1,
32 "Name": "Q1 Spring1",
33 "Status": "PROCESSING"
34 },
35 "IssueTypeDetail": {
36 "Id": 1,
37 "Name": "用户故事",
38 "IssueType": "REQUIREMENT",
39 "Description": "",
40 "IsSystem": false
41 }
42 },
43 {
44 "ParentType": "REQUIREMENT",
45 "Code": 25,
46 "Type": "REQUIREMENT",
47 "Name": "test-20200826-1",
48 "Description": "",
49 "IterationId": 1,
50 "IssueStatusId": 4,
51 "IssueStatusName": "未开始",
52 "IssueStatusType": "TODO",
53 "Priority": "3",
54 "AssigneeId": 0,
55 "StartDate": 0,
56 "DueDate": 0,
57 "WorkingHours": 0,
58 "CreatorId": 1,
59 "StoryPoint": "2.0",
60 "CreatedAt": 1598517062000,
61 "UpdatedAt": 1598851550000,
62 "CompletedAt": 0,
63 "Iteration": {
64 "Code": 1,
65 "Name": "Q1 Spring1",
66 "Status": "PROCESSING"
67 },
68 "IssueTypeDetail": {
69 "Id": 1,
70 "Name": "用户故事",
71 "IssueType": "REQUIREMENT",
72 "Description": "",
73 "IsSystem": false
74 }
75 }
76 ]
77 }
78 }
79}
事项关联的测试用例
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeRelatedCaseList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项标示code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Cases | Array of Case | 用例列表。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Case
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用例ID |
Name | String | 标题 |
Priority | Integer | 优先级, 0 => '紧急', 1 => '高', 2 => '中', 3 => '低' |
Example 1
成功示例
1{
2 "Action": "DescribeRelatedCaseList",
3 "ProjectName": "my-demo",
4 "IssueCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "b1410375-b707-6415-85cc-f0c5ec78a5ba",
4 "Cases": [
5 {
6 "Id": 1,
7 "Name": "注册商城验证码验证通过",
8 "Priority": 1
9 },
10 {
11 "Id": 2,
12 "Name": "注册商城验证码验证通过",
13 "Priority": 2
14 }
15 ]
16 }
17}
创建事项评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIssueComment |
ProjectName | 是 | String | 项目名称,非 ID、displayname |
IssueCode | 是 | Integer | 事项 code |
Content | 是 | String | 评论内容 |
ParentId | 否 | Integer | 如果回复评论传父评论ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateIssueComment",
3 "ProjectName": "TestProjectDemo",
4 "IssueCode": 1,
5 "Content": "这个要配合测试",
6 "ParentId": 0
7}
修改事项评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIssueComment |
ProjectName | 是 | String | 项目名称,非 ID、displayname |
IssueCode | 是 | Integer | 事项 code |
Content | 是 | String | 评论内容 |
CommentId | 是 | Integer | 评论ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateIssueComment",
3 "ProjectName": "TestProjectDemo",
4 "IssueCode": 1,
5 "Content": "这个要配合测试",
6 "CommentId": 1
7}
查询事项评论列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueCommentList |
ProjectName | 是 | String | 项目名称,非 ID、displayname |
IssueCode | 是 | Integer | 事项 code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
CommentList | Array of IssueComment | 评论列表 |
IssueComment
参数名称 | 类型 | 描述 |
---|---|---|
CommentId | Integer | 评论ID |
ParentId | Integer | 父级评论ID |
Content | String | 渲染的评论内容 |
RawContent | String | 用户输入的原始评论内容 |
CreatorId | Integer | 创建人ID |
CreatedAt | Integer | 创建时间戳 |
UpdatedAt | Integer | 修改时间戳 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueCommentList",
3 "ProjectName": "DemoProjectName",
4 "IssueCode": 1
5}
成功示例
1{
2 "CommentList": [
3 {
4 "CommentId": 1,
5 "ParentId": 0,
6 "Content": "<a src=http://codingtest.codingcorp.net/p/cc/issues/12> content </a> ",
7 "RawContent": "content",
8 "CreatorId": 1,
9 "CreatedAt": 1626402309235,
10 "UpdatedAt": 1626402309235
11 },
12 {
13 "CommentId": 2,
14 "ParentId": 1,
15 "Content": "<a src=http://codingtest.codingcorp.net/p/cc/issues/12>this is children content </a> ",
16 "RawContent": "children content",
17 "CreatorId": 1,
18 "CreatedAt": 1626402309235,
19 "UpdatedAt": 1626402309235
20 }
21 ]
22}
获取事项的状态变更历史
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueStatusChangeLogList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Array of Integer | 事项 code,支持多选 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Logs | list of Log | 具体的变更日志 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Log
Log 的具体信息
名称 | 类型 | 描述 |
---|---|---|
IssueCode | Integer | 事项 code |
StatusId | Integer | 状态对象 ID |
StatusName | String | 状态名称(当时的名称快照) |
CreatedAt | String | 生成时间 (流转到改状态的时间) |
IssueStatus.Id | Integer | 状态对象 ID |
IssueStatus.Name | String | 状态对象名称(最新) |
IssueStatus.Type | String | 状态类型,TODO、PROCESSING、COMPLETE |
IssueStatus.IsSystem | Bool | 是否是系统状态 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueStatusChangeLogList",
3 "ProjectName": "my-demo",
4 "IssueCode": [
5 380,
6 2
7 ]
8}
成功示例
1{
2 "Response": {
3 "RequestId": "570322d0-b7bf-28d6-ca17-f8ab645da",
4 "Logs": {
5 "List": [
6 {
7 "IssueCode": 380,
8 "StatusId": 244,
9 "IssueStatus": {
10 "Id": 244,
11 "Index": 6,
12 "Name": "未评估",
13 "Type": "TODO",
14 "Description": "",
15 "IsSystem": true,
16 "CreatedAt": 1551937083000,
17 "UpdatedAt": 1551937083000
18 },
19 "StatusName": "未评估",
20 "CreatedAt": 1617095165000
21 },
22 {
23 "IssueCode": 380,
24 "StatusId": 10537,
25 "IssueStatus": {
26 "Id": 10537,
27 "Index": 14,
28 "Name": "已评估",
29 "Type": "TODO",
30 "Description": "",
31 "IsSystem": false,
32 "CreatedAt": 1555661502000,
33 "UpdatedAt": 1555661502000
34 },
35 "StatusName": "已评估",
36 "CreatedAt": 1621406657000
37 },
38 {
39 "IssueCode": 380,
40 "StatusId": 244,
41 "IssueStatus": {
42 "Id": 244,
43 "Index": 6,
44 "Name": "未评估",
45 "Type": "TODO",
46 "Description": "",
47 "IsSystem": true,
48 "CreatedAt": 1551937083000,
49 "UpdatedAt": 1551937083000
50 },
51 "StatusName": "未评估",
52 "CreatedAt": 1621411647000
53 }
54 ]
55 }
56 }
57}
获取工作台个人代办事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeWorkbenchIssueList |
ProjectId | 否 | Integer | 项目id,不填或者填0则查询团队内参与的所有项目 |
Type | 否 | String | 事项类型,取值如“REQUIREMENT”、“DEFECT”等 |
Keyword | 否 | String | 关键字 |
PageNumber | 否 | Integer | 分页查询的分页数,不填的话从第一页开始查询 |
PageSize | 否 | Integer | 每页展示数,默认 20 ,最大值 500 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueList | List | 事项列表。 |
Example 1
成功示例
1{
2 "Action": "DescribeWorkbenchIssueList",
3 "ProjectId": 0,
4 "Type": "DEFECT",
5 "Keyword": "",
6 "PageNumber": 1,
7 "PageSize": 200
8}
成功示例
1{
2 "Response": {
3 "RequestId": "80610858-c4a3-4028-ad52-9b051e23e37c",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 200,
7 "TotalPage": 1,
8 "TotalCount": 2,
9 "IssueList": [
10 {
11 "Code": 10,
12 "Type": "DEFECT",
13 "IssueType": {
14 "Id": 5,
15 "Name": "缺陷",
16 "IssueType": "DEFECT",
17 "Description": "",
18 "IsSystem": false
19 },
20 "Name": "缺陷1",
21 "ParentCode": 0,
22 "Description": false,
23 "Priority": "1",
24 "DueDate": 253370736000000,
25 "ProjectId": 3,
26 "ParentIssue": {
27 "Code": 0,
28 "Type": "",
29 "Name": "",
30 "IssueStatusId": 0,
31 "IssueStatusName": "",
32 "Priority": "",
33 "Assignee": {
34 "Id": 0,
35 "Status": 0,
36 "Avatar": "",
37 "Name": "",
38 "Email": "",
39 "TeamId": 0,
40 "Phone": "",
41 "GlobalKey": "",
42 "TeamGlobalKey": ""
43 },
44 "IssueStatusType": "",
45 "IssueTypeDetail": {
46 "Id": 0,
47 "Name": "",
48 "IssueType": "",
49 "Description": "",
50 "IsSystem": false
51 }
52 },
53 "Project": {
54 "Id": 3,
55 "CreatedAt": 0,
56 "UpdatedAt": 0,
57 "Status": 0,
58 "Type": 0,
59 "MaxMember": 0,
60 "Name": "xjx-classic",
61 "DisplayName": "经典项目",
62 "Description": "",
63 "Icon": "/static/project_icon/scenery-version-2-3.svg",
64 "TeamOwnerId": 0,
65 "UserOwnerId": 0,
66 "StartDate": 0,
67 "EndDate": 0,
68 "TeamId": 0,
69 "IsDemo": false,
70 "Archived": false,
71 "ProgramIds": []
72 },
73 "IssueStatus": {
74 "Id": 1,
75 "Index": 0,
76 "Name": "待处理",
77 "Type": "TODO",
78 "Description": "",
79 "IsSystem": false,
80 "CreatedAt": 0,
81 "UpdatedAt": 0
82 },
83 "Epic": {
84 "Code": 0,
85 "Type": "",
86 "Name": "",
87 "IssueStatusId": 0,
88 "IssueStatusName": "",
89 "Priority": "",
90 "Assignee": {
91 "Id": 0,
92 "Status": 0,
93 "Avatar": "",
94 "Name": "",
95 "Email": "",
96 "TeamId": 0,
97 "Phone": "",
98 "GlobalKey": "",
99 "TeamGlobalKey": ""
100 }
101 },
102 "SubTasks": [],
103 "Assignee": {
104 "Id": 2,
105 "Status": 1,
106 "Avatar": "/static/fruit_avatar/Fruit-20.png",
107 "Name": "coding",
108 "Email": "",
109 "TeamId": 0,
110 "Phone": "",
111 "GlobalKey": "coding-coding",
112 "TeamGlobalKey": ""
113 },
114 "ChildCount": 0,
115 "ChildCompletedCount": 0,
116 "Creator": {
117 "Id": 0,
118 "Status": 0,
119 "Avatar": "",
120 "Name": "",
121 "Email": "",
122 "TeamId": 0,
123 "Phone": "",
124 "GlobalKey": "",
125 "TeamGlobalKey": ""
126 },
127 "CreatedAt": 1675151965000,
128 "UpdatedAt": 1675151972000,
129 "Iteration": {
130 "Code": 0,
131 "Name": "",
132 "Status": "",
133 "Id": 0
134 }
135 },
136 {
137 "Code": 3,
138 "Type": "DEFECT",
139 "IssueType": {
140 "Id": 5,
141 "Name": "缺陷",
142 "IssueType": "DEFECT",
143 "Description": "",
144 "IsSystem": false
145 },
146 "Name": "缺陷2",
147 "ParentCode": 0,
148 "Description": false,
149 "Priority": "1",
150 "DueDate": 253370736000000,
151 "ProjectId": 3,
152 "ParentIssue": {
153 "Code": 0,
154 "Type": "",
155 "Name": "",
156 "IssueStatusId": 0,
157 "IssueStatusName": "",
158 "Priority": "",
159 "Assignee": {
160 "Id": 0,
161 "Status": 0,
162 "Avatar": "",
163 "Name": "",
164 "Email": "",
165 "TeamId": 0,
166 "Phone": "",
167 "GlobalKey": "",
168 "TeamGlobalKey": ""
169 },
170 "IssueStatusType": "",
171 "IssueTypeDetail": {
172 "Id": 0,
173 "Name": "",
174 "IssueType": "",
175 "Description": "",
176 "IsSystem": false
177 }
178 },
179 "Project": {
180 "Id": 3,
181 "CreatedAt": 0,
182 "UpdatedAt": 0,
183 "Status": 0,
184 "Type": 0,
185 "MaxMember": 0,
186 "Name": "xjx-classic",
187 "DisplayName": "经典项目",
188 "Description": "",
189 "Icon": "/static/project_icon/scenery-version-2-3.svg",
190 "TeamOwnerId": 0,
191 "UserOwnerId": 0,
192 "StartDate": 0,
193 "EndDate": 0,
194 "TeamId": 0,
195 "IsDemo": false,
196 "Archived": false,
197 "ProgramIds": []
198 },
199 "IssueStatus": {
200 "Id": 1,
201 "Index": 0,
202 "Name": "待处理",
203 "Type": "TODO",
204 "Description": "",
205 "IsSystem": false,
206 "CreatedAt": 0,
207 "UpdatedAt": 0
208 },
209 "Epic": {
210 "Code": 0,
211 "Type": "",
212 "Name": "",
213 "IssueStatusId": 0,
214 "IssueStatusName": "",
215 "Priority": "",
216 "Assignee": {
217 "Id": 0,
218 "Status": 0,
219 "Avatar": "",
220 "Name": "",
221 "Email": "",
222 "TeamId": 0,
223 "Phone": "",
224 "GlobalKey": "",
225 "TeamGlobalKey": ""
226 }
227 },
228 "SubTasks": [],
229 "Assignee": {
230 "Id": 2,
231 "Status": 1,
232 "Avatar": "/static/fruit_avatar/Fruit-20.png",
233 "Name": "coding",
234 "Email": "",
235 "TeamId": 0,
236 "Phone": "",
237 "GlobalKey": "coding-coding",
238 "TeamGlobalKey": ""
239 },
240 "ChildCount": 0,
241 "ChildCompletedCount": 0,
242 "Creator": {
243 "Id": 0,
244 "Status": 0,
245 "Avatar": "",
246 "Name": "",
247 "Email": "",
248 "TeamId": 0,
249 "Phone": "",
250 "GlobalKey": "",
251 "TeamGlobalKey": ""
252 },
253 "CreatedAt": 1673609695000,
254 "UpdatedAt": 1675151976000,
255 "Iteration": {
256 "Code": 0,
257 "Name": "",
258 "Status": "",
259 "Id": 0
260 }
261 }
262 ]
263 }
264 }
265}
获取事项活动日志
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueLogList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 code,即页面上看到的事项ID |
ActionType | 是 | String | 动作类型,取值包括如下: ADD CHANGE_PARENT CREATE DELETE REMOVE UPDATE 要获取更新处理人的日志,用UPDATE+ASSIGNEE,要获取更新迭代的日志,用UPDATE+ITERATION,要获取创建事项的日志,用CREATE+SELF,以此类推。 |
Target | 是 | String | 操作对象,取值包括如下: ASSIGNEE // 处理人 ATTACHMENT // 附件 CHILD_ISSUE // 子事项 CUSTOM_FIELD // 自定义属性 DEFECT_TYPE //缺陷类型 DESCRIPTION //描述 DUE_DATE //截止日期 EPIC_ISSUE //所属史诗 ISSUE_EPIC_CHANGED ISSUE_PROGRAM_RELATION ISSUE_RELATION ITERATION //迭代 LABEL //标签 MODULE //模块 NAME //名字 PARENT_ISSUE //父事项 PRIORITY //优先级 PROGRESS //进度 RELATE_DEFECT RELATE_REQUIREMENT REQUIREMENT_TYPE RESOURCE SELF START_DATE STATUS //状态 STORY_POINT //故事点 THIRD_LINK //第三方链接 WATCHER //关注人 WORKING_HOURS //工时 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueList | List of IssueLog | 事项活动日志列表。 |
IssueLog
参数名称 | 类型 | 描述 |
---|---|---|
IssueId | Integer | 事项id(不是页面上的ID,是数据库中的唯一ID) |
ActionType | String | 动作类型(和输入一致) |
Target | String | 操作对象(和输入一致) |
TargetName | String | 操作对象名 |
Content | JSON字符串 | 内容,为转义后的JSON字符串 |
CreateAt | Integer | 创建时间戳 |
UpdatedAt | Integer | 更新时间戳 |
Creator | Integer | 创建人ID |
Example 1
成功示例
1{
2 "Action": "DescribeIssueLogList",
3 "ProjectName": "test",
4 "IssueCode": 1,
5 "ActionType": "UPDATE",
6 "Target": "ASSIGNEE"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "98262208-e56f-4f8f-a336-177d85c466a0",
4 "issueLogList": [
5 {
6 "IssueId": 104,
7 "ActionType": "UPDATE",
8 "Target": "ASSIGNEE",
9 "TargetName": "处理人",
10 "Content": "{\"id\":0,\"global_key\":\"\",\"avatar\":\"\",\"name\":\"无\"}",
11 "CreateAt": 1675152576000,
12 "UpdatedAt": 1675152576000,
13 "Creator": 2
14 },
15 {
16 "IssueId": 104,
17 "ActionType": "UPDATE",
18 "Target": "ASSIGNEE",
19 "TargetName": "处理人",
20 "Content": "{\"id\":2,\"global_key\":\"coding-coding\",\"avatar\":\"/static/fruit_avatar/Fruit-20.png\",\"name\":\"coding\"}",
21 "CreateAt": 1675152572000,
22 "UpdatedAt": 1675152572000,
23 "Creator": 2
24 }
25 ]
26 }
27}
获取自定义属性变更历史
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueCustomFieldLogList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | String | 事项 code,即页面上看到的事项ID |
FieldName | 是 | String | 自定义属性名(和页面上看到的一样) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
FieldChangeLogList | List of CustomFieldChangeLog | 自定义属性日志列表。 |
CustomFieldChangeLog
参数名称 | 类型 | 描述 |
---|---|---|
IssueId | Integer | 事项id(不是页面上的ID,是数据库中的唯一ID) |
ActionType | String | 动作类型 |
FieldType | String | 自定义属性类型 |
FieldName | String | 自定义属性名字 |
FieldId | Integer | 自定义属性ID |
FieldValue | String | 自定义属性的值 |
UpdatedAt | Integer | 更新时间戳 |
Creator | Integer | 创建人ID |
Example 1
成功示例
1{
2 "Action": "DescribeIssueCustomFieldLogList",
3 "ProjectName": "xjx-agile-2",
4 "IssueCode": 12,
5 "FieldName": "小数1"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "6a079ad4-1013-4e0b-849c-41ee1b1529d1",
4 "FieldChangeLogList": [
5 {
6 "IssueId": 85,
7 "ActionType": "UPDATE",
8 "FieldType": "TEXT_DECIMAL",
9 "FieldName": "小数1",
10 "FieldId": 208,
11 "FieldValue": "无",
12 "UpdatedAt": 1675152868000,
13 "Creator": 2
14 },
15 {
16 "IssueId": 85,
17 "ActionType": "UPDATE",
18 "FieldType": "TEXT_DECIMAL",
19 "FieldName": "小数1",
20 "FieldId": 208,
21 "FieldValue": "2",
22 "UpdatedAt": 1675152863000,
23 "Creator": 2
24 },
25 {
26 "IssueId": 85,
27 "ActionType": "UPDATE",
28 "FieldType": "TEXT_DECIMAL",
29 "FieldName": "小数1",
30 "FieldId": 88,
31 "FieldValue": "10",
32 "UpdatedAt": 1673773878000,
33 "Creator": 2
34 }
35 ]
36 }
37}
创建迭代
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIteration |
ProjectName | 是 | String | 项目名称 |
Name | 是 | String | 标题 |
Goal | 否 | String | 目标 |
Assignee | 否 | Integer | 处理人 ID |
StartAt | 否 | String | 开始时间,格式:2020-01-01 |
EndAt | 否 | String | 结束时间,格式:2020-01-01 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Iteration | Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
迭代信息说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "CreateIteration",
3 "ProjectName": "demo-project",
4 "Name": "Title"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Iteration": {
5 "CreatedAt": 1599027192347,
6 "UpdatedAt": 1599027192347,
7 "Name": "TT",
8 "Code": 8,
9 "Goal": "",
10 "StartAt": -28800000,
11 "EndAt": -28800000,
12 "Assignee": 0,
13 "Creator": 1,
14 "Deleter": 0,
15 "Starter": 0,
16 "Completer": 0,
17 "Status": "WAIT_PROCESS",
18 "WaitProcessCount": 0,
19 "ProcessingCount": 0,
20 "CompletedCount": 0,
21 "CompletedPercent": 0
22 }
23 }
24}
删除迭代
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteIteration |
ProjectName | 是 | String | 项目名称 |
IterationCode | 是 | Integer | 迭代编号 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteIteration",
3 "ProjectName": "demo-project",
4 "IterationCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
迭代详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIteration |
ProjectName | 是 | String | 项目名称 |
IterationCode | 是 | Integer | 迭代编号 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Iteration | Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "DescribeIteration",
3 "ProjectName": "project-demo",
4 "IterationCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Iteration": {
5 "CreatedAt": 1599027192347,
6 "UpdatedAt": 1599027192347,
7 "Name": "TT",
8 "Code": 8,
9 "Goal": "",
10 "StartAt": -28800000,
11 "EndAt": -28800000,
12 "Assignee": 0,
13 "Creator": 1,
14 "Deleter": 0,
15 "Starter": 0,
16 "Completer": 0,
17 "Status": "WAIT_PROCESS",
18 "WaitProcessCount": 0,
19 "ProcessingCount": 0,
20 "CompletedCount": 0,
21 "CompletedPercent": 0
22 }
23 }
24}
迭代列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIterationList |
ProjectName | 是 | String | 项目名称 |
Status | 否 | array of String | 迭代状态, WAIT_PROCESS,PROCESSING,COMPLETED |
Assignee | 否 | array of Integer | 处理人 ID 列表 |
StartDate | 否 | String | 通过开始时间过滤,时间格式:2020-12-12 |
EndDate | 否 | String | 通过结束时间过滤,时间格式:2020-12-12 |
keywords | 否 | String | 通过关键字搜索 |
Offset | 否 | Integer | 偏移量,默认 0 |
Limit | 否 | Integer | 每页数量,默认 20 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | Page of Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "DescribeIterationList",
3 "ProjectName": "demo-project",
4 "Status": [
5 "WAIT_PROCESS"
6 ]
7}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "data": {
5 "Page": 1,
6 "PageSize": 20,
7 "TotalPage": 1,
8 "TotalRow": 1,
9 "List": [
10 {
11 "CreatedAt": 1599027192000,
12 "UpdatedAt": 1599027192000,
13 "Name": "demo iteration",
14 "Code": 8,
15 "Goal": "",
16 "StartAt": -28800000,
17 "EndAt": -28800000,
18 "Assignee": 0,
19 "Creator": 1,
20 "Deleter": 0,
21 "Starter": 0,
22 "Completer": 0,
23 "Status": "WAIT_PROCESS",
24 "WaitProcessCount": 0,
25 "ProcessingCount": 0,
26 "CompletedCount": 0,
27 "CompletedPercent": 0
28 }
29 ]
30 }
31 }
32}
修改迭代
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIteration |
ProjectName | 是 | String | 项目名称 |
IterationCode | 是 | Integer | 迭代编号 |
Name | 是 | String | 标题 |
Goal | 否 | String | 目标 |
Assignee | 否 | Integer | 处理人 ID |
StartAt | 否 | String | 开始时间,格式:2020-01-01,如果有传StartAt请同时传入EndAt |
EndAt | 否 | String | 结束时间,格式:2020-01-01 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Iteration | Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "ModifyIteration",
3 "ProjectName": "demo-project",
4 "IterationCode": 1,
5 "Name": "Title"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Iteration": {
5 "CreatedAt": 1599027192347,
6 "UpdatedAt": 1599027192347,
7 "Name": "TT",
8 "Code": 8,
9 "Goal": "",
10 "StartAt": -28800000,
11 "EndAt": -28800000,
12 "Assignee": 0,
13 "Creator": 1,
14 "Deleter": 0,
15 "Starter": 0,
16 "Completer": 0,
17 "Status": "WAIT_PROCESS",
18 "WaitProcessCount": 0,
19 "ProcessingCount": 0,
20 "CompletedCount": 0,
21 "CompletedPercent": 0
22 }
23 }
24}
修改迭代状态
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIterationStatus |
ProjectName | 是 | String | 项目名称 |
IterationCode | 是 | Integer | 迭代编号 |
JoinIterationCode | 否 | Integer | 移入迭代编号 |
Operator | 是 | String | 迭代状态操作,类型:start:开始迭代、complete:完成迭代、restart:重新打开 |
StartAt | 否 | String | 开始时间,开始迭代必需,格式:2020-01-01 |
EndAt | 否 | String | 结束时间,完成迭代必需,格式:2020-01-01 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Iteration | Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "ModifyIterationStatus",
3 "ProjectName": "demo-project",
4 "IterationCode": 1,
5 "Operator": "start",
6 "StartAt": "2023-05-04",
7 "EndAt": "2023-05-06"
8}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Iteration": {
5 "CreatedAt": 1599027192347,
6 "UpdatedAt": 1599027192347,
7 "Name": "TT",
8 "Code": 8,
9 "Goal": "",
10 "StartAt": -28800000,
11 "EndAt": -28800000,
12 "Assignee": 0,
13 "Creator": 1,
14 "Deleter": 0,
15 "Starter": 0,
16 "Completer": 0,
17 "Status": "PROCESSING",
18 "WaitProcessCount": 0,
19 "ProcessingCount": 0,
20 "CompletedCount": 0,
21 "CompletedPercent": 0
22 }
23 }
24}
批量规划迭代
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:PlanIterationIssue |
ProjectName | 是 | String | 项目名称 |
IterationCode | 是 | Integer | 迭代编号,将事项移出迭代请传 0 |
IssueCode | 是 | array of Integer | 需要规划的事项编号列表 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "PlanIterationIssue",
3 "ProjectName": "demo-project",
4 "IterationCode": 1,
5 "IssueCode": [
6 1,
7 2
8 ]
9}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
创建版本
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateRelease。 |
ProjectName | 是 | String | 项目名称 |
Name | 是 | String | 版本名称 |
Description | 否 | String | 版本描述 |
Assignee | 否 | Integer | 处理人ID |
StartDate | 否 | String | 开始日期 |
ReleaseDate | 否 | String | 发布日期 |
IterationCodes | 否 | Integer List | 关联迭代code列表,为一个整数列表 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Relase | SimpleRelease | 版本信息 |
SimpleRelease
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 版本ID |
Code | Integer | 版本code(页面上显示的ID) |
Name | String | 版本名称 |
ProjectId | Integer | 项目ID |
Description | String | 版本描述 |
Assignee | Integer | 处理人ID |
Creator | Integer | 创建人ID |
Status | String | 版本状态 |
CreatedAt | Integer | 创建时间戳 |
UpdatedAt | Integer | 更新时间戳 |
StartDate | Integer | 开始日期时间戳 |
ReleaseDate | Integer | 发布日期时间戳 |
Iterations | List of Iteration | 版本关联迭代列表 |
WaitProcessCount | Integer | 待处理事项数目 |
ProcessingCount | Integer | 处理中事项数目 |
CompletedCount | Integer | 已完成事项数目 |
CompletedPercent | Integer | 事项完成率 |
Example 1
成功示例
1{
2 "Action": "CreateRelease",
3 "ProjectName": "agile",
4 "Name": "版本4",
5 "Description": "这是一个版本",
6 "Assignee": 8647786,
7 "StartDate": "2023-03-01",
8 "ReleaseDate": "2023-03-09",
9 "IterationCodes": [
10 19,
11 27
12 ]
13}
成功示例
1{
2 "Response": {
3 "RequestId": "f0e4dac8-01b9-4845-813b-1e9c34771e59",
4 "Release": {
5 "Id": 19013079,
6 "Code": 98,
7 "Name": "版本4",
8 "ProjectId": 11294378,
9 "Assignee": 8647786,
10 "Creator": 8647786,
11 "Status": "未开始",
12 "CreatedAt": 1685956579479,
13 "UpdatedAt": 1685956579479,
14 "StartDate": 1677600000000,
15 "ReleaseDate": 1678291200000,
16 "Iterations": [
17 {
18 "Code": 27,
19 "Name": "20",
20 "Status": "WAIT_PROCESS",
21 "Id": 482828
22 },
23 {
24 "Code": 19,
25 "Name": "10",
26 "Status": "WAIT_PROCESS",
27 "Id": 481835
28 }
29 ],
30 "WaitProcessCount": 0,
31 "ProcessingCount": 0,
32 "CompletedCount": 0,
33 "CompletedPercent": 0.0,
34 "Description": "这是一个版本"
35 }
36 }
37}
删除版本
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteRelease。 |
ProjectName | 是 | String | 项目名称 |
ReleaseCode | 是 | Integer | 页面上版本ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteRelease",
3 "ProjectName": "xjx-agile",
4 "ReleaseCode": 17
5}
成功示例
1{
2 "Response": {
3 "RequestId": "a474f0f-3e3b-4123-ad40-cedb64d1898b"
4 }
5}
查看版本详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeRelease。 |
ProjectName | 是 | String | 项目名称 |
ReleaseCode | 是 | Integer | 页面上版本ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Relase | SimpleRelease | 版本信息 |
Example 1
成功示例
1{
2 "Action": "DescribeRelease",
3 "ProjectName": "agile",
4 "ReleaseCode": 42
5}
成功示例
1{
2 "Response": {
3 "RequestId": "a474f0f-3e3b-4123-ad40-cedb64d1898b",
4 "Release": {
5 "Id": 16965247,
6 "Code": 42,
7 "Name": "版本1",
8 "ProjectId": 0,
9 "Assignee": 0,
10 "Creator": 8647786,
11 "Status": "未开始",
12 "CreatedAt": 1669874860000,
13 "UpdatedAt": 1671002152000,
14 "StartDate": 1670860800000,
15 "ReleaseDate": 1671465600000,
16 "Iterations": [],
17 "WaitProcessCount": 5,
18 "ProcessingCount": 0,
19 "CompletedCount": 0,
20 "CompletedPercent": 0.0,
21 "Description": ""
22 }
23 }
24}
修改版本
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyRelease。 |
ProjectName | 是 | String | 项目名称 |
ReleaseCode | 是 | Integer | 页面上版本ID |
Name | 否 | String | 修改之后的版本名 |
Description | 否 | String | 修改之后的版本描述 |
Assignee | 否 | Integer | 修改之后的处理人ID |
StartDate | 否 | String | 修改之后的版本开始日期 |
ReleaseDate | 否 | String | 修改之后的版本发布日期 |
IterationCodes | 否 | List of Integer | 修改之后的版本关联迭代 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Relase | SimpleRelease | 版本信息 |
Example 1
成功示例
1{
2 "Action": "ModifyRelease",
3 "ProjectName": "xjx-agile",
4 "ReleaseCode": 8,
5 "Name": "xjx",
6 "Description": "",
7 "Assignee": 0,
8 "StartDate": "",
9 "ReleaseDate": "",
10 "IterationCodes": []
11}
成功示例
1{
2 "Response": {
3 "RequestId": "a474f0f-3e3b-4123-ad40-cedb64d1898b",
4 "Release": {
5 "Id": 19013079,
6 "Code": 98,
7 "Name": "版本4-xxx",
8 "ProjectId": 0,
9 "Assignee": 8647786,
10 "Creator": 8647786,
11 "Status": "未开始",
12 "CreatedAt": 1685956579000,
13 "UpdatedAt": 1685957486215,
14 "StartDate": 1677600000000,
15 "ReleaseDate": 1678291200000,
16 "Iterations": [
17 {
18 "Code": 27,
19 "Name": "20",
20 "Status": "WAIT_PROCESS",
21 "Id": 482828
22 },
23 {
24 "Code": 19,
25 "Name": "10",
26 "Status": "WAIT_PROCESS",
27 "Id": 481835
28 }
29 ],
30 "WaitProcessCount": 0,
31 "ProcessingCount": 0,
32 "CompletedCount": 0,
33 "CompletedPercent": 0.0,
34 "Description": "这是一个版本"
35 }
36 }
37}
版本发布范围
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeReleaseIssueList。 |
ProjectName | 是 | String | 项目名称 |
ReleaseCode | 是 | Integer | 页面上版本ID |
IssueTypes | 否 | List of String | 事项类型数组 |
StatusTypes | 否 | List of String | 事项状态类型数组 |
IssueTypeIds | 否 | List of Integer | 事项类型ID数组 |
Assignees | 否 | List of Integer | 处理人ID数组 |
Watchers | 否 | List of Integer | 关注人ID数组 |
Keywords | 否 | String | 关键字 |
SortBy | 否 | String | 排序,取值如"ID:ASC" |
ShowSubIssues | 否 | Boolean | 是否显示字事项,和页面开关对应 |
Page | 否 | Integer | 分页查询中的页数,page从1开始计数 |
PageSize | 否 | Integer | 分页查询中每页的大小 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
PageNumber | Integer | 第几页 |
PageSize | Integer | 每页大小 |
TotalPage | Integer | 总共几页 |
TotalCount | Integer | 总共几条事项 |
List | List of Issue | 事项列表 |
Example 1
成功示例
1{
2 "Action": "DescribeReleaseIssueList",
3 "ProjectName": "xjx-agile-2",
4 "ReleaseCode": 0,
5 "IssueTypes": [],
6 "StatusTypes": [],
7 "IssueTypeIds": [],
8 "Assignees": [],
9 "Watchers": [],
10 "Keywords": "",
11 "SortBy": "",
12 "ShowSubIssues": true,
13 "Page": 1,
14 "PageSize": 20
15}
成功示例
1{
2 "Response": {
3 "RequestId": "a0f6cf52-1505-427f-86e0-fcbc2ee34e6b",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 10,
7 "TotalPage": 1,
8 "TotalCount": 3,
9 "List": [
10 {
11 "Epic": {
12 "Code": 0,
13 "Type": "",
14 "Name": "",
15 "IssueStatusId": 0,
16 "IssueStatusName": "",
17 "Priority": "",
18 "Assignee": {
19 "Id": 0,
20 "Status": 0,
21 "Avatar": "",
22 "Name": "",
23 "Email": "",
24 "TeamId": 0,
25 "Phone": "",
26 "GlobalKey": "",
27 "TeamGlobalKey": ""
28 }
29 },
30 "ParentType": "DEFECT",
31 "Code": 101,
32 "Type": "DEFECT",
33 "Name": "defect1",
34 "Description": "",
35 "IterationId": 0,
36 "IssueStatusId": 43973050,
37 "IssueStatusName": "待处理",
38 "IssueStatusType": "TODO",
39 "Priority": "1",
40 "Assignee": {
41 "Id": 0,
42 "Status": 0,
43 "Avatar": "",
44 "Name": "",
45 "Email": "",
46 "TeamId": 0,
47 "Phone": "",
48 "GlobalKey": "",
49 "TeamGlobalKey": ""
50 },
51 "StartDate": 0,
52 "DueDate": 0,
53 "WorkingHours": 0.0,
54 "Creator": {
55 "Id": 8647786,
56 "Status": 1,
57 "Avatar": "https://coding-net-production-static-ci.codehub.cn/40a9f442-c27c-41a4-b14d-8d3de4e6caf0.jpeg?imageMogr2/cut/500x500x0x0",
58 "Name": "xjx",
59 "Email": "",
60 "TeamId": 0,
61 "Phone": "",
62 "GlobalKey": "",
63 "TeamGlobalKey": ""
64 },
65 "StoryPoint": "",
66 "CreatedAt": 1685958350000,
67 "UpdatedAt": 1685958350000,
68 "CompletedAt": 0,
69 "ProjectModule": {
70 "Id": 0,
71 "Name": ""
72 },
73 "Watchers": [
74 {
75 "Id": 8647786,
76 "Status": 1,
77 "Avatar": "https://coding-net-production-static-ci.codehub.cn/40a9f442-c27c-41a4-b14d-8d3de4e6caf0.jpeg?imageMogr2/cut/500x500x0x0",
78 "Name": "xjx",
79 "Email": "",
80 "TeamId": 0,
81 "Phone": "",
82 "GlobalKey": "",
83 "TeamGlobalKey": ""
84 }
85 ],
86 "Labels": [],
87 "Files": [],
88 "RequirementType": {
89 "Id": 0,
90 "Name": ""
91 },
92 "DefectType": {
93 "Id": 0,
94 "Name": "",
95 "IconUrl": ""
96 },
97 "CustomFields": [],
98 "ThirdLinks": [],
99 "SubTasks": [],
100 "Parent": {
101 "Code": 0,
102 "Type": "",
103 "Name": "",
104 "IssueStatusId": 0,
105 "IssueStatusName": "",
106 "Priority": "",
107 "Assignee": {
108 "Id": 0,
109 "Status": 0,
110 "Avatar": "",
111 "Name": "",
112 "Email": "",
113 "TeamId": 0,
114 "Phone": "",
115 "GlobalKey": "",
116 "TeamGlobalKey": ""
117 },
118 "IssueStatusType": "",
119 "IssueTypeDetail": {
120 "Id": 0,
121 "Name": "",
122 "IssueType": "",
123 "Description": "",
124 "IsSystem": false
125 }
126 },
127 "Iteration": {
128 "Code": 0,
129 "Name": "",
130 "Status": "",
131 "Id": 0
132 },
133 "IssueTypeDetail": {
134 "Id": 8128775,
135 "Name": "缺陷",
136 "IssueType": "DEFECT",
137 "Description": "缺陷是指软件不符合最初定义的业务需求的现象,缺陷管理用于跟踪这些问题和错误。",
138 "IsSystem": true
139 },
140 "IssueTypeId": 8128775
141 },
142 {
143 "Epic": {
144 "Code": 0,
145 "Type": "",
146 "Name": "",
147 "IssueStatusId": 0,
148 "IssueStatusName": "",
149 "Priority": "",
150 "Assignee": {
151 "Id": 0,
152 "Status": 0,
153 "Avatar": "",
154 "Name": "",
155 "Email": "",
156 "TeamId": 0,
157 "Phone": "",
158 "GlobalKey": "",
159 "TeamGlobalKey": ""
160 }
161 },
162 "ParentType": "MISSION",
163 "Code": 100,
164 "Type": "MISSION",
165 "Name": "mission1",
166 "Description": "",
167 "IterationId": 0,
168 "IssueStatusId": 43973053,
169 "IssueStatusName": "未开始",
170 "IssueStatusType": "TODO",
171 "Priority": "1",
172 "Assignee": {
173 "Id": 0,
174 "Status": 0,
175 "Avatar": "",
176 "Name": "",
177 "Email": "",
178 "TeamId": 0,
179 "Phone": "",
180 "GlobalKey": "",
181 "TeamGlobalKey": ""
182 },
183 "StartDate": 0,
184 "DueDate": 0,
185 "WorkingHours": 0.0,
186 "Creator": {
187 "Id": 8647786,
188 "Status": 1,
189 "Avatar": "https://coding-net-production-static-ci.codehub.cn/40a9f442-c27c-41a4-b14d-8d3de4e6caf0.jpeg?imageMogr2/cut/500x500x0x0",
190 "Name": "xjx",
191 "Email": "",
192 "TeamId": 0,
193 "Phone": "",
194 "GlobalKey": "",
195 "TeamGlobalKey": ""
196 },
197 "StoryPoint": "",
198 "CreatedAt": 1685958344000,
199 "UpdatedAt": 1685958344000,
200 "CompletedAt": 0,
201 "ProjectModule": {
202 "Id": 0,
203 "Name": ""
204 },
205 "Watchers": [
206 {
207 "Id": 8647786,
208 "Status": 1,
209 "Avatar": "https://coding-net-production-static-ci.codehub.cn/40a9f442-c27c-41a4-b14d-8d3de4e6caf0.jpeg?imageMogr2/cut/500x500x0x0",
210 "Name": "xjx",
211 "Email": "",
212 "TeamId": 0,
213 "Phone": "",
214 "GlobalKey": "",
215 "TeamGlobalKey": ""
216 }
217 ],
218 "Labels": [],
219 "Files": [],
220 "RequirementType": {
221 "Id": 0,
222 "Name": ""
223 },
224 "DefectType": {
225 "Id": 0,
226 "Name": "",
227 "IconUrl": ""
228 },
229 "CustomFields": [],
230 "ThirdLinks": [],
231 "SubTasks": [],
232 "Parent": {
233 "Code": 0,
234 "Type": "",
235 "Name": "",
236 "IssueStatusId": 0,
237 "IssueStatusName": "",
238 "Priority": "",
239 "Assignee": {
240 "Id": 0,
241 "Status": 0,
242 "Avatar": "",
243 "Name": "",
244 "Email": "",
245 "TeamId": 0,
246 "Phone": "",
247 "GlobalKey": "",
248 "TeamGlobalKey": ""
249 },
250 "IssueStatusType": "",
251 "IssueTypeDetail": {
252 "Id": 0,
253 "Name": "",
254 "IssueType": "",
255 "Description": "",
256 "IsSystem": false
257 }
258 },
259 "Iteration": {
260 "Code": 0,
261 "Name": "",
262 "Status": "",
263 "Id": 0
264 },
265 "IssueTypeDetail": {
266 "Id": 8128774,
267 "Name": "任务",
268 "IssueType": "MISSION",
269 "Description": "任务是指为实现某个目标或需求所进行的具体活动。",
270 "IsSystem": true
271 },
272 "IssueTypeId": 8128774
273 },
274 {
275 "Epic": {
276 "Code": 0,
277 "Type": "",
278 "Name": "",
279 "IssueStatusId": 0,
280 "IssueStatusName": "",
281 "Priority": "",
282 "Assignee": {
283 "Id": 0,
284 "Status": 0,
285 "Avatar": "",
286 "Name": "",
287 "Email": "",
288 "TeamId": 0,
289 "Phone": "",
290 "GlobalKey": "",
291 "TeamGlobalKey": ""
292 }
293 },
294 "ParentType": "REQUIREMENT",
295 "Code": 99,
296 "Type": "REQUIREMENT",
297 "Name": "story1",
298 "Description": "",
299 "IterationId": 0,
300 "IssueStatusId": 43973053,
301 "IssueStatusName": "未开始",
302 "IssueStatusType": "TODO",
303 "Priority": "1",
304 "Assignee": {
305 "Id": 0,
306 "Status": 0,
307 "Avatar": "",
308 "Name": "",
309 "Email": "",
310 "TeamId": 0,
311 "Phone": "",
312 "GlobalKey": "",
313 "TeamGlobalKey": ""
314 },
315 "StartDate": 0,
316 "DueDate": 0,
317 "WorkingHours": 0.0,
318 "Creator": {
319 "Id": 8647786,
320 "Status": 1,
321 "Avatar": "https://coding-net-production-static-ci.codehub.cn/40a9f442-c27c-41a4-b14d-8d3de4e6caf0.jpeg?imageMogr2/cut/500x500x0x0",
322 "Name": "xjx",
323 "Email": "",
324 "TeamId": 0,
325 "Phone": "",
326 "GlobalKey": "",
327 "TeamGlobalKey": ""
328 },
329 "StoryPoint": "",
330 "CreatedAt": 1685958337000,
331 "UpdatedAt": 1685958337000,
332 "CompletedAt": 0,
333 "ProjectModule": {
334 "Id": 0,
335 "Name": ""
336 },
337 "Watchers": [
338 {
339 "Id": 8647786,
340 "Status": 1,
341 "Avatar": "https://coding-net-production-static-ci.codehub.cn/40a9f442-c27c-41a4-b14d-8d3de4e6caf0.jpeg?imageMogr2/cut/500x500x0x0",
342 "Name": "xjx",
343 "Email": "",
344 "TeamId": 0,
345 "Phone": "",
346 "GlobalKey": "",
347 "TeamGlobalKey": ""
348 }
349 ],
350 "Labels": [
351 {
352 "Id": 12956227,
353 "Name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
354 "Color": "#C6C8CC"
355 },
356 {
357 "Id": 12956228,
358 "Name": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
359 "Color": "#C6C8CC"
360 }
361 ],
362 "Files": [],
363 "RequirementType": {
364 "Id": 0,
365 "Name": ""
366 },
367 "DefectType": {
368 "Id": 0,
369 "Name": "",
370 "IconUrl": ""
371 },
372 "CustomFields": [],
373 "ThirdLinks": [],
374 "SubTasks": [],
375 "Parent": {
376 "Code": 0,
377 "Type": "",
378 "Name": "",
379 "IssueStatusId": 0,
380 "IssueStatusName": "",
381 "Priority": "",
382 "Assignee": {
383 "Id": 0,
384 "Status": 0,
385 "Avatar": "",
386 "Name": "",
387 "Email": "",
388 "TeamId": 0,
389 "Phone": "",
390 "GlobalKey": "",
391 "TeamGlobalKey": ""
392 },
393 "IssueStatusType": "",
394 "IssueTypeDetail": {
395 "Id": 0,
396 "Name": "",
397 "IssueType": "",
398 "Description": "",
399 "IsSystem": false
400 }
401 },
402 "Iteration": {
403 "Code": 0,
404 "Name": "",
405 "Status": "",
406 "Id": 0
407 },
408 "IssueTypeDetail": {
409 "Id": 8128772,
410 "Name": "用户故事",
411 "IssueType": "REQUIREMENT",
412 "Description": "用户故事是敏捷框架中最小的工作单元,是从用户角度描述软件如何为其带来特定的价值。",
413 "IsSystem": true
414 },
415 "IssueTypeId": 8128772
416 }
417 ]
418 }
419 }
420}
获取某个事项加入的所有版本
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueReleaseList。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 页面上事项ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ReleaseList | List of SimpleRelease | 事项加入的版本列表,是一个SimpleRelease列表 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueReleaseList",
3 "ProjectName": "agile",
4 "IssueCode": 100
5}
成功示例
1{
2 "Response": {
3 "RequestId": "77fc58d0-fa1c-4a8a-9db4-709d5afd564b",
4 "ReleaseList": [
5 {
6 "Id": 19013079,
7 "Code": 98,
8 "Name": "版本4-xxx",
9 "ProjectId": 0,
10 "Assignee": 8647786,
11 "Creator": 8647786,
12 "Status": "未开始",
13 "CreatedAt": 1685956579000,
14 "UpdatedAt": 1685957486000,
15 "StartDate": 1677600000000,
16 "ReleaseDate": 1678291200000,
17 "Iterations": [
18 {
19 "Code": 27,
20 "Name": "20",
21 "Status": "WAIT_PROCESS",
22 "Id": 482828
23 },
24 {
25 "Code": 19,
26 "Name": "10",
27 "Status": "WAIT_PROCESS",
28 "Id": 481835
29 }
30 ],
31 "WaitProcessCount": 3,
32 "ProcessingCount": 0,
33 "CompletedCount": 0,
34 "CompletedPercent": 0.0,
35 "Description": "这是一个版本"
36 }
37 ]
38 }
39}
查询项目内版本列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueReleaseList。 |
ProjectName | 是 | String | 项目名称 |
SortKey | 否 | String | 排序KEY |
SortValue | 否 | String | 排序VALUE |
Page | 否 | Integer | 分页查询中的页数,page从1开始计数 |
PageSize | 否 | Integer | 分页查询中每页的大小 |
OpenApiIssueCondition | 否 | List of IssueCondition | 筛选条件列表,每一个值都是一个筛选条件,条件取值可以参考页面上的对应的HTTP接口 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
PageNumber | Integer | 第几页 |
PageSize | Integer | 每页大小 |
TotalPage | Integer | 总共几页 |
TotalCount | Integer | 总共几条版本 |
List | List of SimpleRelease | 版本列表 |
Example 1
成功示例
1{
2 "Action": "DescribeReleaseList",
3 "ProjectName": "agile",
4 "SortKey": "CODE",
5 "SortValue": "ASC",
6 "Page": 1,
7 "PageSize": 20,
8 "OpenApiIssueCondition": [
9 {
10 "key": "STATUS_TYPE",
11 "value": [
12 "TODO"
13 ]
14 },
15 {
16 "key": "ASSIGNEE",
17 "value": [],
18 "constValue": []
19 },
20 {
21 "key": "KEYWORD",
22 "value": ""
23 }
24 ]
25}
成功示例
1{
2 "Response": {
3 "RequestId": "5978c307-6150-4fba-8df5-828c047a7555",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 20,
7 "TotalPage": 1,
8 "TotalCount": 4,
9 "List": [
10 {
11 "Id": 16965247,
12 "Code": 42,
13 "Name": "版本1",
14 "ProjectId": 0,
15 "Assignee": 0,
16 "Creator": 0,
17 "Status": "未开始",
18 "CreatedAt": 1669874860000,
19 "UpdatedAt": 1671002152000,
20 "StartDate": 1670860800000,
21 "ReleaseDate": 1671465600000,
22 "Iterations": [],
23 "WaitProcessCount": 5,
24 "ProcessingCount": 0,
25 "CompletedCount": 0,
26 "CompletedPercent": 0.0,
27 "Description": ""
28 },
29 {
30 "Id": 16965252,
31 "Code": 43,
32 "Name": "版本2",
33 "ProjectId": 0,
34 "Assignee": 0,
35 "Creator": 0,
36 "Status": "未开始",
37 "CreatedAt": 1669874870000,
38 "UpdatedAt": 1671002176000,
39 "StartDate": 1669564800000,
40 "ReleaseDate": 1672848000000,
41 "Iterations": [],
42 "WaitProcessCount": 5,
43 "ProcessingCount": 1,
44 "CompletedCount": 0,
45 "CompletedPercent": 0.0,
46 "Description": ""
47 },
48 {
49 "Id": 17459381,
50 "Code": 67,
51 "Name": "版本3",
52 "ProjectId": 0,
53 "Assignee": 0,
54 "Creator": 0,
55 "Status": "处理中",
56 "CreatedAt": 1675393795000,
57 "UpdatedAt": 1675416456000,
58 "StartDate": 0,
59 "ReleaseDate": 0,
60 "Iterations": [],
61 "WaitProcessCount": 1,
62 "ProcessingCount": 0,
63 "CompletedCount": 0,
64 "CompletedPercent": 0.0,
65 "Description": ""
66 },
67 {
68 "Id": 19013079,
69 "Code": 98,
70 "Name": "版本4-xxx",
71 "ProjectId": 0,
72 "Assignee": 0,
73 "Creator": 0,
74 "Status": "未开始",
75 "CreatedAt": 1685956579000,
76 "UpdatedAt": 1685957486000,
77 "StartDate": 1677600000000,
78 "ReleaseDate": 1678291200000,
79 "Iterations": [],
80 "WaitProcessCount": 3,
81 "ProcessingCount": 0,
82 "CompletedCount": 0,
83 "CompletedPercent": 0.0,
84 "Description": "这是一个版本"
85 }
86 ]
87 }
88 }
89}
查询工时日志列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueWorkLogList。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
WorkLogs | Array of IssueWorkLog | 工时日志列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1
4}
成功示例
1{
2 "Response": {
3 "WorkLogs": [
4 {
5 "WorkingDesc": "xx",
6 "IssueId": 1,
7 "RecordHours": 1,
8 "UserId": 1,
9 "Id": 1,
10 "CreatedAt": 1608689693852,
11 "RemainingHours": 2
12 }
13 ],
14 "RequestId": "1"
15 }
16}
登记工时
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIssueWorkHours。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
SpendHour | 是 | Float | 使用工时 |
RemainingHour | 是 | Float | 剩余工时 |
StartAt | 是 | Integer | 开始时间戳 |
WorkingDesc | 否 | String | 工作描述 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1,
4 "SpendHour": 2,
5 "RemainingHour": 1,
6 "StartAt": "1608630452740",
7 "WorkingDesc": "xxx"
8}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
删除工时日志
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteIssueWorkHours。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
WorkHourLogId | 是 | Integer | 工时日志 Id |
RollbackRemainingHours | 是 | Boolean | 是否将该工时日志的使用工时归还到剩余工时,默认:false |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1,
4 "WorkHourLogId": 2,
5 "RollbackRemainingHours": true
6}
成功示例
1{
2 "Response": {
3 "RequestId": "xx"
4 }
5}
创建代码仓库
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
ProjectId | 是 | Integer | 项目 id |
DepotName | 是 | String | 仓库名称 |
Shared | 是 | Boolean | 是否开源 |
Description | 否 | String | 仓库描述 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
DepotId | Integer | 仓库 id |
Example 1
成功示例
1{
2 "Action": "CreateGitDepot",
3 "ProjectId": 5001,
4 "DepotName": "my-demo",
5 "Description": "啦啦啦啦啦",
6 "Shared": true
7}
成功示例
1{
2 "Response": {
3 "RequestId": "4cc3caaa-ed3d-e610-d274-63694db9e81d",
4 "DepotId": 1001
5 }
6}
获取代码仓库详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Depot | DepotInfo | 仓库详情 |
DepotInfo 参数详情
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 仓库Id |
Name | String | 仓库名称 |
HttpsUrl | String | https 的 url 路径 |
ProjectId | Integer | 项目Id |
SshUrl | String | ssh 的 url 路径 |
WebUrl | String | web 的 url 路径 |
VcsType | String | 仓库类型 |
ProjectName | String | 项目名称 |
Description | String | 仓库描述 |
CreateAt | Long | 创建时间 |
LastPushAt | Long | 最终 push 时间 |
Example 1
成功示例
1{
2 "Action": "DescribeGitDepot",
3 "DepotId": 9208697
4}
成功示例
1{
2 "Response": {
3 "RequestId": "92f7ae17-cb38-d8c5-5144-0a76b6a7ee7b",
4 "Depot": {
5 "Id": 9208697,
6 "Name": "demo-tool",
7 "HttpsUrl": "https://e.coding.net/yy-2019/gongjuguize-demo/demo-tool.git",
8 "ProjectId": 9486168,
9 "SshUrl": "git@e.coding.net:yy-2019/gongjuguize-demo/demo-tool.git",
10 "WebUrl": "https://yy-2019.coding.net/p/gongjuguize-demo/d/demo-tool",
11 "VcsType": "git",
12 "ProjectName": "gongjuguize-demo",
13 "Description": "",
14 "CreatedAt": 1631517812000,
15 "LastPushAt": 0
16 }
17 }
18}
Example 1
成功示例
1{
2 "Action": "DeleteGitDepot",
3 "DepotId": 1759
4}
成功示例
1{
2 "Response": {
3 "RequestId": "4d7694ed-5818-3ea5-4834-a9d74cb2a594"
4 }
5}
修改仓库描述
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
UserId | 是 | Integer | 用户 id |
Description | 是 | String | 仓库描述 |
Example 1
成功示例
1{
2 "Action": "ModifyDepotDescription",
3 "DepotId": 791507,
4 "UserId": 1,
5 "Description": "It is a test depot"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "4d7694ed-5818-3ea5-4834-a9d74cb2a594"
4 }
5}
修改仓库名称
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
UserId | 是 | Integer | 用户 id |
DepotName | 是 | String | 新仓库名 |
Example 1
成功示例
1{
2 "Action": "ModifyDepotName",
3 "DepotId": 791507,
4 "UserId": 89189,
5 "DepotName": "demo-update"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "212012ad-e391-0f54-4216-5817abda8f3e",
4 "DepotInfo": {
5 "Id": 791507,
6 "Name": "demo-update",
7 "HttpsUrl": "https://e.coding.net/codingcorp/demo/demo-update.git",
8 "ProjectId": 779272,
9 "SshUrl": "git@git.e.coding.net:codingcorp/demo/demo-update.git",
10 "WebUrl": "https://codingcorp.coding.net/p/demo/d/demo-update",
11 "VcsType": "git"
12 }
13 }
14}
创建提交注释
输入参数
注意: 对于 NotesRef 参数建议默认为空,因为 git 会使用默认的 ref :refs/notes/commits,如果填了这个参数,会用这个参数指定的 ref 来保存您的 git note,有可能会覆盖您原有的 ref。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
CommitSha | 是 | String | 提交的 Sha |
Note | 是 | String | NotesRef |
CommitMessage | 是 | String | 提交信息 |
NotesRef | 否 | String | 注释分支 ref。建议默认不填 |
Example 1
成功示例
1{
2 "Action": "CreateGitCommitNote",
3 "DepotId": 1383,
4 "NotesRef": "",
5 "CommitSha": "5178d68bd3ee2a93733354884f0888584d671d7b",
6 "Note": "coding",
7 "CommitMessage": "coding"
8}
成功示例
1{
2 "Response": {
3 "RequestId": "d7b00b5b-00b6-fb21-d6f5-92c146f73e0f"
4 }
5}
查询项目下仓库信息列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
ProjectId | 是 | Integer | 项目 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
DepotData | DepotData | 返回信息包 |
DepotData 参数详情
参数名称 | 类型 | 描述 |
---|---|---|
Depots | DepotInfo | 仓库信息列表 |
DepotInfo 参数详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 仓库名称 |
HttpsUrl | String | https 的 url 路径 |
SshUrl | String | ssh 的 url 路径 |
Id | Integer | 仓库 id |
VcsType | String | 仓库类型 |
Description | String | 仓库描述 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectDepotInfoList",
3 "ProjectId": 234
4}
成功示例
1{
2 "Response": {
3 "RequestId": "e1d658b4-7e89-febe-2072-e68a9d9852e3",
4 "DepotData": {
5 "Depots": [
6 {
7 "Name": "depot-1",
8 "HttpsUrl": "https://e.coding.net/demo/demo-project/depot-1.git",
9 "SshUrl": "git@e.coding.net:demo/demo-project/depot-1.git",
10 "Id": 1,
11 "VcsType": "git",
12 "Description": "foo"
13 },
14 {
15 "Name": "depot-2",
16 "HttpsUrl": "https://e.coding.net/demo/demo-project/depot-2.git",
17 "SshUrl": "git@e.coding.net:demo/demo-project/depot-2.git",
18 "Id": 2,
19 "VcsType": "git",
20 "Description": "foo"
21 },
22 {
23 "Name": "depot-3",
24 "HttpsUrl": "https://e.coding.net/demo/demo-project/depot-3.git",
25 "SshUrl": "git@e.coding.net:demo/demo-project/depot-3.git",
26 "Id": 3,
27 "VcsType": "svn",
28 "Description": "foo"
29 }
30 ]
31 }
32 }
33}
获取团队下仓库列表
接口描述
获取团队下仓库列表,仅团队所有者或团队管理员可以调用。
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
GroupName | 否 | String | 项目名称,可模糊查询,默认返回全部项目 |
DepotName | 否 | String | 仓库名称,可模糊查询,默认返回全部仓库 |
PageNumber | 是 | Integer | 页码 |
PageSize | 是 | Integer | 页码大小 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
DepotData | DepotData | 仓库信息详情列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeTeamDepotInfoList",
3 "ProjectName": "",
4 "DepotName": "",
5 "PageNumber": 1,
6 "PageSize": 6
7}
成功示例
1{
2 "Response": {
3 "RequestId": "ba708820-d6ed-bb70-a628-d25d00a3c1ae",
4 "DepotData": {
5 "Depots": [
6 {
7 "Id": 1,
8 "Name": "demo",
9 "HttpsUrl": "http://coding.com/codingcorp/demo/demo.git",
10 "ProjectId": 450,
11 "SshUrl": "git@coding.com:codingcorp/demo/demo.git",
12 "WebUrl": "http://codingcorp.coding.net/p/demo/d/demo",
13 "VcsType": "git"
14 },
15 {
16 "Id": 100,
17 "Name": "demo1",
18 "HttpsUrl": "http://coding.com/codingcorp/demo/demo1.git",
19 "ProjectId": 450,
20 "SshUrl": "git@coding.com:codingcorp/demo/demo1.git",
21 "WebUrl": "http://codingcorp.coding.net/p/demo/d/demo1",
22 "VcsType": "git"
23 },
24 {
25 "Id": 101,
26 "Name": "git",
27 "HttpsUrl": "http://coding.com/codingcorp/demo/git.git",
28 "ProjectId": 450,
29 "SshUrl": "git@coding.com:codingcorp/demo/git.git",
30 "WebUrl": "http://codingcorp.coding.net/p/demo/d/git",
31 "VcsType": "git"
32 },
33 {
34 "Id": 103,
35 "Name": "ruby-demo",
36 "HttpsUrl": "http://coding.com/codingcorp/demo/ruby-demo.git",
37 "ProjectId": 450,
38 "SshUrl": "git@coding.com:codingcorp/demo/ruby-demo.git",
39 "WebUrl": "http://codingcorp.coding.net/p/demo/d/ruby-demo",
40 "VcsType": "git"
41 },
42 {
43 "Id": 106,
44 "Name": "jekyll-demo",
45 "HttpsUrl": "http://coding.com/codingcorp/demo/jekyll-demo.git",
46 "ProjectId": 450,
47 "SshUrl": "git@coding.com:codingcorp/demo/jekyll-demo.git",
48 "WebUrl": "http://codingcorp.coding.net/p/demo/d/jekyll-demo",
49 "VcsType": "git"
50 },
51 {
52 "Id": 107,
53 "Name": "hexo-demo",
54 "HttpsUrl": "http://coding.com/codingcorp/demo/hexo-demo.git",
55 "ProjectId": 450,
56 "SshUrl": "git@coding.com:codingcorp/demo/hexo-demo.git",
57 "WebUrl": "http://codingcorp.coding.net/p/demo/d/hexo-demo",
58 "VcsType": "git"
59 }
60 ]
61 }
62 }
63}
修改仓库默认分支
接口描述
修改仓库默认分支
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库Id |
BranchName | 是 | String | 分支名 |
UserId | 是 | Integer | 用户Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyDefaultBranch",
3 "DepotId": 1,
4 "UserId": 1,
5 "BranchName": "release"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "3732053f-a016-d452-a8f6-bb80cf8d74ed"
4 }
5}
根据模板创建仓库
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
ProjectId | 是 | Integer | 项目Id |
DepotName | 是 | String | 仓库名 |
Template | 是 | String | 仓库模板。目前支持:Spring, Ruby on Rails,Ruby Sinatra,Node.js,Android,Python。对应模板参数分别为:SPRING,ROR,SINATRA,NODEJS,ANDROID,FLASK。如果设置了自定义模版,可以传入自定义模版的仓库Id |
UserId | 是 | Integer | 用户Id |
Description | 否 | String | 仓库描述 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
DepotInfo | DepotInfo | 仓库数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
仓库信息:
名称 | 类型 | 描述 |
---|---|---|
Name | String | 仓库名称 |
HttpsUrl | String | 仓库的 https 地址 |
SshUrl | String | 仓库的 ssh 地址 |
Id | Integer | 仓库 id |
VcsType | String | 仓库类型,具体值为 git 或者 svn |
WebUrl | String | 仓库 webURL |
ProjectId | Integer | 项目 Id |
Example 1
成功示例
1{
2 "Action": "CreateDepotByTemplate",
3 "ProjectId": 450,
4 "DepotName": "hexo-demo-2",
5 "Description": "这是一个测试的 Spring 仓库",
6 "Template": "SPRING",
7 "UserId": 1
8}
成功示例
1{
2 "Response": {
3 "RequestId": "c783ce49-5969-7f75-0145-44f694af8f8f",
4 "DepotInfo": {
5 "Id": 108,
6 "Name": "hexo-demo-2",
7 "HttpsUrl": "http://coding.com/codingcorp/demo/hexo-demo-2.git",
8 "ProjectId": 450,
9 "SshUrl": "git@coding.com:codingcorp/demo/hexo-demo-2.git",
10 "WebUrl": "http://codingcorp.coding.net/p/demo/d/hexo-demo-2",
11 "VcsType": "git"
12 }
13 }
14}
查询仓库目录下文件和文件夹名字
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
Ref | 是 | String | 分支名 |
Path | 是 | String | 所查询的文件夹 |
输出参数
参数名称 | 类型 | 描述 | |
---|---|---|---|
Items | GitTreeItem | git 树对象 |
GitTreeItem 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Mode | String | 对象类型 tree:文件夹 file:文件 |
Path | String | 文件或文件夹路径 |
Name | String | 文件或文件夹名字 |
Sha | String | Commit ID |
Example 1
成功示例
1{
2 "Action": "DescribeGitFiles",
3 "Ref": "master",
4 "Path": "src",
5 "DepotPath": "codingcorp/project-d/depot-1"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "14bba471-18d8-1c7e-5cee-a7454585bbd2",
4 "Items": [
5 {
6 "Mode": "tree",
7 "Path": "src/main",
8 "Name": "main",
9 "Sha": "2346422600241eda05736401950d65cfd22a3cd"
10 },
11 {
12 "Mode": "tree",
13 "Path": "src/mm",
14 "Name": "mm",
15 "Sha": "45d1b22600241eda05736401950d65cfd23efa13"
16 }
17 ]
18 }
19}
获取文件详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Ref | 是 | String | 分支名 |
Path | 是 | String | 所查询的文件夹 |
输出参数
参数名称 | 类型 | 描述 | |
---|---|---|---|
GitFile | GitFileItem | 文件详情 |
GitFileItem 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
FileName | String | 文件名 |
FilePath | String | 文件路径 |
Size | Long | 文件大小 |
Encoding | String | 加密形式 |
Content | String | 加密后文件的内容 |
ContentSha256 | String | 文件内容的hash结果 |
Sha | String | Commit ID |
Example 1
成功示例
1{
2 "Action": "DescribeGitFile",
3 "DepotId": 1,
4 "Ref": "master",
5 "Path": "aaa"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "56c5f669-93c7-8088-9d2f-a8872fc879ed",
4 "GitFile": {
5 "FileName": "bbb",
6 "FilePath": "src/bbb",
7 "Size": 23,
8 "Encoding": "base64",
9 "Content": "YmJiCgrlpJrlkIPngrnlkIPnmoToj5w=",
10 "ContentSha256": "3073271fa083e505836c873ffd90be5e7673c7d4787174dd7157ad360b58bbdc",
11 "Sha": "45d1b22600241eda05736401950d65cfd23efa13"
12 }
13 }
14}
导入用户 SSH 公钥
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Title | 是 | String | 导入的 ssh key 标识名 |
Content | 是 | String | 公钥内容 |
ExpirationDate | 否 | String | 过期时间,不填为永不过期 9999-12-31 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
SshKeyInfo | SshKeyInfo | 公钥详情 |
SshKeyInfo 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 公钥Id |
OwnerId | Integer | 公钥所属者Id |
Title | String | 公钥标题 |
FingerPrint | String | 指纹信息 |
CreatedAt | Integer | 创建时间 |
ExpirationDate | String | 过期时间 |
HasExpired | Boolean | 是否过期 |
Example 1
成功示例
1{
2 "Action": "CreateSshKey",
3 "Title": "Hello",
4 "Content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEPWDzF9gULVngb8Bv/SEGXVa6i5I1mFQK9nuUib0fbR4rFAvfBhbJtHoed4O+/KOc3Sxw/A0dQB6uZB7jfzw8RY5dtOvEkI1WlZ8/+7cC7Q14DkzElfCNodha/kP5dS23cIYZdESfuorWCRJZCq5CWoaV9io2DCdD1cvKbAr1CcdBNJ2UODvqxVllLnSw7rZW6D4hdJFjcLAP+ZaoZb1tqpkuS8I5QiF5smuMeLx8uGdM0/C9Pe0EXcsLk7N/YwqO4F6KnPj1TltLqs7O5hXN8BuMsLT90O2EHynq6Z1/ErSaCIszXQJQsYTJr5bJsaRZAkucDnldkX0YocnerNfH0PH+NwB0JT8Q/v9ao2FFDGG+u0fSYQ4fnOsANhNMnwr3hbQjg/S01DZBS6XryiL+MyDWB2vUgNxXQzCUGhwY2Vn9A8J9sfydTDDIQL/RDkDaBe7e4wIMqXvSP9UB/jXV2IZsbzq+QHcXW3SZJ8ueGcwI6krzlsXHZtw7xkUZhrlDHlP0q5nrrm7NZzkduwDFDZ8Pm4vig98+Wj/KDPKcig3b/y/q8XJKTK0D46x+85rS7Ti7157wltUuyqyTgoGnMZuGboU3zRvbbhEWF3PbDTCWbx+4E/YVubzq1MWQjmtglBsc7IHx79+5+D8MNrYb086WUUVIjHfzCoyAHcu99w== lichen@coding.net",
5 "ExpirationDate": "2022-09-09"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "8643a755-559e-604e-6420-fe5cc74e0ec2",
4 "SshKeyInfo": {
5 "Id": 16,
6 "OwnerId": 44,
7 "Title": "Hello",
8 "FingerPrint": "0c:36:f5:60:fd:da:3b:be:22:49:38:96:64:50:49:9f",
9 "CreatedAt": 1634808370882,
10 "ExpirationDate": "2022-09-09",
11 "HasExpired": false
12 }
13 }
14}
获取当前用户 SSH 公钥
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
SshKeyId | 否 | Integer | SSH 公钥 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
SshKeyInfos | Array of SshKeyInfo | 公钥详情集合 |
SshKeyInfo 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 公钥Id |
OwnerId | Integer | 公钥所属者Id |
Title | String | 公钥标题 |
FingerPrint | String | 指纹信息 |
CreatedAt | Long | 创建时间 |
ExpirationDate | String | 过期时间 |
HasExpired | Boolean | 是否过期 |
Example 1
成功示例
1{
2 "Action": "DescribeSshKey",
3 "SshKeyId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "27440043-d529-7e27-3209-ad69157d486e",
4 "SshKeyInfos": [
5 {
6 "Id": 2,
7 "OwnerId": 44,
8 "Title": "Hello",
9 "FingerPrint": "0c:36:f5:60:fd:da:3b:be:22:49:38:96:64:50:49:9f",
10 "CreatedAt": 1634808370000,
11 "ExpirationDate": "2022-09-09",
12 "HasExpired": false
13 }
14 ]
15 }
16}
删除当前用户的 SSH 公钥
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
SshKeyId | 是 | Integer | SSH 公钥 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Example 1
成功示例
1{
2 "Action": "DeleteSshKey",
3 "SshKeyId": 15
4}
成功示例
1{
2 "Response": {
3 "RequestId": "ef532935-ca07-87c8-3ebd-9d89b7aae330"
4 }
5}
为团队成员添加 SSH 公钥
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Title | 是 | String | key 标题 |
Content | 是 | String | 公钥内容 |
ExpirationDate | 否 | String | 过期时间,不填为永不过期 9999-12-31 |
MemberUserId | 是 | Integer | 成员 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
SshKeyInfo | SshKeyInfo | SSH 公钥信息 |
SshKeyInfo 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 公钥Id |
OwnerId | Integer | 公钥所属者Id |
Title | String | 公钥标题 |
FingerPrint | String | 指纹信息 |
CreatedAt | Long | 创建时间 |
ExpirationDate | String | 过期时间 |
HasExpired | Boolean | 是否过期 |
Example 1
成功示例
1{
2 "Action": "CreateMemberSshKey",
3 "Title": "create a ssh key for member",
4 "Content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDdNcUV5lLNsPHsHhfEut18aMBEJ4ifzMJ0utoxDOPqgDyh7nhEzGKYQooORN/F8u1WJ4P7Jcn5H7kgkiYn18qlg69p3ZslKw3UmBtY7CEryvZmcwZi/mKlVXHJN4hLvdiPxVEfMNjM4IZM/UMxCd3m4bSBybz4K1p/IiXca1foQkJrdZoOcfXhTMpjRjL2FMf2lYnLXA71DbgVYR3ACQZGTZQ4A6gPjQ1hvfklGpKTdAwgcegKTdqka3Yiv7GG0ekZWGuHAo/ddY+Nhlz8/UNoRSzYBLkhDRYkuhZrIi2a8/wI1BWpmPuCM8cmum0EuPONrxW0criY3wrl5i+JbZqn8N/tFU0GbxQrIk8ID2+Az/T6VEsTzqWPVm4hjHyCJXgBye9BA3YH1nYPAWy1yf6tzwj53ibLmhrxleUHZmJGtiEFtH4bvdIIBEGhIMiSK9tWb3jH/Ncq+FGTYeK871hKZBYjHJzcDRjGyGLvDuPe4uMDGDEQoeQZGOHkPtdKz3QoDKr78yPH1auadq/c1kmH98r3M4yebPdiuYndbQYZEqcbJDeWB/mPNQQxmARpjpqhUXctyMmj580MQPqxvHgxmmJFIp5vf8qALFRF/koN4sVcZxGHa0bjjhjmGmilL8GphqV3qSdn8dHgwHQ97Oi1I5M5qCxUcLcIN7uWYmMwvQ== your.email@example.com",
5 "ExpirationDate": "2025-12-31",
6 "MemberUserId": 2
7}
成功示例
1{
2 "Response": {
3 "RequestId": "7197fc1a-7493-0756-8da5-123fc3e80b65",
4 "SshKeyInfo": {
5 "Id": 2,
6 "OwnerId": 2,
7 "Title": "create a ssh key for member",
8 "FingerPrint": "32:a9:dd:de:4c:3f:df:6f:0a:43:23:48:23:06:d2:31",
9 "CreatedAt": 1642398559986,
10 "ExpirationDate": "2025-12-31",
11 "HasExpired": false
12 }
13 }
14}
查询团队成员的 SSH 公钥列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
MemberUserId | 是 | Integer | 成员 Id |
SshKeyId | 否 | Integer | SSH 公钥 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
SshKeyInfos | Array of [SshKeyInfo] | SSH 公钥信息列表 |
SshKeyInfo 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 公钥Id |
OwnerId | Integer | 公钥所属者Id |
Title | String | 公钥标题 |
FingerPrint | String | 指纹信息 |
CreatedAt | Long | 创建时间 |
ExpirationDate | String | 过期时间 |
HasExpired | Boolean | 是否过期 |
Example 1
成功示例
1{
2 "Action": "DescribeMemberSshKey",
3 "MemberUserId": 2,
4 "SshKeyId": 2
5}
成功示例
1{
2 "Response": {
3 "RequestId": "d16367d7-6377-5361-e16b-c8efe0b463df",
4 "SshKeyInfos": [
5 {
6 "Id": 2,
7 "OwnerId": 2,
8 "Title": "create a ssh key for member",
9 "FingerPrint": "32:a9:dd:de:4c:3f:df:6f:0a:43:23:48:23:06:d2:31",
10 "CreatedAt": 1642398559986,
11 "ExpirationDate": "2025-12-31",
12 "HasExpired": false
13 }
14 ]
15 }
16}
删除团队成员的 SSH 公钥
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
MemberUserId | 是 | Integer | 成员 Id |
SshKeyId | 是 | Integer | SSH 公钥 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteMemberSshKey",
3 "SshKeyId": 2,
4 "MemberUserId": 2
5}
成功示例
1{
2 "Response": {
3 "RequestId": "13c2cc53-88fe-ad64-6253-865d7ccb69ed"
4 }
5}
新建部署公钥
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Title | 是 | String | 部署公钥标题 |
Content | 是 | String | SSH key |
ExpirationDate | 否 | String | 过期时间,不填则为永不过期 |
AllowWrite | 是 | Boolean | 是否授予写入权限 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateGitDeployKey",
3 "DepotId": 2,
4 "Title": "deploy key 1",
5 "Content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDdNcUV5lLNsPHsHhfEut18aMBEJ4ifzMJ0utoxDOPqgDyh7nhEzGKYQooORN/F8u1WJ4P7Jcn5H7kgkiYn18qlg69p3ZslKw3UmBtY7CEryvZmcwZi/mKlVXHJN4hLvdiPxVEfMNjM4IZM/UMxCd3m4bSBybz4K1p/IiXca1foQkJrdZoOcfXhTMpjRjL2FMf2lYnLXA71DbgVYR3ACQZGTZQ4A6gPjQ1hvfklGpKTdAwgcegKTdqka3Yiv7GG0ekZWGuHAo/ddY+Nhlz8/UNoRSzYBLkhDRYkuhZrIi2a8/wI1BWpmPuCM8cmum0EuPONrxW0criY3wrl5i+JbZqn8N/tFU0GbxQrIk8ID2+Az/T6VEsTzqWPVm4hjHyCJXgBye9BA3YH1nYPAWy1yf6tzwj53ibLmhrxleUHZmJGtiEFtH4bvdIIBEGhIMiSK9tWb3jH/Ncq+FGTYeK871hKZBYjHJzcDRjGyGLvDuPe4uMDGDEQoeQZGOHkPtdKz3QoDKr78yPH1auadq/c1kmH98r3M4yebPdiuYndbQYZEqcbJDeWB/mPNQQxmARpjpqhUXctyMmj580MQPqxvHgxmmJFIp5vf8qALFRF/koN4sVcZxGHa0bjjhjmGmilL8GphqV3qSdn8dHgwHQ97Oi1I5M5qCxUcLcIN7uWYmMwvQ== your.email@example.com",
6 "ExpirationDate": "2022-12-12",
7 "AllowWrite": true
8}
成功示例
1{
2 "Response": {
3 "RequestId": "39a5e264-2bdf-5840-37b1-e9587ea0ff17"
4 }
5}
查询某仓库下的部署公钥列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Keys | Array of [DeployKeyInfo] | 部署公钥列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
DeployKeyInfo 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
KeyId | Integer | SSH Key Id |
DepotId | Integer | 仓库 Id |
OwnerName | String | 所属者名字 |
Title | String | key 标题 |
FingerPrint | String | key 指纹 |
CreatedAt | Integer | 创建时间 |
ExpirationDate | String | 过期时间 |
HasExpired | Boolean | 是否过期 |
AllowWrite | Boolean | 是否授予写入权限 |
Example 1
成功示例
1{
2 "Action": "DescribeGitDepotDeployKeys",
3 "DepotId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "2b2cfdd3-e569-bf07-4281-33c37c428270",
4 "Keys": [
5 {
6 "KeyId": 1,
7 "DepotId": 2,
8 "OwnerName": "coding",
9 "Title": "deploy key 1",
10 "FingerPrint": "a2:db:f8:eb:56:90:b0:b6:d9:96:0d:99:0c:ba:1a:c5",
11 "CreatedAt": 1642143691000,
12 "ExpirationDate": "2022-12-12",
13 "HasExpired": false,
14 "AllowWrite": true
15 }
16 ]
17 }
18}
查询某项目下的部署公钥列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
ProjectId | 是 | Integer | 项目 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Keys | Array of [DeployKeyInfo] | 部署公钥列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
DeployKeyInfo 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
KeyId | Integer | SSH Key Id |
DepotId | Integer | 仓库 Id |
OwnerName | String | 所属者名字 |
Title | String | key 标题 |
FingerPrint | String | key 指纹 |
CreatedAt | Integer | 创建时间 |
ExpirationDate | String | 过期时间 |
HasExpired | Boolean | 是否过期 |
AllowWrite | Boolean | 是否授予写入权限 |
Example 1
成功示例
1{
2 "Action": "DescribeGitProjectDeployKeys",
3 "ProjectId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "2b2cfdd3-e569-bf07-4281-33c37c428270",
4 "Keys": [
5 {
6 "KeyId": 1,
7 "DepotId": 2,
8 "OwnerName": "coding",
9 "Title": "deploy key 1",
10 "FingerPrint": "a2:db:f8:eb:56:90:b0:b6:d9:96:0d:99:0c:ba:1a:c5",
11 "CreatedAt": 1642143691000,
12 "ExpirationDate": "2022-12-12",
13 "HasExpired": false,
14 "AllowWrite": true
15 }
16 ]
17 }
18}
删除部署公钥
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
DeployKeyId | 是 | Integer | SSH Key Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteGitDeployKey",
3 "DepotId": 1,
4 "DeployKeyId": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "5649c350-f27a-a84a-3cff-f76c36f03280"
4 }
5}
查询 Git Blob 信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BlobSha | 是 | String | blob Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | BlobDetail | blob信息 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
BlobDetail 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
BlobSha | String | blob Id |
Size | Integer | blob 大小(字节) |
Encoding | String | 编码方式 base64 |
Content | String | blob base64 编码后的内容 |
Example 1
成功示例
1{
2 "Action": "DescribeGitBlob",
3 "DepotId": 2,
4 "BlobSha": "a7954ee405100719a59c1e03f4ac98ce92a2a257"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "acba0c73-8dc2-c30d-7753-eac38d9b6bf6",
4 "Data": {
5 "BlobSha": "a7954ee405100719a59c1e03f4ac98ce92a2a257",
6 "Size": 469,
7 "Encoding": "base64",
8 "Content": "bmFtZTogZXh0ZW5kZWRfdGV4dApkZXNjcmlwdGlvbjogRXh0ZW5kZWQgb2ZmaWNpYWwgdGV4dCB0byBidWlsZCBzcGVjaWFsIHRleHQgbGlrZSBpbmxpbmUgaW1hZ2Ugb3IgQHNvbWVib2R5IHF1aWNrbHksaXQgYWxzbyBzdXBwb3J0IGN1c3RvbSBiYWNrZ3JvdW5kLGN1c3RvbSBvdmVyIGZsb3cgYW5kIGN1c3RvbSBzZWxlY3Rpb24gdG9vbGJhciBhbmQgaGFuZGxlcy4KdmVyc2lvbjogNS4wLjQKaG9tZXBhZ2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyY2FuZGllcy9leHRlbmRlZF90ZXh0CgplbnZpcm9ubWVudDoKICBzZGs6ICc+PTIuMTIuMCA8My4wLjAnCiAgZmx1dHRlcjogIj49Mi4wLjAiCgpkZXBlbmRlbmNpZXM6CiAgZXh0ZW5kZWRfdGV4dF9saWJyYXJ5OiBeNS4wLjAKICBmbHV0dGVyOgogICAgc2RrOiBmbHV0dGVyCgpkZXZfZGVwZW5kZW5jaWVzOgogIGZsdXR0ZXJfdGVzdDoKICAgIHNkazogZmx1dHRlcg=="
9 }
10 }
11}
查询 Git Blob raw 信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BlobSha | 是 | String | blob Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Content | String | blob 文本内容 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeGitBlobRaw",
3 "DepotId": 2,
4 "BlobSha": "a7954ee405100719a59c1e03f4ac98ce92a2a257"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "5649c350-f27a-a84a-3cff-f76c36f03280",
4 "Content": "name: extended_text\ndescription: Extended official text to build special text like inline image or @somebody quickly,it also support custom background,custom over flow and custom selection toolbar and handles.\nversion: 5.0.4\nhomepage: https://github.com/fluttercandies/extended_text\n\nenvironment:\n sdk: '>=2.12.0 <3.0.0'\n flutter: \">=2.0.0\"\n\ndependencies:\n extended_text_library: ^5.0.0\n flutter:\n sdk: flutter\n\ndev_dependencies:\n flutter_test:\n sdk: flutter"
5 }
6}
查询 git 仓库的贡献者
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Ref | 否 | String | 分支或标签名,默认 HEAD |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Contributors | Array of [Contributor] | 贡献者列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Contributor 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
String | 邮箱 | |
Name | String | 名字 |
Commits | Integer | 提交次数 |
Example 1
成功示例
1{
2 "Action": "DescribeGitContributors",
3 "DepotId": 2,
4 "Ref": "dev"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "dd604373-7f1b-56c6-54e6-c3653eaee11b",
4 "Contributors": [
5 {
6 "Email": "coding@coding.com",
7 "Name": "coding",
8 "Commits": 1
9 }
10 ]
11 }
12}
查询仓库tree信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Ref | 是 | String | 分支名 |
Path | 否 | String | 文件夹路径 |
IsRecursive | 是 | Boolean | 是否递归查找 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Trees | Array of [GitTree] | tree信息列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
GitTree 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Mode | String | 文件/文件夹权限 |
Type | String | 类型 tree/blob |
Sha | String | tree/blob 的 Sha |
Path | String | 路径 |
Example 1
成功示例
1{
2 "Action": "DescribeGitTree",
3 "DepotId": 2,
4 "Ref": "master",
5 "Path": "test",
6 "IsRecursive": true
7}
成功示例
1{
2 "Response": {
3 "RequestId": "d8cec7e5-8a0e-f384-d6a8-d5fbc9c2588c",
4 "Trees": [
5 {
6 "Mode": "040000",
7 "Type": "tree",
8 "Sha": "596ffc7d3af398763e14b173afbffaed901a2a3b",
9 "Path": "test"
10 },
11 {
12 "Mode": "100644",
13 "Type": "blob",
14 "Sha": "bd46e3bdf1831e81e99505e6603cff75c2297465",
15 "Path": "test/main_test.dart"
16 }
17 ]
18 }
19}
仓库转移至同团队下的其他项目中
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
TargetProjectId | 是 | Integer | 项目 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
NewDepotPath | String | 转移后 web 页面的访问路径 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
⚠️ 当前该 openapi 接口仅支持迁移 git 代码仓库中的代码,暂不支持迁移代码版本及合并请求记录。
Example 1
成功示例
1{
2 "Action": "ModifyGitTransfer",
3 "DepotId": 1,
4 "TargetProjectId": 2
5}
成功示例
1{
2 "Response": {
3 "RequestId": "ad93218b-244b-6055-e073-17df43663f9e",
4 "NewDepotPath": "/p/project-e/d/ttt/git"
5 }
6}
在仓库中删除文件
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
CommitMessage | 是 | String | 提交信息 |
Ref | 是 | String | 分支名 |
Paths | 是 | Array of [String] | 欲删除文件的路径列表 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteGitFiles",
3 "DepotId": 2,
4 "CommitMessage": "delete file test/test.dart",
5 "Ref": "master",
6 "Paths": [
7 "test/test.dart"
8 ]
9}
成功示例
1{
2 "Response": {
3 "RequestId": "b81757db-42dc-98f9-0f01-9d7c1abe0f50"
4 }
5}
仓库归档
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyGitDepotArchive",
3 "DepotId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "0f569eca-7575-e6fe-d02a-8d67d8c8b6be"
4 }
5}
仓库解除归档
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyGitDepotUnarchive",
3 "DepotId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "87b9311d-23fc-9f49-e16d-fa890f613ebb"
4 }
5}
创建 git 提交
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
LastCommitSha | 否 | String | 最后一次提交的 Sha 值 |
Ref | 否 | String | 源分支名 |
NewRef | 否 | String | 新建分支的名字 |
Message | 是 | String | 提交信息 |
CommitFiles | 是 | CommitFile[] | 文件列表| |
CommitFile 详情
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Path | 是 | String | 文件路径 |
NewPath | 否 | String | 文件重命名时新名字的路径 |
Content | 是 | String | 文件内容 |
ContentEncoding | 是 | String | 文件内容编码方式:ENCODING_RAW(不进行编码)、ENCODING_BASE64(base64 编码) |
WantDelete | 是 | String | 文件是否删除 |
WantRename | 是 | CommitFile[] | 文件是否重命名| |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitCommit | GitCommit | 提交详情 |
GitCommit 详情
参数名称 | 类型 | 描述 |
---|---|---|
ShortMessage | GitCommit | 提交简要信息 |
Sha | GitCommit | 提交 Sha 值 |
CommitDate | Integer | 提交时间 |
Committer | Committer | 提交者信息 |
Example 1
成功示例
1{
2 "Action": "CreateGitCommit",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "LastCommitSha": "",
5 "Message": "first commit",
6 "Ref": "HEAD",
7 "NewRef": "",
8 "CommitFiles": [
9 {
10 "Path": "pp.js",
11 "NewPath": "",
12 "Content": "Hello\n",
13 "WantDelete": false,
14 "WantRename": false
15 }
16 ]
17}
成功示例
1{
2 "Response": {
3 "RequestId": "76214af5-11a2-42a1-b95c-c8ff28a10656",
4 "GitCommit": {
5 "ShortMessage": "first commit\n",
6 "Sha": "bb15136ff66c718743daa1a0e13c082a4a54e63b",
7 "CommitDate": 1664266958000,
8 "Committer": {
9 "Email": "coding@coding.com",
10 "Name": "coding"
11 }
12 }
13 }
14}
查询仓库文件推送规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitFilePushRule | GitFilePushRule[] | 文件推送规则列表 |
GitFilePushRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
FilePushRuleId | Integer | 文件推送规则 ID |
IsDenyForAllUser | Boolean | 拒绝所有人推送 |
Pattern | String | 文件路径 |
Privileges | GitFilePushRulePrivilege[] | 特权者列表 |
GitFilePushRulePrivilege 详情
参数名称 | 类型 | 描述 |
---|---|---|
IsDeny | Boolean | 拒绝推送文件 |
IsUser | Boolean | 特权者是用户 |
IsRole | Boolean | 特权者是角色 |
User | GitFilePushRuleUser | 用户信息 |
Role | GitFilePushRuleRole | 角色信息 |
GitFilePushRuleUser 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 用户名 |
GlobalKey | String | 用户全局 key |
Avatar | String | 头像路径 |
GitFilePushRuleRole 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 角色名字 |
RoleId | Integer | 角色 ID |
Example 1
成功示例
1{
2 "Action": "DescribeDepotFilePushRules",
3 "DepotPath": "codingcorp/project-d/depot-1"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "c2805697-49fd-41cd-99db-e698388706ec",
4 "GitFilePushRule": [
5 {
6 "FilePushRuleId": 5,
7 "IsDenyForAllUser": false,
8 "Pattern": "*.js",
9 "Privileges": [
10 {
11 "IsDeny": true,
12 "IsUser": false,
13 "IsRole": true,
14 "User": {
15 "Name": "",
16 "GlobalKey": "",
17 "Avatar": ""
18 },
19 "Role": {
20 "Name": "项目管理员",
21 "RoleId": 4
22 }
23 },
24 {
25 "IsDeny": true,
26 "IsUser": true,
27 "IsRole": false,
28 "User": {
29 "Name": "coding",
30 "GlobalKey": "coding-coding",
31 "Avatar": "/static/fruit_avatar/Fruit-20.png"
32 },
33 "Role": {
34 "Name": "",
35 "RoleId": 0
36 }
37 }
38 ]
39 }
40 ]
41 }
42}
新增 git 仓库文件推送规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
Pattern | 是 | String | 文件路径 |
IsDenyForAllUser | 是 | Boolean | 拒绝所有人推送 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitFilePushRule | GitFilePushRule[] | 文件推送规则列表 |
GitFilePushRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
FilePushRuleId | Integer | 文件推送规则 ID |
IsDenyForAllUser | Boolean | 拒绝所有人推送 |
Pattern | String | 文件路径 |
Privileges | GitFilePushRulePrivilege[] | 特权者列表 |
GitFilePushRulePrivilege 详情
参数名称 | 类型 | 描述 |
---|---|---|
IsDeny | Boolean | 拒绝推送文件 |
IsUser | Boolean | 特权者是用户 |
IsRole | Boolean | 特权者是角色 |
User | GitFilePushRuleUser | 用户信息 |
Role | GitFilePushRuleRole | 角色信息 |
GitFilePushRuleUser 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 用户名 |
GlobalKey | String | 用户全局 key |
Avatar | String | 头像路径 |
GitFilePushRuleRole 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 角色名字 |
RoleId | Integer | 角色 ID |
Example 1
成功示例
1{
2 "Action": "CreateDepotFilePushRule",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "Pattern": "*.js",
5 "IsDenyForAllUser": true
6}
成功示例
1{
2 "Response": {
3 "RequestId": "c2805697-49fd-41cd-99db-e698388706ec",
4 "GitFilePushRule": [
5 {
6 "FilePushRuleId": 5,
7 "IsDenyForAllUser": false,
8 "Pattern": "*.js",
9 "Privileges": [
10 {
11 "IsDeny": true,
12 "IsUser": false,
13 "IsRole": true,
14 "User": {
15 "Name": "",
16 "GlobalKey": "",
17 "Avatar": ""
18 },
19 "Role": {
20 "Name": "项目管理员",
21 "RoleId": 4
22 }
23 },
24 {
25 "IsDeny": true,
26 "IsUser": true,
27 "IsRole": false,
28 "User": {
29 "Name": "coding",
30 "GlobalKey": "coding-coding",
31 "Avatar": "/static/fruit_avatar/Fruit-20.png"
32 },
33 "Role": {
34 "Name": "",
35 "RoleId": 0
36 }
37 }
38 ]
39 }
40 ]
41 }
42}
修改 git 仓库文件推送规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
FilePushRuleId | 是 | Integer | 文件推送规则 ID |
IsDenyForAllUser | 是 | Boolean | 拒绝所有人推送 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitFilePushRule | GitFilePushRule[] | 文件推送规则列表 |
GitFilePushRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
FilePushRuleId | Integer | 文件推送规则 ID |
IsDenyForAllUser | Boolean | 拒绝所有人推送 |
Pattern | String | 文件路径 |
Privileges | GitFilePushRulePrivilege[] | 特权者列表 |
GitFilePushRulePrivilege 详情
参数名称 | 类型 | 描述 |
---|---|---|
IsDeny | Boolean | 拒绝推送文件 |
IsUser | Boolean | 特权者是用户 |
IsRole | Boolean | 特权者是角色 |
User | GitFilePushRuleUser | 用户信息 |
Role | GitFilePushRuleRole | 角色信息 |
GitFilePushRuleUser 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 用户名 |
GlobalKey | String | 用户全局 key |
Avatar | String | 头像路径 |
GitFilePushRuleRole 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 角色名字 |
RoleId | Integer | 角色 ID |
Example 1
成功示例
1{
2 "Action": "ModifyDepotFilePushRule",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "FilePushRuleId": 5,
5 "IsDenyForAllUser": false
6}
成功示例
1{
2 "Response": {
3 "RequestId": "c2805697-49fd-41cd-99db-e698388706ec",
4 "GitFilePushRule": [
5 {
6 "FilePushRuleId": 5,
7 "IsDenyForAllUser": false,
8 "Pattern": "*.js",
9 "Privileges": [
10 {
11 "IsDeny": true,
12 "IsUser": false,
13 "IsRole": true,
14 "User": {
15 "Name": "",
16 "GlobalKey": "",
17 "Avatar": ""
18 },
19 "Role": {
20 "Name": "项目管理员",
21 "RoleId": 4
22 }
23 },
24 {
25 "IsDeny": true,
26 "IsUser": true,
27 "IsRole": false,
28 "User": {
29 "Name": "coding",
30 "GlobalKey": "coding-coding",
31 "Avatar": "/static/fruit_avatar/Fruit-20.png"
32 },
33 "Role": {
34 "Name": "",
35 "RoleId": 0
36 }
37 }
38 ]
39 }
40 ]
41 }
42}
删除 git 仓库文件推送规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
FilePushRuleId | 是 | Integer | 文件推送规则 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitFilePushRule | GitFilePushRule[] | 文件推送规则列表 |
GitFilePushRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
FilePushRuleId | Integer | 文件推送规则 ID |
IsDenyForAllUser | Boolean | 拒绝所有人推送 |
Pattern | String | 文件路径 |
Privileges | GitFilePushRulePrivilege[] | 特权者列表 |
GitFilePushRulePrivilege 详情
参数名称 | 类型 | 描述 |
---|---|---|
IsDeny | Boolean | 拒绝推送文件 |
IsUser | Boolean | 特权者是用户 |
IsRole | Boolean | 特权者是角色 |
User | GitFilePushRuleUser | 用户信息 |
Role | GitFilePushRuleRole | 角色信息 |
GitFilePushRuleUser 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 用户名 |
GlobalKey | String | 用户全局 key |
Avatar | String | 头像路径 |
GitFilePushRuleRole 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 角色名字 |
RoleId | Integer | 角色 ID |
Example 1
成功示例
1{
2 "Action": "DeleteDepotFilePushRule",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "FilePushRuleId": 4
5}
成功示例
1{
2 "Response": {
3 "RequestId": "c2805697-49fd-41cd-99db-e698388706ec",
4 "GitFilePushRule": [
5 {
6 "FilePushRuleId": 5,
7 "IsDenyForAllUser": false,
8 "Pattern": "*.js",
9 "Privileges": [
10 {
11 "IsDeny": true,
12 "IsUser": false,
13 "IsRole": true,
14 "User": {
15 "Name": "",
16 "GlobalKey": "",
17 "Avatar": ""
18 },
19 "Role": {
20 "Name": "项目管理员",
21 "RoleId": 4
22 }
23 },
24 {
25 "IsDeny": true,
26 "IsUser": true,
27 "IsRole": false,
28 "User": {
29 "Name": "coding",
30 "GlobalKey": "coding-coding",
31 "Avatar": "/static/fruit_avatar/Fruit-20.png"
32 },
33 "Role": {
34 "Name": "",
35 "RoleId": 0
36 }
37 }
38 ]
39 }
40 ]
41 }
42}
新增 git 仓库文件推送规则特权者
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
FilePushRuleId | 是 | Integer | 文件推送规则 ID |
IsDeny | 是 | Boolean | 拒绝推送 |
IsUser | 否 | Boolean | 特权者是用户(IsUser和IsRole二选一,且有且只能有一个为true) |
IsRole | 否 | Boolean | 特权者是角色(IsUser和IsRole二选一,且有且只能有一个为true) |
UserGlobalKey | 否 | String | 用户全局 key |
RoleId | 否 | Integer | 角色 ID (IsRole为 true 时必填) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitFilePushRule | GitFilePushRule[] | 文件推送规则列表 |
GitFilePushRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
FilePushRuleId | Integer | 文件推送规则 ID |
IsDenyForAllUser | Boolean | 拒绝所有人推送 |
Pattern | String | 文件路径 |
Privileges | GitFilePushRulePrivilege[] | 特权者列表 |
GitFilePushRulePrivilege 详情
参数名称 | 类型 | 描述 |
---|---|---|
IsDeny | Boolean | 拒绝推送文件 |
IsUser | Boolean | 特权者是用户 |
IsRole | Boolean | 特权者是角色 |
User | GitFilePushRuleUser | 用户信息 |
Role | GitFilePushRuleRole | 角色信息 |
GitFilePushRuleUser 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 用户名 |
GlobalKey | String | 用户全局 key |
Avatar | String | 头像路径 |
GitFilePushRuleRole 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 角色名字 |
RoleId | Integer | 角色 ID |
Example 1
成功示例
1{
2 "Action": "CreateDepotFilePushRulePrivilege",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "FilePushRuleId": 5,
5 "IsDeny": true,
6 "IsUser": true,
7 "IsRole": false,
8 "UserGlobalKey": "coding-coding"
9}
成功示例
1{
2 "Action": "CreateDepotFilePushRulePrivilege",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "FilePushRuleId": 5,
5 "IsDeny": true,
6 "IsUser": false,
7 "IsRole": true,
8 "RoleId": 4
9}
成功示例
1{
2 "Response": {
3 "RequestId": "c2805697-49fd-41cd-99db-e698388706ec",
4 "GitFilePushRule": [
5 {
6 "FilePushRuleId": 5,
7 "IsDenyForAllUser": false,
8 "Pattern": "*.js",
9 "Privileges": [
10 {
11 "IsDeny": true,
12 "IsUser": false,
13 "IsRole": true,
14 "User": {
15 "Name": "",
16 "GlobalKey": "",
17 "Avatar": ""
18 },
19 "Role": {
20 "Name": "项目管理员",
21 "RoleId": 4
22 }
23 },
24 {
25 "IsDeny": true,
26 "IsUser": true,
27 "IsRole": false,
28 "User": {
29 "Name": "coding",
30 "GlobalKey": "coding-coding",
31 "Avatar": "/static/fruit_avatar/Fruit-20.png"
32 },
33 "Role": {
34 "Name": "",
35 "RoleId": 0
36 }
37 }
38 ]
39 }
40 ]
41 }
42}
修改 git 仓库特权者文件推送权限
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
FilePushRuleId | 是 | Integer | 文件推送规则 ID |
IsDeny | 是 | Boolean | 拒绝推送 |
IsUser | 否 | Boolean | 特权者是用户(IsUser和IsRole二选一,且有且只能有一个为true) |
IsRole | 否 | Boolean | 特权者是角色(IsUser和IsRole二选一,且有且只能有一个为true) |
UserGlobalKey | 否 | String | 用户全局 key |
RoleId | 否 | Integer | 角色 ID(IsRole为 true 时必填) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitFilePushRule | GitFilePushRule[] | 文件推送规则列表 |
GitFilePushRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
FilePushRuleId | Integer | 文件推送规则 ID |
IsDenyForAllUser | Boolean | 拒绝所有人推送 |
Pattern | String | 文件路径 |
Privileges | GitFilePushRulePrivilege[] | 特权者列表 |
GitFilePushRulePrivilege 详情
参数名称 | 类型 | 描述 |
---|---|---|
IsDeny | Boolean | 拒绝推送文件 |
IsUser | Boolean | 特权者是用户 |
IsRole | Boolean | 特权者是角色 |
User | GitFilePushRuleUser | 用户信息 |
Role | GitFilePushRuleRole | 角色信息 |
GitFilePushRuleUser 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 用户名 |
GlobalKey | String | 用户全局 key |
Avatar | String | 头像路径 |
GitFilePushRuleRole 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 角色名字 |
RoleId | Integer | 角色 ID |
Example 1
成功示例
1{
2 "Action": "ModifyDepotFilePushRuleDenyPrivilege",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "FilePushRuleId": 5,
5 "IsDeny": true,
6 "IsUser": true,
7 "IsRole": false,
8 "UserGlobalKey": "coding-coding"
9}
成功示例
1{
2 "Action": "ModifyDepotFilePushRuleDenyPrivilege",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "FilePushRuleId": 5,
5 "IsDeny": true,
6 "IsUser": false,
7 "IsRole": true,
8 "RoleId": 4
9}
成功示例
1{
2 "Response": {
3 "RequestId": "c2805697-49fd-41cd-99db-e698388706ec",
4 "GitFilePushRule": [
5 {
6 "FilePushRuleId": 5,
7 "IsDenyForAllUser": false,
8 "Pattern": "*.js",
9 "Privileges": [
10 {
11 "IsDeny": true,
12 "IsUser": false,
13 "IsRole": true,
14 "User": {
15 "Name": "",
16 "GlobalKey": "",
17 "Avatar": ""
18 },
19 "Role": {
20 "Name": "项目管理员",
21 "RoleId": 4
22 }
23 },
24 {
25 "IsDeny": true,
26 "IsUser": true,
27 "IsRole": false,
28 "User": {
29 "Name": "coding",
30 "GlobalKey": "coding-coding",
31 "Avatar": "/static/fruit_avatar/Fruit-20.png"
32 },
33 "Role": {
34 "Name": "",
35 "RoleId": 0
36 }
37 }
38 ]
39 }
40 ]
41 }
42}
删除 git 仓库特权者文件推送权限
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
FilePushRuleId | 是 | Integer | 文件推送规则 ID |
IsUser | 否 | Boolean | 特权者是用户(IsUser和IsRole二选一,且有且只能有一个为true) |
IsRole | 否 | Boolean | 特权者是角色(IsUser和IsRole二选一,且有且只能有一个为true) |
UserGlobalKey | 否 | String | 用户全局 key |
RoleId | 否 | Integer | 角色 ID (IsRole为 true 时必填) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitFilePushRule | GitFilePushRule[] | 文件推送规则列表 |
GitFilePushRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
FilePushRuleId | Integer | 文件推送规则 ID |
IsDenyForAllUser | Boolean | 拒绝所有人推送 |
Pattern | String | 文件路径 |
Privileges | GitFilePushRulePrivilege[] | 特权者列表 |
GitFilePushRulePrivilege 详情
参数名称 | 类型 | 描述 |
---|---|---|
IsDeny | Boolean | 拒绝推送文件 |
IsUser | Boolean | 特权者是用户 |
IsRole | Boolean | 特权者是角色 |
User | GitFilePushRuleUser | 用户信息 |
Role | GitFilePushRuleRole | 角色信息 |
GitFilePushRuleUser 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 用户名 |
GlobalKey | String | 用户全局 key |
Avatar | String | 头像路径 |
GitFilePushRuleRole 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 角色名字 |
RoleId | Integer | 角色 ID |
Example 1
成功示例
1{
2 "Action": "DeleteDepotFilePushRuleDenyPrivilege",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "FilePushRuleId": 5,
5 "IsUser": true,
6 "IsRole": false,
7 "UserGlobalKey": "coding-coding"
8}
成功示例
1{
2 "Action": "DeleteDepotFilePushRuleDenyPrivilege",
3 "DepotPath": "codingcorp/project-d/depot-1",
4 "FilePushRuleId": 5,
5 "IsUser": false,
6 "IsRole": true,
7 "RoleId": 4
8}
成功示例
1{
2 "Response": {
3 "RequestId": "c2805697-49fd-41cd-99db-e698388706ec",
4 "GitFilePushRule": [
5 {
6 "FilePushRuleId": 5,
7 "IsDenyForAllUser": false,
8 "Pattern": "*.js",
9 "Privileges": [
10 {
11 "IsDeny": true,
12 "IsUser": false,
13 "IsRole": true,
14 "User": {
15 "Name": "",
16 "GlobalKey": "",
17 "Avatar": ""
18 },
19 "Role": {
20 "Name": "项目管理员",
21 "RoleId": 4
22 }
23 },
24 {
25 "IsDeny": true,
26 "IsUser": true,
27 "IsRole": false,
28 "User": {
29 "Name": "coding",
30 "GlobalKey": "coding-coding",
31 "Avatar": "/static/fruit_avatar/Fruit-20.png"
32 },
33 "Role": {
34 "Name": "",
35 "RoleId": 0
36 }
37 }
38 ]
39 }
40 ]
41 }
42}
查询仓库规范列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
DepotSpecs | DepotSpec[] | 仓库规范列表 |
DepotSpec 详情
参数名称 | 类型 | 描述 |
---|---|---|
Type | String | 仓库规范类型 system:系统级别,team:团队级别 |
Name | String | 仓库规范名字 |
Description | String | 仓库规范描述信息 |
Example 1
成功示例
1{
2 "Action": "DescribeDepotSpecs"
3}
成功示例
1{
2 "Response": {
3 "RequestId": "719f32c7-4b52-4836-9b0c-12122f19bde3",
4 "DepotSpecs": [
5 {
6 "Type": "system",
7 "Name": "单分支规范",
8 "Description": "支持 master 分支"
9 },
10 {
11 "Type": "system",
12 "Name": "功能分支规范",
13 "Description": "支持 master、feature/* 分支"
14 },
15 {
16 "Type": "system",
17 "Name": "Gitflow 分支规范",
18 "Description": "支持 master、develop、feature/*、 release/*、hotfix/* 分支"
19 },
20 {
21 "Type": "system",
22 "Name": "GitLab 分支规范",
23 "Description": "支持 master、feature/*、 *-stable、environment/* 分支"
24 }
25 ]
26 }
27}
查询仓库规范详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotSpecName | 否 | String | 仓库规范名字(和仓库路径二选一选填) |
DepotPath | 否 | String | 仓库路径(和仓库规范名字二选一选填) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Detail | DepotSpecDetail | 仓库规范详细信息 |
DepotSpecDetail 详情
参数名称 | 类型 | 描述 |
---|---|---|
Type | String | system:系统级别的规范;team:团队级别的规范 |
Name | String | 仓库规范名字 |
Description | String | 仓库规范描述信息 |
UseExistingSolution | Boolean | 使用的是系统/团队级别的仓库规范(这个字段只在使用仓库路径查询时有用) |
AllowPushWildRef | Boolean | 允许创建规定分支类型以外的分支 |
DepotBranchTypeList | DepotBranchType[] | 分支类型列表 |
DepotMergeRequestRuleList | DepotMergeRequestRule[] | 合并方向规则列表 |
DepotBranchType 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 分支类型名字 |
Rule | String | 分支类型规则 |
Description | String | 分支类型描述信息 |
DepotMergeRequestRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
SourceBranchTypeName | String | 源分支类型名字 |
SourceBranchTypeRule | String | 源分支类型规则 |
TargetBranchTypeName | String | 目标分支类型名字 |
TargetBranchTypeRule | String | 目标分支类型规则 |
Example 1
成功示例
1{
2 "Action": "DescribeDepotSpecDetail",
3 "DepotSpecName": "GitLab 分支规范",
4 "DepotPath": "team-name/project-name/depot-name"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "a0b22a96-62b6-4859-8a86-fa88445fac74",
4 "Detail": {
5 "Type": "system",
6 "Name": "Gitflow 分支规范",
7 "Description": "支持 master、develop、feature/*、 release/*、hotfix/* 分支",
8 "AllowPushWildRef": false,
9 "UseExistingSolution": false,
10 "DepotBranchTypeList": [
11 {
12 "Name": "主干分支",
13 "Rule": "",
14 "Description": "与仓库设置 > 分支设置中的默认分支保持一致。"
15 },
16 {
17 "Name": "开发分支",
18 "Rule": "develop",
19 "Description": "平时开发用的主分支,永远是功能最全最新"
20 },
21 {
22 "Name": "功能分支",
23 "Rule": "feature/*",
24 "Description": "一般一个事项卡对应一个功能分支"
25 },
26 {
27 "Name": "发布分支",
28 "Rule": "release/*",
29 "Description": "一般一次新版本的发布对应一个发布分支"
30 },
31 {
32 "Name": "热修复分支",
33 "Rule": "hotfix/*",
34 "Description": "从主干分支拉出,用于线上版本的 Bug 修复"
35 }
36 ],
37 "DepotMergeRequestRuleList": [
38 {
39 "SourceBranchTypeName": "发布分支",
40 "SourceBranchTypeRule": "release/*",
41 "TargetBranchTypeName": "主干分支",
42 "TargetBranchTypeRule": ""
43 },
44 {
45 "SourceBranchTypeName": "热修复分支",
46 "SourceBranchTypeRule": "hotfix/*",
47 "TargetBranchTypeName": "主干分支",
48 "TargetBranchTypeRule": ""
49 },
50 {
51 "SourceBranchTypeName": "功能分支",
52 "SourceBranchTypeRule": "feature/*",
53 "TargetBranchTypeName": "开发分支",
54 "TargetBranchTypeRule": "develop"
55 },
56 {
57 "SourceBranchTypeName": "发布分支",
58 "SourceBranchTypeRule": "release/*",
59 "TargetBranchTypeName": "开发分支",
60 "TargetBranchTypeRule": "develop"
61 },
62 {
63 "SourceBranchTypeName": "热修复分支",
64 "SourceBranchTypeRule": "hotfix/*",
65 "TargetBranchTypeName": "开发分支",
66 "TargetBranchTypeRule": "develop"
67 }
68 ]
69 }
70 }
71}
修改、新增团队级别的仓库规范
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Param | 是 | DepotSpecTeamLevelParam | 修改、新增团队级别的仓库规范参数 |
DepotSpecTeamLevelParam 参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Name | 是 | String | 规范的名字唯一,当名字是已有规范的名字时,为修改;当名字不是已有规范名字时为新增 |
AllowPushWildRef | 是 | Boolean | 允许创建规定分支类型以外的分支 |
ReName | 否 | String | 当需要修改已有规范的名字时,需要填写新名字 |
Description | 否 | String | 仓库规范描述 |
DepotBranchTypeList | 否 | DepotBranchTypeParam[] | 分支类型列表 |
DepotMergeRequestRuleList | 否 | DepotMergeRequestRuleParam[] | 合并方向规则列表 |
DepotBranchTypeParam 参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Name | 是 | String | 分支类型名字 |
Rule | 是 | Boolean | 分支类型规则 |
Description | 否 | String | 分支类型描述信息 |
DepotMergeRequestRuleParam 参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
SourceBranchTypeName | 是 | String | 源分支类型名称 |
TargetBranchTypeName | 是 | String | 目标分支类型名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Detail | DepotSpecDetail | 仓库规范详细信息 |
DepotSpecDetail 详情
参数名称 | 类型 | 描述 |
---|---|---|
Type | String | system:系统级别的规范;team:团队级别的规范 |
Name | String | 仓库规范名字 |
Description | String | 仓库规范描述信息 |
UseExistingSolution | Boolean | 使用的是系统/团队级别的仓库规范(这个字段只在使用仓库路径查询时有用) |
AllowPushWildRef | Boolean | 允许创建规定分支类型以外的分支 |
DepotBranchTypeList | DepotBranchType[] | 分支类型列表 |
DepotMergeRequestRuleList | DepotMergeRequestRule[] | 合并方向规则列表 |
DepotBranchType 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 分支类型名字 |
Rule | String | 分支类型规则 |
Description | String | 分支类型描述信息 |
DepotMergeRequestRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
SourceBranchTypeName | String | 源分支类型名字 |
SourceBranchTypeRule | String | 源分支类型规则 |
TargetBranchTypeName | String | 目标分支类型名字 |
TargetBranchTypeRule | String | 目标分支类型规则 |
Example 1
成功示例
1{
2 "Action": "ModifyTeamLevelDepotSpec",
3 "Param": {
4 "Name": "spec-name",
5 "ReName": "",
6 "Description": "this is a description of depot spec",
7 "AllowPushWildRef": true,
8 "DepotBranchTypeList": [
9 {
10 "Name": "开发分支",
11 "Rule": "dev/*",
12 "Description": "这是一个开发分支"
13 },
14 {
15 "Name": "版本分支",
16 "Rule": "rel/*",
17 "Description": "这是一个版本分支"
18 }
19 ],
20 "DepotMergeRequestRuleList": [
21 {
22 "SourceBranchTypeName": "版本分支",
23 "TargetBranchTypeName": "开发分支"
24 }
25 ]
26 }
27}
成功示例
1{
2 "Response": {
3 "RequestId": "5a344837-42e6-4907-877d-feec15db9a56",
4 "Detail": {
5 "Type": "system",
6 "Name": "Gitflow 分支规范",
7 "Description": "支持 master、develop、feature/*、 release/*、hotfix/* 分支",
8 "AllowPushWildRef": false,
9 "UseExistingSolution": false,
10 "DepotBranchTypeList": [
11 {
12 "Name": "主干分支",
13 "Rule": "",
14 "Description": "与仓库设置 > 分支设置中的默认分支保持一致。"
15 },
16 {
17 "Name": "开发分支",
18 "Rule": "develop",
19 "Description": "平时开发用的主分支,永远是功能最全最新"
20 },
21 {
22 "Name": "功能分支",
23 "Rule": "feature/*",
24 "Description": "一般一个事项卡对应一个功能分支"
25 },
26 {
27 "Name": "发布分支",
28 "Rule": "release/*",
29 "Description": "一般一次新版本的发布对应一个发布分支"
30 },
31 {
32 "Name": "热修复分支",
33 "Rule": "hotfix/*",
34 "Description": "从主干分支拉出,用于线上版本的 Bug 修复"
35 }
36 ],
37 "DepotMergeRequestRuleList": [
38 {
39 "SourceBranchTypeName": "发布分支",
40 "SourceBranchTypeRule": "release/*",
41 "TargetBranchTypeName": "主干分支",
42 "TargetBranchTypeRule": ""
43 },
44 {
45 "SourceBranchTypeName": "热修复分支",
46 "SourceBranchTypeRule": "hotfix/*",
47 "TargetBranchTypeName": "主干分支",
48 "TargetBranchTypeRule": ""
49 },
50 {
51 "SourceBranchTypeName": "功能分支",
52 "SourceBranchTypeRule": "feature/*",
53 "TargetBranchTypeName": "开发分支",
54 "TargetBranchTypeRule": "develop"
55 },
56 {
57 "SourceBranchTypeName": "发布分支",
58 "SourceBranchTypeRule": "release/*",
59 "TargetBranchTypeName": "开发分支",
60 "TargetBranchTypeRule": "develop"
61 },
62 {
63 "SourceBranchTypeName": "热修复分支",
64 "SourceBranchTypeRule": "hotfix/*",
65 "TargetBranchTypeName": "开发分支",
66 "TargetBranchTypeRule": "develop"
67 }
68 ]
69 }
70 }
71}
删除团队级别的分支规范
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotSpecName | 是 | String | 仓库规范名字 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Example 1
成功示例
1{
2 "Action": "DeleteTeamLevelDepotSpec",
3 "DepotSpecName": "depot-spec-name"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "00b6cddb-bd7d-964e-6885-45bbc387bd64"
4 }
5}
使用、取消使用仓库规范
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
DepotSpecName | 是 | String | 选择的仓库规范名字(不使用仓库规范时,填空字符串) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Detail | DepotSpecDetail | 仓库规范详细信息 |
DepotSpecDetail 详情
参数名称 | 类型 | 描述 |
---|---|---|
Type | String | system:系统级别的规范;team:团队级别的规范 |
Name | String | 仓库规范名字 |
Description | String | 仓库规范描述信息 |
UseExistingSolution | Boolean | 使用的是系统/团队级别的仓库规范(这个字段只在使用仓库路径查询时有用) |
AllowPushWildRef | Boolean | 允许创建规定分支类型以外的分支 |
DepotBranchTypeList | DepotBranchType[] | 分支类型列表 |
DepotMergeRequestRuleList | DepotMergeRequestRule[] | 合并方向规则列表 |
DepotBranchType 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 分支类型名字 |
Rule | String | 分支类型规则 |
Description | String | 分支类型描述信息 |
DepotMergeRequestRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
SourceBranchTypeName | String | 源分支类型名字 |
SourceBranchTypeRule | String | 源分支类型规则 |
TargetBranchTypeName | String | 目标分支类型名字 |
TargetBranchTypeRule | String | 目标分支类型规则 |
Example 1
成功示例
1{
2 "Action": "ModifyChooseDepotSpec",
3 "DepotSpecName": "Gitflow 分支规范",
4 "DepotPath": "team-name/project-name/depot-name"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "5a344837-42e6-4907-877d-feec15db9a56",
4 "Detail": {
5 "Type": "system",
6 "Name": "Gitflow 分支规范",
7 "Description": "支持 master、develop、feature/*、 release/*、hotfix/* 分支",
8 "AllowPushWildRef": false,
9 "UseExistingSolution": false,
10 "DepotBranchTypeList": [
11 {
12 "Name": "主干分支",
13 "Rule": "",
14 "Description": "与仓库设置 > 分支设置中的默认分支保持一致。"
15 },
16 {
17 "Name": "开发分支",
18 "Rule": "develop",
19 "Description": "平时开发用的主分支,永远是功能最全最新"
20 },
21 {
22 "Name": "功能分支",
23 "Rule": "feature/*",
24 "Description": "一般一个事项卡对应一个功能分支"
25 },
26 {
27 "Name": "发布分支",
28 "Rule": "release/*",
29 "Description": "一般一次新版本的发布对应一个发布分支"
30 },
31 {
32 "Name": "热修复分支",
33 "Rule": "hotfix/*",
34 "Description": "从主干分支拉出,用于线上版本的 Bug 修复"
35 }
36 ],
37 "DepotMergeRequestRuleList": [
38 {
39 "SourceBranchTypeName": "发布分支",
40 "SourceBranchTypeRule": "release/*",
41 "TargetBranchTypeName": "主干分支",
42 "TargetBranchTypeRule": ""
43 },
44 {
45 "SourceBranchTypeName": "热修复分支",
46 "SourceBranchTypeRule": "hotfix/*",
47 "TargetBranchTypeName": "主干分支",
48 "TargetBranchTypeRule": ""
49 },
50 {
51 "SourceBranchTypeName": "功能分支",
52 "SourceBranchTypeRule": "feature/*",
53 "TargetBranchTypeName": "开发分支",
54 "TargetBranchTypeRule": "develop"
55 },
56 {
57 "SourceBranchTypeName": "发布分支",
58 "SourceBranchTypeRule": "release/*",
59 "TargetBranchTypeName": "开发分支",
60 "TargetBranchTypeRule": "develop"
61 },
62 {
63 "SourceBranchTypeName": "热修复分支",
64 "SourceBranchTypeRule": "hotfix/*",
65 "TargetBranchTypeName": "开发分支",
66 "TargetBranchTypeRule": "develop"
67 }
68 ]
69 }
70 }
71}
修改、新增仓库级别的仓库规范
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
Param | 是 | DepotSpecDepotLevelParam | 修改、新增仓库级别的仓库规范参数 |
DepotSpecDepotLevelParam 参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
AllowPushWildRef | 否 | Boolean | 允许创建规定分支类型以外的分支 |
DepotBranchTypeList | 否 | DepotBranchTypeParam[] | 分支类型列表 |
DepotMergeRequestRuleList | 否 | DepotMergeRequestRuleParam[] | 合并方向规则列表 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Detail | DepotSpecDetail | 仓库规范详细信息 |
DepotSpecDetail 详情
参数名称 | 类型 | 描述 |
---|---|---|
Type | String | system:系统级别的规范;team:团队级别的规范 |
Name | String | 仓库规范名字 |
Description | String | 仓库规范描述信息 |
UseExistingSolution | Boolean | 使用的是系统/团队级别的仓库规范(这个字段只在使用仓库路径查询时有用) |
AllowPushWildRef | Boolean | 允许创建规定分支类型以外的分支 |
DepotBranchTypeList | DepotBranchType[] | 分支类型列表 |
DepotMergeRequestRuleList | DepotMergeRequestRule[] | 合并方向规则列表 |
DepotBranchType 详情
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 分支类型名字 |
Rule | String | 分支类型规则 |
Description | String | 分支类型描述信息 |
DepotMergeRequestRule 详情
参数名称 | 类型 | 描述 |
---|---|---|
SourceBranchTypeName | String | 源分支类型名字 |
SourceBranchTypeRule | String | 源分支类型规则 |
TargetBranchTypeName | String | 目标分支类型名字 |
TargetBranchTypeRule | String | 目标分支类型规则 |
Example 1
成功示例
1{
2 "Action": "ModifyDepotLevelDepotSpec",
3 "DepotPath": "codingcorp/project-d/depot-2",
4 "Param": {
5 "AllowPushWildRef": true,
6 "DepotBranchTypeList": [
7 {
8 "Name": "主干分支",
9 "Rule": "master",
10 "Description": "这是一个主干分支"
11 },
12 {
13 "Name": "开发分支",
14 "Rule": "dev/*",
15 "Description": "这是一个开发分支"
16 },
17 {
18 "Name": "版本分支",
19 "Rule": "rel/*",
20 "Description": "这是一个版本分支"
21 }
22 ],
23 "DepotMergeRequestRuleList": [
24 {
25 "SourceBranchTypeName": "版本分支",
26 "TargetBranchTypeName": "开发分支"
27 }
28 ]
29 }
30}
成功示例
1{
2 "Response": {
3 "RequestId": "5a344837-42e6-4907-877d-feec15db9a56",
4 "Detail": {
5 "Type": "system",
6 "Name": "Gitflow 分支规范",
7 "Description": "支持 master、develop、feature/*、 release/*、hotfix/* 分支",
8 "AllowPushWildRef": false,
9 "UseExistingSolution": false,
10 "DepotBranchTypeList": [
11 {
12 "Name": "主干分支",
13 "Rule": "",
14 "Description": "与仓库设置 > 分支设置中的默认分支保持一致。"
15 },
16 {
17 "Name": "开发分支",
18 "Rule": "develop",
19 "Description": "平时开发用的主分支,永远是功能最全最新"
20 },
21 {
22 "Name": "功能分支",
23 "Rule": "feature/*",
24 "Description": "一般一个事项卡对应一个功能分支"
25 },
26 {
27 "Name": "发布分支",
28 "Rule": "release/*",
29 "Description": "一般一次新版本的发布对应一个发布分支"
30 },
31 {
32 "Name": "热修复分支",
33 "Rule": "hotfix/*",
34 "Description": "从主干分支拉出,用于线上版本的 Bug 修复"
35 }
36 ],
37 "DepotMergeRequestRuleList": [
38 {
39 "SourceBranchTypeName": "发布分支",
40 "SourceBranchTypeRule": "release/*",
41 "TargetBranchTypeName": "主干分支",
42 "TargetBranchTypeRule": ""
43 },
44 {
45 "SourceBranchTypeName": "热修复分支",
46 "SourceBranchTypeRule": "hotfix/*",
47 "TargetBranchTypeName": "主干分支",
48 "TargetBranchTypeRule": ""
49 },
50 {
51 "SourceBranchTypeName": "功能分支",
52 "SourceBranchTypeRule": "feature/*",
53 "TargetBranchTypeName": "开发分支",
54 "TargetBranchTypeRule": "develop"
55 },
56 {
57 "SourceBranchTypeName": "发布分支",
58 "SourceBranchTypeRule": "release/*",
59 "TargetBranchTypeName": "开发分支",
60 "TargetBranchTypeRule": "develop"
61 },
62 {
63 "SourceBranchTypeName": "热修复分支",
64 "SourceBranchTypeRule": "hotfix/*",
65 "TargetBranchTypeName": "开发分支",
66 "TargetBranchTypeRule": "develop"
67 }
68 ]
69 }
70 }
71}
查询仓库推送设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DepotPushSetting | 推送设置信息 |
DepotPushSetting 详情
参数名称 | 类型 | 描述 |
---|---|---|
CheckCommitAuthor | Boolean | 检查 Git 提交的提交者 (Committer) 和提交作者 (Author) 必须是已验证的邮箱 |
DenyForcePush | Boolean | 禁止强制推送 (Force Push) |
PushFileSize | String | 开启单次提交的文件总大小限制,Git LFS 文件除外(单位MB) |
CommitMessageMustMatchRegex | String | Git 提交信息的格式校验 |
PushDenyFile | String | 禁止推送的文件(文件类型用换行符隔开) |
Example 1
成功示例
1{
2 "Action": "DescribeDepotPushSetting",
3 "DepotPath": "codingcorp/project-d/depot-2"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "70095d4a-8716-486b-b279-a778722060a8",
4 "Data": {
5 "CheckCommitAuthor": false,
6 "DenyForcePush": false,
7 "PushFileSize": "",
8 "CommitMessageMustMatchRegex": "",
9 "PushDenyFile": ""
10 }
11 }
12}
修改仓库推送设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 否 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
Param | 否 | DepotPushSetting | 仓库推送设置参数 |
DepotPushSetting 参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
CheckCommitAuthor | 是 | Boolean | 检查 Git 提交的提交者 (Committer) 和提交作者 (Author) 必须是已验证的邮箱 |
DenyForcePush | 是 | Boolean | 禁止强制推送 (Force Push) |
PushFileSize | 是 | String | 开启单次提交的文件总大小限制,Git LFS 文件除外(单位MB) |
CommitMessageMustMatchRegex | 是 | String | Git 提交信息的格式校验(字符串长度不能超过256) |
PushDenyFile | 是 | String | 禁止推送的文件(文件类型用换行符隔开) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DepotPushSetting | 推送设置信息 |
DepotPushSetting 详情
参数名称 | 类型 | 描述 |
---|---|---|
CheckCommitAuthor | Boolean | 检查 Git 提交的提交者 (Committer) 和提交作者 (Author) 必须是已验证的邮箱 |
DenyForcePush | Boolean | 禁止强制推送 (Force Push) |
PushFileSize | String | 开启单次提交的文件总大小限制,Git LFS 文件除外(单位MB) |
CommitMessageMustMatchRegex | String | Git 提交信息的格式校验 |
PushDenyFile | String | 禁止推送的文件(文件类型用换行符隔开) |
Example 1
成功示例
1{
2 "Action": "ModifyDepotPushSetting",
3 "DepotPath": "codingcorp/project-d/depot-2",
4 "Param": {
5 "CheckCommitAuthor": false,
6 "DenyForcePush": true,
7 "PushFileSize": "",
8 "CommitMessageMustMatchRegex": "^(feat|fix)((.+))?",
9 "PushDenyFile": ""
10 }
11}
成功示例
1{
2 "Response": {
3 "RequestId": "1c06de89-1345-4188-aeb3-8929c826fa58",
4 "Data": {
5 "CheckCommitAuthor": false,
6 "DenyForcePush": true,
7 "PushFileSize": "",
8 "CommitMessageMustMatchRegex": "^(feat|fix)((.+))?",
9 "PushDenyFile": ""
10 }
11 }
12}
通过仓库名查询仓库信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
TeamGk | 是 | String | 团队名 |
ProjectName | 是 | String | 项目名 |
DepotName | 是 | String | 仓库名 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Depot | DepotInfo | 仓库信息 |
DepotInfo 详情
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 仓库 ID |
ProjectId | Integer | 项目 ID |
Name | String | 仓库名 |
HttpsUrl | String | 仓库 http 地址 |
SshUrl | String | 仓库 ssh 地址 |
WebUrl | String | 仓库 web 页面链接 |
VcsType | String | 仓库类型 git 、 svn |
ProjectName | String | 项目名 |
Description | String | 仓库描述 |
Example 1
成功示例
1{
2 "Action": "DescribeDepotByNameInfo",
3 "TeamGk": "codingcorp",
4 "ProjectName": "project-d",
5 "DepotName": "depot-2"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "5a656ed9-f9e7-4841-9494-7cdaf8e56644",
4 "Depot": {
5 "Id": 2,
6 "Name": "depot-2",
7 "HttpsUrl": "http://git.nh108omhq.dev.coding.io/codingcorp/project-d/depot-2.git",
8 "ProjectId": 1,
9 "SshUrl": "git@git.nh108omhq.dev.coding.io:codingcorp/project-d/depot-2.git",
10 "WebUrl": "http://codingcorp.nh108omhq.dev.coding.io/p/project-d/d/depot-2",
11 "VcsType": "git",
12 "ProjectName": "project-d",
13 "Description": ""
14 }
15 }
16}
修改仓库设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
DepotStatusCheckRequired | 是 | Boolean | 是否开启状态检查 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Example 1
成功示例
1{
2 "Action": "ModifyDepotSettings",
3 "DepotPath": "codingcorp/k8s/etcd",
4 "DepotStatusCheckRequired": true
5}
成功示例
1{
2 "Response": {
3 "RequestId": "bce62f13-74f1-678d-b09b-24b1e6d8c867"
4 }
5}
查询某分支下某文件是否存在
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
Path | 是 | String | 文件路径 |
Ref | 是 | String | 分支名/标签名/commit SHA |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Payload | DescribeGitFileStatPayload | 文件信息 |
DescribeGitFileStatPayload 详情
参数名称 | 类型 | 描述 |
---|---|---|
IsExist | Boolean | 文件是否存在 |
Example 1
成功示例
1{
2 "Action": "DescribeGitFileStat",
3 "DepotPath": "codingcorp/k8s/etcd",
4 "Path": "foo.txt",
5 "Ref": "master"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "0d5ffa38-6180-4eb6-b957-b041dde33ba9",
4 "Payload": {
5 "IsExist": true
6 }
7 }
8}
查询当前用户的仓库列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Payload | DepotData | 仓库信息 |
DepotData 详情
参数名称 | 类型 | 描述 |
---|---|---|
Depots | DepotInfo[] | 仓库信息列表 |
DepotInfo 详情
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 仓库 ID |
ProjectId | Integer | 项目 ID |
Name | String | 仓库名 |
HttpsUrl | String | 仓库 http 地址 |
SshUrl | String | 仓库 ssh 地址 |
WebUrl | String | 仓库 web 页面链接 |
VcsType | String | 仓库类型 git 、 svn |
ProjectName | String | 项目名 |
Description | String | 仓库描述 |
Example 1
成功示例
1{
2 "Action": "DescribeMyDepots"
3}
成功示例
1{
2 "Response": {
3 "Payload": {
4 "Depots": [
5 {
6 "Name": "xx",
7 "HttpsUrl": "xx",
8 "ProjectId": 1,
9 "WebUrl": "xx",
10 "VcsType": "git",
11 "SshUrl": "xx",
12 "Id": 1
13 },
14 {
15 "Name": "xx",
16 "HttpsUrl": "xx",
17 "ProjectId": 1,
18 "WebUrl": "xx",
19 "SshUrl": "xx",
20 "VcsType": "git",
21 "Id": 2
22 }
23 ]
24 },
25 "RequestId": "4bc86b5d-03ea-44a6-ae7b-b1239e92eea4"
26 }
27}
修改仓库合并请求基础设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
DeleteSrcBranchAfterMerged | 是 | Boolean | 是否默认删除源分支 |
DefaultFastForwardMerge | 是 | Boolean | 是否默认以 Fast-Forward 模式合并 |
CancelMrGrantAfterPushSrc | 是 | Boolean | 合并请求源分支有新提交时是否自动取消合并授权 |
DepotStatusCheckRequired | 是 | Boolean | 是否开启状态检查 |
MrCheckAllReviewersAllow | 是 | Boolean | 合并前是否必须获得所有评审者的允许合并 |
SquashOnMerge | 是 | String | 合并选择方式 1、no_squash:默认直接合并 2、default_squash:默认Squash合并 3、force_squash:只能Squash合并 |
DefaultTargetBranch | 是 | String | 默认分支 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyMergeRequestBasicSettings",
3 "DepotPath": "codingcorp/k8s/etcd",
4 "DeleteSrcBranchAfterMerged": true,
5 "DefaultFastForwardMerge": true,
6 "CancelMrGrantAfterPushSrc": true,
7 "DepotStatusCheckRequired": true,
8 "MrCheckAllReviewersAllow": true,
9 "SquashOnMerge": "no_squash/default_squash/force_squash",
10 "DefaultTargetBranch": "master-patch-1"
11}
成功示例
1{
2 "Response": {
3 "RequestId": "bce62f13-74f1-678d-b09b-24b1e6d8c867"
4 }
5}
修改仓库是否开源设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
TeamGk | 是 | String | 团队域名 |
DepotPath | 是 | String | 仓库路径 |
IsShared | 是 | Boolean | 是否仓库代码开源 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Example 1
成功示例
1{
2 "Action": "ModifyDepotSharedSetting",
3 "DepotPath": "codingcorp/test/depot",
4 "IsShared": true
5}
成功示例
1{
2 "Response": {
3 "RequestId": "bce62f13-74f1-678d-b09b-24b1e6d8c867"
4 }
5}
获取仓库分支下的代码片段
接口描述
获取团队下仓库列表,仅团队所有者或团队管理员可以调用。
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
BranchName | 是 | String | 分支名称 |
KeyWord | 是 | String | 搜索关键字 |
FilePath | 否 | String | 文件路径,如需要查某个路径下的代码片段,需输入文件路径参数 |
PageNumber | 是 | Integer | 页码 |
PageSize | 是 | Integer | 页码大小 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | GrepLineData | 代码片段搜索详情列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodeSearch",
3 "DepotPath": "codingcorp/test/depot",
4 "BranchName": "master",
5 "KeyWord": "你好",
6 "FilePath": "",
7 "PageNumber": 1,
8 "PageSize": 10
9}
成功示例
1{
2 "Response": {
3 "RequestId": "ba708820-d6ed-bb70-a628-d25d00a3c1ae",
4 "Data": {
5 "GrepLines": [
6 {
7 "BranchName": "master",
8 "CommitId": "cba396caf5d76f944981fd4fb229f32a008b2f89",
9 "Contents": [
10 "# Sample properties used by Spring configuration in ApplicationConfig.",
11 "你好",
12 " "
13 ],
14 "FileMaxLine": 5,
15 "LineNum": 4,
16 "MaxNum": 5,
17 "MinNum": 1,
18 "Path": "src/main/resources/application.properties",
19 "Text": "你好"
20 },
21 {
22 "BranchName": "master",
23 "CommitId": "cba396caf5d76f944981fd4fb229f32a008b2f89",
24 "Contents": [
25 "# Sample properties used by Spring configuration in ApplicationConfig.",
26 "你好",
27 " "
28 ],
29 "FileMaxLine": 40,
30 "LineNum": 9,
31 "MaxNum": 5,
32 "MinNum": 1,
33 "Path": "README.md",
34 "Text": "你好"
35 }
36 ],
37 "Page": {
38 "Page": 1,
39 "PageSize": 20,
40 "TotalPage": 1,
41 "TotalRow": 1
42 }
43 }
44 }
45}
获取提交ref信息
接口描述
获取提交ref信息。
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
Sha | 是 | String | Commit信息 |
Type | 是 | String | 查询的提交类型 all-表示查询tag和branch,tag-表示查询tag,branch-表示查询branch |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
CommitRefs | CommitRef | 提交commit的ref信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCommitRefs",
3 "DepotPath": "codingcorp/ll/py-git2",
4 "Sha": "45aa7e42829707fcc1dd137331956403480d2b66",
5 "Type": "all/tag/branch"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "243deeef-92cc-49eb-9ef1-a5bda74d5d76",
4 "CommitRefs": [
5 {
6 "Type": "branch",
7 "Name": "master"
8 },
9 {
10 "Type": "branch",
11 "Name": "master-001"
12 },
13 {
14 "Type": "tag",
15 "Name": "tag-master"
16 }
17 ]
18 }
19}
获取commit评论
接口描述
获取commit评论。
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
Sha | 是 | String | Commit信息 |
PageNumber | 是 | Integer | 页码 |
PageSize | 是 | Integer | 页码大小 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitCommitComments | GitCommitComment | 提交commit的评论信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeGitCommitComments",
3 "DepotPath": "codingcorp/ll/py-git2",
4 "Sha": "45aa7e42829707fcc1dd137331956403480d2b66",
5 "PageNumber": 1,
6 "PageSize": 10
7}
成功示例
1{
2 "Response": {
3 "RequestId": "55047461-c1d3-4f5d-a875-c712e6744112",
4 "GitCommitComments": {
5 "CommitComments": [
6 {
7 "Id": 331,
8 "DepotId": 4,
9 "CommitSha": "5be20bff7e64a6b42644237f6d704c8cedecb641",
10 "Path": "",
11 "Index": 0,
12 "Content": "vewjviwb",
13 "CreatedAt": 1684831236000,
14 "Author": {
15 "Id": 3,
16 "TeamId": 1,
17 "Name": "admin",
18 "Email": "",
19 "GlobalKey": "coding-admin",
20 "Status": "",
21 "Avatar": "/static/fruit_avatar/Fruit-20.png"
22 }
23 }
24 ],
25 "Page": {
26 "PageNumber": 1,
27 "PageSize": 10,
28 "TotalPage": 1,
29 "TotalRow": 1
30 }
31 }
32 }
33}
修改仓库容量
接口描述
修改仓库容量。
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
DepotQuotaSize | 是 | String | 设定的仓库大小 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyDepotQuota",
3 "DepotPath": "codingcorp/ll/py-git2",
4 "DepotQuotaSize": "0.9"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "6dd6f3da-999c-4ce2-96ef-cfca891fadd5"
4 }
5}
合并提交消息模板设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
CommitMessageTemplate | 是 | String | 消息模版 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyMergeRequestMergeCommitMessageTemplate",
3 "DepotPath": "codingcorp/k8s/etcd",
4 "CommitMessageTemplate": "haha"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "bce62f13-74f1-678d-b09b-24b1e6d8c867"
4 }
5}
合并压缩提交消息模板设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
CommitMessageTemplate | 是 | String | 消息模版 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyMergeRequestSquashCommitMessageTemplate",
3 "DepotPath": "codingcorp/k8s/etcd",
4 "CommitMessageTemplate": "haha"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "bce62f13-74f1-678d-b09b-24b1e6d8c867"
4 }
5}
获取指定 commit 下某文件指定代码行的最后一次提交
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
CommitSha | 是 | String | 本次提交sha |
FilePath | 是 | String | 文件路径 |
LineStart | 否 | Integer | 文本行开始 |
LineEnd | 否 | Integer | 文本行结束 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Info | CommitInfo | commit下某文件指定代码行的最后一次提交信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeGitBlameInfo",
3 "DepotPath": "codingcorp/k8s/etcd",
4 "CommitSha": "9957b61d6a8cef0b5181fbbbd2524f38fe272915",
5 "FilePath": ".babelrc",
6 "LineStart": 2,
7 "LineEnd": 10
8}
成功示例
1{
2 "Response": {
3 "Info": [
4 {
5 "CommitSha": "7dff29591550eabec8d2e046f096239f0a1fb4d3",
6 "Committer": {
7 "Id": 2,
8 "TeamId": 1,
9 "Name": "coding",
10 "Email": "coding@coding.com",
11 "GlobalKey": "coding-coding",
12 "Status": "INACTIVE",
13 "Avatar": "/static/fruit_avatar/Fruit-20.png"
14 },
15 "CommitDate": 1700535186000,
16 "LineNumber": 1
17 },
18 {
19 "CommitSha": "7dff29591550eabec8d2e046f096239f0a1fb4d3",
20 "Committer": {
21 "Id": 2,
22 "TeamId": 1,
23 "Name": "coding",
24 "Email": "coding@coding.com",
25 "GlobalKey": "coding-coding",
26 "Status": "INACTIVE",
27 "Avatar": "/static/fruit_avatar/Fruit-20.png"
28 },
29 "CommitDate": 1700535186000,
30 "LineNumber": 2
31 },
32 {
33 "CommitSha": "7dff29591550eabec8d2e046f096239f0a1fb4d3",
34 "Committer": {
35 "Id": 2,
36 "TeamId": 1,
37 "Name": "coding",
38 "Email": "coding@coding.com",
39 "GlobalKey": "coding-coding",
40 "Status": "INACTIVE",
41 "Avatar": "/static/fruit_avatar/Fruit-20.png"
42 },
43 "CommitDate": 1700535186000,
44 "LineNumber": 3
45 }
46 ],
47 "RequestId": "206c1552-9b3c-4d40-80c2-d8047bacf666"
48 }
49}
获取提交注释
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
CommitSha | 是 | String | 提交的 Sha |
NotesRef | 否 | String | 注释 分支 Ref |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
CommitNote | String | 提交注释 |
Example 1
成功示例
1{
2 "Action": "DescribeGitCommitNote",
3 "DepotId": 1383,
4 "CommitSha": "5178d68bd3ee2a93733354884f0888584d671d7b",
5 "NotesRef": ""
6}
成功示例
1{
2 "Response": {
3 "RequestId": "f2212265-890c-fb76-2154-794c2a395610",
4 "CommitNote": "coding"
5 }
6}
查询提交详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Sha | 是 | String | 提交的 Sha 值 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitCommit | Commit | 提交详情 |
Example 1
成功示例
1{
2 "Action": "DescribeGitCommit",
3 "DepotId": 1001,
4 "Sha": "bf778a27fa30a889a30af6362ba1f16a48dd58dd"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "b4fe12f2-c21c-bdd7-5efd-e07dc7f28a31",
4 "GitCommit": {
5 "ShortMessage": "my-commit",
6 "Sha": "bf778a27fa30a889a30af6362ba1f16a48dd58dd",
7 "CommitDate": 1602817039000,
8 "Commiter": {
9 "Email": "mydemo@coding.com",
10 "Name": "洋葱猴"
11 },
12 "FullMessage": "my-commit/nnihaohxishxh",
13 "Author": {
14 "Email": "mydemo@coding.com",
15 "Name": "洋葱猴"
16 }
17 }
18 }
19}
查询仓库分支下提交列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Ref | 是 | String | 分支名称 |
Path | 否 | String | 查询文件路径 |
PageNumber | 否 | Integer | 分页页码,默认为 1 |
PageSize | 否 | Integer | 分页页距,默认为 10 ,最大值为 500 |
StartDate | 否 | String | 时间过滤起始点 |
EndDate | 否 | String | 时间过滤到达点 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Commits | Commit | 提交详情列表 |
Example 1
成功示例
1{
2 "Action": "DescribeGitCommits",
3 "DepotId": 1001,
4 "PageNumber": 1,
5 "PageSize": 20,
6 "Ref": "master",
7 "Path": "",
8 "StartDate": "",
9 "EndDate": ""
10}
成功示例
1{
2 "Response": {
3 "RequestId": "ae27609d-83a4-6a31-788c-c8d5c2ea9278",
4 "Commits": [
5 {
6 "ShortMessage": "commit 1",
7 "Sha": "bf778a27fa30a889a30af6362ba1f16a48dd58dd",
8 "CommitDate": 1602817039000,
9 "Commiter": {
10 "Email": "demo1@coding.com",
11 "Name": "洋葱猴"
12 },
13 "FullMessage": "my-commit/nnihaohxishxh",
14 "Author": {
15 "Email": "mydemo@coding.com",
16 "Name": "洋葱猴"
17 }
18 },
19 {
20 "ShortMessage": "commit 2",
21 "Sha": "41f071ff685389db1d0a796dbd4770dd9c8931f0",
22 "CommitDate": 1602817003000,
23 "Commiter": {
24 "Email": "demo2@coding.com",
25 "Name": "洋葱猴"
26 },
27 "FullMessage": "my-commit/nnihaohxishxh",
28 "Author": {
29 "Email": "mydemo@coding.com",
30 "Name": "洋葱猴"
31 }
32 }
33 ]
34 }
35}
两次提交之间的提交历史
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Source | 是 | String | 源请求 Sha 值,分支名称 |
Target | 是 | String | 目标请求 Sha 值,分支名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
DifferentOfCommitInfo | DifferentOfCommitInfo | 差异信息 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
ShortMessage | String | 提交的消息 |
Sha | String | 提交的 Sha |
CommitDate | Integer | 提交的时间戳,单位毫秒 |
Path | String | 文件路径 |
Deletions | Integer | 删除的行数 |
Insertions | Integer | 新增的行数 |
Name | String | 提交名称 |
UpdateFileNum | Integer | 修改的文件数 |
Example 1
成功示例
1{
2 "Action": "DescribeCommitsBetween2Commit",
3 "DepotId": 5001,
4 "Source": "",
5 "Target": ""
6}
成功示例
1{
2 "Response": {
3 "RequestId": "ae841435-a933-d500-b363-c25d3843bfa3",
4 "DifferentOfCommitInfo": {
5 "Commits": [
6 {
7 "ShortMessage": "asdasd\n",
8 "Sha": "be9a51ea0dfb1a43e1e714db0e0ecad3009bf362",
9 "CommitDate": 1602668567000,
10 "Commiter": {
11 "Email": "coding@coding.com",
12 "Name": "coding"
13 },
14 "FullMessage": "my-commit/nnihaohxishxh",
15 "Author": {
16 "Email": "mydemo@coding.com",
17 "Name": "洋葱猴"
18 }
19 }
20 ],
21 "DifferentOfCommits": [
22 {
23 "Path": "dada",
24 "Deletions": 0,
25 "Insertions": 1,
26 "Name": "dada"
27 }
28 ],
29 "Deletions": 0,
30 "Insertions": 1,
31 "UpdateFileNum": 1
32 }
33 }
34}
两次提交之间的文件差异
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Source | 是 | String | 源请求 Sha 值,分支名称 |
Target | 是 | String | 目标请求 Sha 值,分支名称 |
Path | 是 | String | 文件位置 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
DiffFileInfo | DiffFileInfo | 文件差异信息 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Index | Integer | 排序号,由小到大递增 |
LeftNo | Integer | 操作起始行号 |
Prefix | Integer | 操作方式:"+"表示新增,"-"表示删除," "表示不变 |
RightNo | Integer | 操作结束行号 |
Text | String | 文本 |
Deletions | Integer | 总删除行数 |
Insertions | Integer | 总新增行数 |
Example 1
成功示例
1{
2 "Action": "DescribeDifferentBetween2Commits",
3 "DepotId": 5001,
4 "Source": "master",
5 "Target": "dev",
6 "Path": "root/test.java"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "8122c513-7ad1-878c-6187-a764b4616a79",
4 "DiffFileInfo": {
5 "DifferentLines": [
6 {
7 "Index": 0,
8 "LeftNo": 0,
9 "Prefix": " ",
10 "RightNo": 0,
11 "Text": "@@ -0,0 +1 @@\n"
12 },
13 {
14 "Index": 1,
15 "LeftNo": 1,
16 "Prefix": "+",
17 "RightNo": 1,
18 "Text": "dsafdasdfas\\ No newline at end of file"
19 }
20 ],
21 "Deletions": 0,
22 "Insertions": 1
23 }
24 }
25}
获取提交的note信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
NoteRef | 是 | String | note 路径 |
Commits | 是 | String | commitId 集合 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Notes | CommitNote | note 信息集合 |
CommitNote 输出参数详情
参数名称 | 类型 | 描述 |
---|---|---|
CommitSha | String | commitSha 值 |
NoteContent | String | note 值 |
Example 1
成功示例
1{
2 "Action": "DescribeNotesByCommits",
3 "DepotId": 7323,
4 "NoteRef": "refs/notes/commits",
5 "Commits": [
6 "commitSha1",
7 "commitSha2"
8 ]
9}
成功示例
1{
2 "Response": {
3 "RequestId": "c1c83461-dd49-3092-6ccd-4eecbabbd8aa",
4 "Notes": [
5 {
6 "CommitSha": "commitSha1",
7 "NoteContent": "note 1"
8 },
9 {
10 "CommitSha": "commitSha2",
11 "NoteContent": "note 2"
12 }
13 ]
14 }
15}
查询某次提交某文件的内容
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
CommitSha | 是 | String | commit 的 Sha 值 |
Path | 是 | String | 文件路径 |
输出参数
参数名称 | 类型 | 描述 | |
---|---|---|---|
GitFileContent | GitFileContent | 文件内容对象 |
GitFileContent 参数详解
参数名称 | 类型 | 描述 | |
---|---|---|---|
Content | String | 内容 | |
IsText | bool | 是否是文本 | |
IsLfs | bool | 是否是大文件对象 |
Example 1
成功示例
1{
2 "Action": "DescribeGitFileContent",
3 "DepotId": 809883,
4 "CommitSha": "1709525b48d070c131da71b0c6c5f6b8cb69501e",
5 "Path": "src/main/main.java"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "6c1ea96a-0b60-c250-1190-e98376def98e",
4 "GitFileContent": {
5 "Content": "test test test test line1\ntest test test test line2",
6 "IsText": true,
7 "IsLfs": false
8 }
9 }
10}
新建文件并提交
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
LastCommitSha | 否 | String | 最后一次 commit 的 Sha 值 |
Message | 是 | String | commit 信息 |
Ref | 是 | String | 分支名 |
NewRef | 否 | String | 新分支名(若要 commit 到新的分支,需要加上此参数) |
GitFiles | 是 | GitFile[] | git文件 |
GitFile 参数详解
参数名称 | 类型 | 描述 | |
---|---|---|---|
Path | String | 文件路径 | |
Content | String | 文件内容 |
Example 1
成功示例
1{
2 "Action": "CreateGitFiles",
3 "DepotId": 809883,
4 "LastCommitSha": "cd3e7461b4061346a4803d1494623fc7ffa7f96a",
5 "Message": "Create a new file named hello111.java",
6 "Ref": "master",
7 "NewRef": "",
8 "GitFiles": [
9 {
10 "Path": "src/main/hello.java",
11 "Content": "line1\nline2\nline3\nline4\nline5"
12 }
13 ]
14}
成功示例
1{
2 "Response": {
3 "RequestId": "b974da85-10bf-1411-0322-f84ccde0008c"
4 }
5}
修改文件并提交
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
LastCommitSha | 否 | String | 最后一次 commit 的 Sha 值 |
Message | 是 | String | commit 信息 |
Ref | 是 | String | 分支名 |
NewRef | 否 | String | 新分支名(若要 commit 到新的分支,需要加上此参数) |
GitFiles | 是 | GitFile[] | git文件 |
GitFile 参数详解
参数名称 | 类型 | 描述 | |
---|---|---|---|
Path | String | 文件路径 | |
Content | String | 文件内容 | |
NewPath | String | 新文件路径(若文件路径修改) |
Example 1
成功示例
1{
2 "Action": "ModifyGitFiles",
3 "DepotId": 809883,
4 "LastCommitSha": "93c4b9987ba34183ecc2c45eee26aa44dc1c08ea",
5 "Message": "Modify hello.java",
6 "Ref": "master",
7 "NewRef": "",
8 "GitFiles": [
9 {
10 "Path": "src/main/hello.java",
11 "Content": "line1\nline2\nline3\nline4\nline5\nline6",
12 "NewPath": ""
13 }
14 ]
15}
成功示例
1{
2 "Response": {
3 "RequestId": "b974da85-10bf-1411-0322-f84ccde0008c"
4 }
5}
新建内容是二进制的文件
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
UserId | 是 | Integer | 提交时的用户 Id |
SrcRef | 是 | String | 源分支 |
DestRef | 是 | String | 目标分支 |
Message | 是 | String | commit 信息 |
LastCommitSha | 否 | String | 最后 commit 的 Sha 值 |
GitFiles | 是 | GitFile[] | git 文件对象 |
GitFile 参数详解
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Path | 是 | String | 文件路径 |
Content | 是 | String | 文件内容(可通过base64解密) |
Example 1
成功示例
1{
2 "Action": "CreateBinaryFiles",
3 "DepotId": 809883,
4 "UserId": 1,
5 "SrcRef": "master",
6 "DestRef": "master",
7 "Message": "create a binary file2",
8 "LastCommitSha": "1db4eabbded90a7669094b3e5162d9098840a2cf",
9 "GitFiles": [
10 {
11 "Path": "src/main/binary2.test",
12 "Content": "SSUyN20lMjBhJTIwYmluYXJ5JTIwZmlsZSUyMHRoYXQlMjBuZWVkcyUyMHRvJTIwYmUlMjBkZWNyeXB0ZWQu",
13 "NewPath": ""
14 }
15 ]
16}
成功示例
1{
2 "Response": {
3 "RequestId": "10623f03-0f5a-0616-239f-21711e95eb4e"
4 }
5}
为某次提交创建一条评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Sha | 是 | String | 提交 Id |
Path | 是 | String | 文件路径 |
Index | 是 | Integer | diff信息中的第几行 |
Content | 是 | String | 评论的内容 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Comment | Comment | 评论详细 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Comment 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | Id |
DepotId | Integer | 仓库 Id |
CommitSha | String | 提交 Id |
Path | String | 文件路径 |
Index | Integer | diff信息中的第几行 |
Content | String | 评论的内容 |
CreatedAt | Integer | 评论时间 |
Author | User | 评论人 |
Example 1
成功示例
1{
2 "Action": "CreateGitCommitComment",
3 "DepotId": 2,
4 "sha": "575489c9aed1698d11f1ed398e3c4cb3d45d2ca9",
5 "Path": "lib/src/extended_render_paragraph.dart",
6 "Index": 1,
7 "Content": "Hello"
8}
成功示例
1{
2 "Response": {
3 "RequestId": "db38b5e0-8f33-bf85-92fe-ca939d376006",
4 "Comment": {
5 "Id": 330,
6 "DepotId": 2,
7 "CommitSha": "575489c9aed1698d11f1ed398e3c4cb3d45d2ca9",
8 "Path": "lib/src/extended_render_paragraph.dart",
9 "Index": 1,
10 "Content": "Hello",
11 "CreatedAt": 1642045112051,
12 "Author": {
13 "Id": 2,
14 "TeamId": 1,
15 "Name": "coding",
16 "Email": "",
17 "GlobalKey": "coding-coding",
18 "Status": "",
19 "Avatar": "/static/fruit_avatar/Fruit-20.png"
20 }
21 }
22 }
23}
查询某次提交的diff信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Sha | 是 | String | 提交 Id |
Path | 否 | String | 文件路径 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Diffs | Array of [GitDiff] | diff信息列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
GitDiff 参数详解
名称 | 类型 | 描述 |
---|---|---|
Path | String | 文件路径 |
Content | String | diff原始信息 |
Lines | Array of [Line] | diff信息每行信息列表(用于页面显示) |
NewMode | String | 新文件权限 |
OldMode | String | 旧文件权限 |
ChangeType | String | 文件改变类型 |
Insertions | Integer | 新增行数 |
新增行数 | Integer | 删除行数 |
Example 1
成功示例
1{
2 "Action": "DescribeGitCommitDiff",
3 "DepotId": 2,
4 "sha": "575489c9aed1698d11f1ed398e3c4cb3d45d2ca9",
5 "Path": "lib/src/extended_render_paragraph.dart"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "92440ff6-0a94-2b37-f148-bfc8e53286fc",
4 "Diffs": [
5 {
6 "Path": "lib/src/extended_render_paragraph.dart",
7 "Content": "diff --git a/lib/src/extended_render_paragraph.dart b/lib/src/extended_render_paragraph.dart\nindex 6755e48..9414555 100644\n--- a/lib/src/extended_render_paragraph.dart\n+++ b/lib/src/extended_render_paragraph.dart\n@@ -1064,7 +1064,7 @@ class ExtendedRenderParagraph extends ExtendedTextSelectionRenderObject {\n effectiveOffset: effectiveOffset,\n );\n }\n- return Offset(endOffset.dx, math.min(y!, endOffset.dy));\n+ return Offset(endOffset.dx, math.min(y, endOffset.dy));\n }\n \n void _paintSelection(PaintingContext context, Offset effectiveOffset) {\n",
8 "Lines": [
9 {
10 "Index": 0,
11 "LeftNo": 0,
12 "Prefix": "\u0000",
13 "RightNo": 0,
14 "Text": "@@ -1064,7 +1064,7 @@\n"
15 },
16 {
17 "Index": 1,
18 "LeftNo": 1064,
19 "Prefix": " ",
20 "RightNo": 1064,
21 "Text": " effectiveOffset: effectiveOffset,"
22 },
23 {
24 "Index": 2,
25 "LeftNo": 1065,
26 "Prefix": " ",
27 "RightNo": 1065,
28 "Text": " );"
29 },
30 {
31 "Index": 3,
32 "LeftNo": 1066,
33 "Prefix": " ",
34 "RightNo": 1066,
35 "Text": " }"
36 },
37 {
38 "Index": 4,
39 "LeftNo": 1067,
40 "Prefix": "-",
41 "RightNo": 1067,
42 "Text": " return Offset(endOffset.dx, math.min(y!, endOffset.dy));"
43 },
44 {
45 "Index": 5,
46 "LeftNo": 1068,
47 "Prefix": "+",
48 "RightNo": 1067,
49 "Text": " return Offset(endOffset.dx, math.min(y, endOffset.dy));"
50 },
51 {
52 "Index": 6,
53 "LeftNo": 1068,
54 "Prefix": " ",
55 "RightNo": 1068,
56 "Text": " }"
57 },
58 {
59 "Index": 7,
60 "LeftNo": 1069,
61 "Prefix": " ",
62 "RightNo": 1069,
63 "Text": ""
64 },
65 {
66 "Index": 8,
67 "LeftNo": 1070,
68 "Prefix": " ",
69 "RightNo": 1070,
70 "Text": " void _paintSelection(PaintingContext context, Offset effectiveOffset) {"
71 }
72 ],
73 "NewMode": "100644",
74 "OldMode": "100644",
75 "ChangeType": "modify",
76 "Insertions": 1,
77 "Deletions": 1
78 }
79 ]
80 }
81}
还原某次提交
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BranchName | 是 | String | 分支名 |
Sha | 是 | String | 欲还原的提交 Id |
Message | 是 | String | 提交描述 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyGitCommitRevert",
3 "DepotId": 2,
4 "BranchName": "feat/mr1",
5 "Sha": "e06ebced0f890db2265b8362b3e3f24f30374413",
6 "Message": "revert this commit"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "62f19681-d01d-0560-6a92-53256470a6ce"
4 }
5}
修改提交对应的流水线状态
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 否 | Integer | 仓库 id,与 DepotPath 必须有一个是填写的 |
DepotPath | 否 | String | 仓库路径,与 DepotId 必须有一个是填写的,例如 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
CommitSha | 是 | String | 提交对应的 Sha 值 |
State | 是 | String | COMMIT_STATE_PENDING:等待构建,COMMIT_STATE_SUCCESS:构建成功,COMMIT_STATE_FAILURE:构建失败,COMMIT_STATE_ERROR:构建出错 |
Context | 是 | String | 流水线文本内容 |
Description | 是 | String | 流水线状态描述 |
TargetURL | 是 | String | 流水线链接地址 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Example 1
成功示例
1{
2 "Action": "ModifyGitCommitStatus",
3 "DepotId": 0,
4 "DepotPath": "codingcorp/project-d/depot-d",
5 "CommitSha": "da3e8c8f93516bc8e1609e5a91df98439c6c7b49",
6 "State": "COMMIT_STATE_ERROR",
7 "Context": "示例任务 #1",
8 "TargetURL": "http://test.coding.net/p/project-name/ci/job/20684/build/1/pipeline",
9 "Description": "构建成功"
10}
成功示例
1{
2 "Response": {
3 "RequestId": "2cc95576-edd9-4b05-a133-886a712588a9"
4 }
5}
查询提交对应的流水线状态
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 否 | Integer | 仓库 id,与 DepotPath 必须有一个是填写的 |
DepotPath | 否 | String | 仓库路径,与 DepotId 必须有一个是填写的,例如 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
CommitSha | 是 | String | 提交对应的 Sha 值 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
StatusCheckResults | StatusCheckResult[] | 提交流水线状态列表 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
DepotId | Integer | 仓库 id |
CommitSha | String | 提交对应的 Sha 值 |
State | String | COMMIT_STATE_PENDING:等待构建,COMMIT_STATE_SUCCESS:构建成功,COMMIT_STATE_FAILURE:构建失败,COMMIT_STATE_ERROR:构建出错 |
Context | String | 流水线文本内容 |
Description | String | 流水线状态描述 |
TargetURL | String | 流水线链接地址 |
CreateDate | Integer | 记录创建时间 |
Example 1
成功示例
1{
2 "Action": "DescribeGitCommitStatus",
3 "DepotId": 0,
4 "DepotPath": "codingcorp/project-d/depot-d",
5 "CommitSha": "da3e8c8f93516bc8e1609e5a91df98439c6c7b49"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "20b379d2-5ad8-4b70-ac63-e6cfbc4b354a",
4 "StatusCheckResults": [
5 {
6 "DepotId": 1,
7 "CommitSha": "da3e8c8f93516bc8e1609e5a91df98439c6c7b49",
8 "State": "COMMIT_STATE_ERROR",
9 "Context": "示例任务 #2",
10 "TargetURL": "http://test.coding.net/p/project-name/ci/job/20684/build/1/pipeline",
11 "Description": "构建失败",
12 "CreateDate": 1663224375000
13 },
14 {
15 "DepotId": 1,
16 "CommitSha": "da3e8c8f93516bc8e1609e5a91df98439c6c7b49",
17 "State": "COMMIT_STATE_SUCCESS",
18 "Context": "示例任务 #1",
19 "TargetURL": "http://stagingapi.staging-corp.coding.io/p/QTX/ci/job/20684/build/1/pipeline",
20 "Description": "构建成功",
21 "CreateDate": 1663222172000
22 }
23 ]
24 }
25}
创建标签
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
StartPoint | 是 | String | 创建来源 |
TagName | 是 | String | tag 名称 |
Message | 是 | String | 描述 |
Example 1
成功示例
1{
2 "Action": "CreateGitTag",
3 "DepotId": 1001,
4 "TagName": "tag-demo",
5 "StartPoint": "master",
6 "message": "this is my create tag demo"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "b6445913-3b7c-9907-c6b3-a2d63abfd5c6"
4 }
5}
Example 1
成功示例
1{
2 "Action": "DeleteGitTag",
3 "DepotId": 1001,
4 "TagName": "tag-demo"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "aa9dc0b9-6c8c-ed2c-ac54-191b40a63e81"
4 }
5}
查询指定标签
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
TagName | 是 | String | tag 名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitTag | GitTag | tag |
Example 1
成功示例
1{
2 "Action": "DescribeGitTag",
3 "DepotId": 1001,
4 "TagName": "tag-demo"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "a3a852b3-3d5a-d87f-fe9a-7ea8af9e22ed",
4 "GitTag": {
5 "TagName": "tag-demo",
6 "Message": "this is a tag-demo"
7 }
8 }
9}
查询仓库所有标签
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitTags | GitTag | tag 集合 |
Example 1
成功示例
1{
2 "Action": "DescribeGitTags",
3 "DepotId": 1001,
4 "Page": 1,
5 "PageSize": 10,
6 "KeyWord": "n",
7 "DepotPath": "codingcorp/test/depot"
8}
成功示例
1{
2 "Response": {
3 "RequestId": "05d4f18d-8602-ad9c-f6a2-8ad6f8f73127",
4 "GitTags": [
5 {
6 "TagName": "tag-demo1",
7 "Message": "this is tag-demo1",
8 "Commit": {
9 "ShortMessage": "Initial Commit\n",
10 "Sha": "b7d8f659f980fdd0acfcb406da94c959b8e09013",
11 "CommitDate": 1680781851000,
12 "CreatedAt": 1680854590000,
13 "AuthorName": "coding",
14 "AuthorEmail": "coding@coding.com",
15 "CommitterName": "coding",
16 "CommitterEmail": "coding@coding.com",
17 "Parents": []
18 }
19 },
20 {
21 "TagName": "tag-demo2",
22 "Message": "this is tag-demo2",
23 "Commit": {
24 "ShortMessage": "Initial Commit\n",
25 "Sha": "b7d8f659f980fdd0acfcb406da94c959b8e09013",
26 "CommitDate": 1680781851000,
27 "CreatedAt": 1680854590000,
28 "AuthorName": "coding",
29 "AuthorEmail": "coding@coding.com",
30 "CommitterName": "coding",
31 "CommitterEmail": "coding@coding.com",
32 "Parents": []
33 }
34 }
35 ]
36 }
37}
根据分支获取标签列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Branch | 是 | String | 合并请求 id |
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Tags | String | 标签列表 |
Example 1
成功示例
1{
2 "Action": "DescribeGitTagsByBranch",
3 "DepotId": 46,
4 "Branch": "master"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "78b0fa3f-c793-ebb1-822d-82cbc83848e6",
4 "Tags": [
5 "v0.1.0",
6 "v0.2.0",
7 "v0.2.1",
8 "v0.3.0",
9 "v0.3.1",
10 "v0.4.0",
11 "v0.4.1"
12 ]
13 }
14}
查询含有某次提交的标签列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Sha | 是 | String | 提交 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitTags | Array of [GitTag] | 标签列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
GitTag 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
TagName | String | 标签名 |
Message | String | 标签信息 |
Example 1
成功示例
1{
2 "Action": "DescribeGitTagsBySha",
3 "DepotId": 2,
4 "Sha": "575489c9aed1698d11f1ed398e3c4cb3d45d2ca9"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "8b048fe5-eb93-e8aa-a239-b864d9abd660",
4 "GitTags": [
5 {
6 "TagName": "2021.12.31",
7 "Message": ""
8 },
9 {
10 "TagName": "2022.01.11",
11 "Message": "this is an example tag"
12 }
13 ]
14 }
15}
查询受保护的标签列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitTags | Array of [GitTag] | 标签列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
GitTag
标签列表
参数名称 | 类型 | 描述 |
---|---|---|
TagName | String | 标签名 |
Message | String | 标签描述信息(如果描述信息为空,默认显示最后一次提交的信息) |
Example 1
成功示例
1{
2 "Action": "DescribeGitProtectedTags",
3 "DepotId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "8b048fe5-eb93-e8aa-a239-b864d9abd660",
4 "GitTags": [
5 {
6 "TagName": "2021.12.31",
7 "Message": ""
8 },
9 {
10 "TagName": "2022.01.11",
11 "Message": "this is an example tag"
12 }
13 ]
14 }
15}
根据标签保护规则查询受保护的标签列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Rule | 是 | String | 保护规则 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitTags | Array of [GitTag] | 标签列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
GitTag
标签列表
参数名称 | 类型 | 描述 |
---|---|---|
TagName | String | 标签名 |
Message | String | 标签描述信息(如果描述信息为空,默认显示最后一次提交的信息) |
Example 1
成功示例
1{
2 "Action": "DescribeGitProtectedTagsByRule",
3 "DepotId": 2,
4 "Rule": "2022*"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "3d9b3771-9b56-7da8-a31d-9e5bb402d659",
4 "GitTags": [
5 {
6 "TagName": "2022.01.12",
7 "Message": "delete file test/test.dart"
8 }
9 ]
10 }
11}
创建标签保护规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Rule | 是 | String | 保护规则 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateGitProtectedTagRule",
3 "DepotId": 2,
4 "Rule": "2022*"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "3d9b3771-9b56-7da8-a31d-9e5bb402d659"
4 }
5}
批量创建标签保护规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Rule | 是 | Array of [String] | 保护规则列表 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateGitProtectedTagRules",
3 "DepotId": 2,
4 "Rule": [
5 "2022.01*",
6 "2022.02*"
7 ]
8}
成功示例
1{
2 "Response": {
3 "RequestId": "e7251f89-b65c-258b-b96e-62e25a2ef74c"
4 }
5}
删除标签保护规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Rule | 是 | String | 保护规则 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteGitProtectedTagRule",
3 "DepotId": 2,
4 "Rule": "2021*"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "caf50fa3-0c4a-c22f-5932-8d4bf0972c75"
4 }
5}
创建分支
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
BranchName | 是 | String | 要创建的仓库名称 |
StartPoint | 是 | String | 源分支名称 |
Example 1
成功示例
1{
2 "Action": "CreateGitBranch",
3 "DepotId": 1001,
4 "BranchName": "branch-demo",
5 "StartPoint": "master"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "be249809-0852-bd61-1420-c7d66e5038a9"
4 }
5}
删除分支
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
BranchName | 是 | String | 要创建的仓库名称 |
Example 1
成功示例
1{
2 "Action": "DeleteGitBranch",
3 "DepotId": 1001,
4 "BranchName": "branch-demo"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "30892813-210d-a1cf-10bd-ca11cb1e271a"
4 }
5}
查询分支信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
BranchName | 是 | String | 分支名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
GitBranch | GitBranch | 分支详情 |
Example 1
成功示例
1{
2 "Action": "DescribeGitBranch",
3 "DepotId": 1001,
4 "BranchName": "master"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "fd1d65dd-5c9d-df50-e348-7d3bf0f31f53",
4 "GitBranch": {
5 "BranchName": "master",
6 "IsDefaultBranch": true,
7 "IsProtected": false,
8 "Sha": "bf778a27fa30a889a30af6362ba1f16a48dd58dd"
9 }
10 }
11}
查询所有分支信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
PageNumber | 否 | Integer | 分页页码,默认为 1 |
PageSize | 否 | Integer | 分页页距,默认为 10 |
KeyWord | 否 | String | 关键词 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Branches | GitBranch | 分支列表 |
TotalCount | Integer | 总条数 |
Example 1
成功示例
1{
2 "Action": "DescribeGitBranches",
3 "DepotId": 1001,
4 "PageNumber": 1,
5 "PageSize": 20,
6 "KeyWord": ""
7}
成功示例
1{
2 "Response": {
3 "RequestId": "7c57d93d-e731-6150-8575-b3bf68f11b05",
4 "TotalCount": 4,
5 "Branches": [
6 {
7 "BranchName": "master",
8 "IsDefaultBranch": true,
9 "IsProtected": false,
10 "Sha": "92811220f02b7c9f1ef5559c74ced479f271c905",
11 "IsReadOnly": false,
12 "DenyForcePush": false,
13 "ForceSquash": false,
14 "SpecBranchType": "",
15 "LastCommitDate": 1698145534000
16 },
17 {
18 "BranchName": "branch-1",
19 "IsDefaultBranch": false,
20 "IsProtected": false,
21 "Sha": "92811220f02b7c9f1ef5559c74ced479f271c905",
22 "IsReadOnly": false,
23 "DenyForcePush": false,
24 "ForceSquash": false,
25 "SpecBranchType": "",
26 "LastCommitDate": 1698145534000
27 },
28 {
29 "BranchName": "branch-2",
30 "IsDefaultBranch": false,
31 "IsProtected": false,
32 "Sha": "92811220f02b7c9f1ef5559c74ced479f271c905",
33 "IsReadOnly": false,
34 "DenyForcePush": false,
35 "ForceSquash": false,
36 "SpecBranchType": "",
37 "LastCommitDate": 1698145534000
38 },
39 {
40 "BranchName": "branch-3",
41 "IsDefaultBranch": false,
42 "IsProtected": false,
43 "Sha": "92811220f02b7c9f1ef5559c74ced479f271c905",
44 "IsReadOnly": false,
45 "DenyForcePush": false,
46 "ForceSquash": false,
47 "SpecBranchType": "",
48 "LastCommitDate": 1698145534000
49 }
50 ]
51 }
52}
查询提交所在分支
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Sha | 是 | String | 提交的 Sha 值 |
Example 1
成功示例
1{
2 "Action": "DescribeGitBranchesBySha",
3 "DepotId": 1001,
4 "Sha": "bf778a27fa30a889a30af6362ba1f16a48dd58dd"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "f16f5a85-9b8d-42f3-84aa-d9061941bad5",
4 "Refs": [
5 {
6 "Ref": "master"
7 }
8 ]
9 }
10}
查询分支或标签的信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Revision | 是 | String | 分支或标签名 |
输出参数
参数名称 | 类型 | 描述 | |
---|---|---|---|
GitRef | GitRef | 分支对象 |
GitRef 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
DisplayName | String | 显示的名字 |
Name | String | 名字 |
ShortMessage | String | 短信息 |
FullMessage | String | 全信息 |
RefObjectId | String | 对应分支的ID |
ObjectId | String | 当前分支或标签的ID |
AnnotatedTag | bool | 是否是注释标签 |
Example 1
成功示例
1{
2 "Action": "DescribeGitRef",
3 "DepotId": 809883,
4 "Revision": "tag_one"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "772d0468-ae45-bd32-377a-8e2de57cf685",
4 "GitRef": {
5 "DisplayName": "refs/tags/tag_one",
6 "Name": "refs/tags/tag_one",
7 "ShortMessage": "",
8 "FullMessage": "",
9 "RefObjectId": "6efc794f0d694fed6cd033ddc984026887af258a",
10 "ObjectId": "8121d556dc3b30767d77a8e3fa814826976d2003",
11 "AnnotatedTag": true
12 }
13 }
14}
查询含有某次提交的标签或分支列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Sha | 是 | String | 提交 Id |
Type | 是 | String | 类型 (all、tag、branch) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Refs | Array of [GitReference] | 标签列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
GitReference 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Type | String | 类型 (tag/branch) |
Name | String | 标签/分支的名字 |
Example 1
成功示例
1{
2 "Action": "DescribeGitRefsBySha",
3 "DepotId": 2,
4 "Sha": "575489c9aed1698d11f1ed398e3c4cb3d45d2ca9",
5 "Type": "all"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "f2faf7f9-5e3b-8b6a-f10d-0bdc34493ff9",
4 "Refs": [
5 {
6 "Type": "branch",
7 "Name": "master"
8 },
9 {
10 "Type": "tag",
11 "Name": "2021.12.31"
12 }
13 ]
14 }
15}
将某次提交cherry-pick到指定分支
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Sha | 是 | String | 提交 Id |
BranchName | 是 | String | 分支名 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyGitCherryPick",
3 "DepotId": 2,
4 "BranchName": "dev",
5 "Sha": "f5b6163521c1dc562cf827af419137142e45f682"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "8b048fe5-eb93-e8aa-a239-b864d9abd660"
4 }
5}
查询两个分支的公共祖先
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
SrcRef | 是 | String | 分支1 |
DestRef | 是 | String | 分支2 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Commit | GitCommit | 提交信息 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
GitCommit 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
ShortMessage | String | 提交描述 |
Sha | String | 提交 Id |
CommitDate | String | 提交时间 |
Commiter | Commiter | 提交人 |
Example 1
成功示例
1{
2 "Action": "DescribeGitMergeBase",
3 "DepotId": 2,
4 "SrcRef": "master",
5 "DestRef": "dev"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "143c9ab0-eccb-436b-9a13-b67c1a415cf4",
4 "Commit": {
5 "ShortMessage": "emo.js\n",
6 "Sha": "ed8a9bc096be952b983625c1a6770449887d4e78",
7 "CommitDate": 1664429250000,
8 "Committer": {
9 "Email": "coding@coding.com",
10 "Name": "coding"
11 }
12 }
13 }
14}
删除已合并到默认分支的分支(此操作不会删除受保护的分支)
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteGitMergedBranches",
3 "DepotId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "8b048fe5-eb93-e8aa-a239-b864d9abd660"
4 }
5}
查询仓库的默认分支
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 否 | String | 仓库路径,与 DepotId 必须有一个是填写的,例如 team-name/project-name/depot-name 或 填写仓库 id 的字符串类型 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
BranchName | String | 分支名 |
Example 1
成功示例
1{
2 "Action": "DescribeDepotDefaultBranch",
3 "DepotPath": "codingcorp/project-d/depot-d"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "20b379d2-5ad8-4b70-ac63-e6cfbc4b354a",
4 "BranchName": "master"
5 }
6}
创建只读分支
接口描述
创建只读分支。
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
RefName | 是 | String | 分支名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateReadOnlyRef",
3 "DepotPath": "codingcorp/ll/py-git2",
4 "RefName": "45aa7e42829707fcc1dd137331956403480d2b66"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "6dd6f3da-999c-4ce2-96ef-cfca891fadd5"
4 }
5}
更改保护分支管理员权限
接口描述
更改保护分支管理员权限。
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
AllowPush | 是 | boolean | 是否直接推送 |
BranchRuleName | 是 | String | 分支名称 |
UserGlobalKey | 是 | String | 保护分支管理员 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyBranchProtectionMemberPermission",
3 "DepotPath": "codingcorp/a/test",
4 "AllowPush": true,
5 "BranchRuleName": "12",
6 "UserGlobalKey": "coding-coding"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "6dd6f3da-999c-4ce2-96ef-cfca891fadd5"
4 }
5}
添加保护分支成员
注意
对于已经开启新版保护分支规则的仓库,此 api 不再适用
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
BranchName | 是 | String | 分支名称 |
GlobalKey | 是 | String | 需要添加用户的 global_key |
Example 1
成功示例
1{
2 "Action": "CreateProtectedBranchMember",
3 "DepotId": 5001,
4 "BranchName": "master",
5 "GlobalKey": "GlobalKeyDemo"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "6f2811dc-dd28-f099-86cc-f15dbeb8fd0e"
4 }
5}
设置保护分支
注意
对于已经开启新版保护分支规则的仓库,此 api 不再适用
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
BranchName | 是 | String | 分支名称 |
Example 1
成功示例
1{
2 "Action": "CreateProtectedBranch",
3 "DepotId": 5001,
4 "BranchName": "master"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "2cf6e3b6-7fa7-0433-50b1-73e6226ac15b"
4 }
5}
查询所有保护分支
注意
对于已经开启新版保护分支规则的仓库,此 api 不再适用
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProtectedBranchs | ProtectedBranch | 保护分支列表 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
CommitDate | Integer | 提交时间戳,单位毫秒 |
DenyForcePush | bool | 是否禁止强制推送 |
ForceSquash | bool | 是否使用 squash 推送 |
Name | String | 名称 |
StatusCheck | bool | 是否开启状态检查 |
Example 1
成功示例
1{
2 "Action": "DescribeProtectedBranchs",
3 "DepotId": 5001
4}
成功示例
1{
2 "Response": {
3 "RequestId": "80ca5636-b61b-2419-15a2-0ca80e8f1acd",
4 "ProtectedBranchs": [
5 {
6 "CommitDate": 1602668567000,
7 "DenyForcePush": true,
8 "ForceSquash": false,
9 "Name": "master",
10 "StatusCheck": false
11 },
12 {
13 "CommitDate": 1601279380000,
14 "DenyForcePush": true,
15 "ForceSquash": false,
16 "Name": "branch1",
17 "StatusCheck": false
18 },
19 {
20 "CommitDate": 1601279380000,
21 "DenyForcePush": true,
22 "ForceSquash": false,
23 "Name": "branch2",
24 "StatusCheck": false
25 },
26 {
27 "CommitDate": 1601279380000,
28 "DenyForcePush": true,
29 "ForceSquash": false,
30 "Name": "branch3",
31 "StatusCheck": false
32 }
33 ]
34 }
35}
查询所有保护分支成员
注意
对于已经开启新版保护分支规则的仓库,此 api 不再适用
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
BranchName | 是 | String | 分支名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Members | ProtectedBranchMember | 保护分支用户列表 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
HasPushAccess | bool | 是否允许强制推送 |
HasUpdateAccess | bool | 是否允许合并修改分支 |
Name | String | 名称 |
GlobalKey | String | 用户 globalkey |
Example 1
成功示例
1{
2 "Action": "DescribeProtectedBranchMembers",
3 "DepotId": 5001
4}
成功示例
1{
2 "Response": {
3 "RequestId": "9aaf9eb9-f9fd-696b-ca60-4a6d4846ca3c",
4 "Members": [
5 {
6 "HasPushAccess": true,
7 "HasUpdateAccess": true,
8 "Name": "洋葱猴",
9 "GlobalKey": "coding-demo"
10 },
11 {
12 "HasPushAccess": true,
13 "HasUpdateAccess": true,
14 "Name": "洋葱猴2号",
15 "GlobalKey": "lSwLndttrs"
16 }
17 ]
18 }
19}
查询保护分支状态
注意
对于已经开启新版保护分支规则的仓库,此 api 不再适用
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
BranchName | 是 | String | 分支名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProtectedBranch | ProtectedBranch | 保护分支详情 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
CommitDate | Integer | 提交时间戳,单位毫秒 |
DenyForcePush | bool | 是否禁止强制推送 |
ForceSquash | bool | 是否使用 squash 推送 |
Name | String | 名称 |
StatusCheck | bool | 是否开启状态检查 |
Example 1
成功示例
1{
2 "Action": "DescribeProtectedBranch",
3 "DepotId": 5001,
4 "BranchName": "master"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "129c2dc2-223e-4ee6-0643-26a50fb4b5ba",
4 "ProtectedBranch": {
5 "CommitDate": 1601279380000,
6 "DenyForcePush": true,
7 "ForceSquash": false,
8 "Name": "master",
9 "StatusCheck": false
10 }
11 }
12}
git 变基操作
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BaseBranchName | 是 | String | 基底分支 |
SrcBranchName | 是 | String | 待变基分支 |
输出参数
参数名称 | 类型 | 描述 | |
---|---|---|---|
Example 1
成功示例
1{
2 "Action": "ModifyGitRebase",
3 "DepotId": 1,
4 "BaseBranchName": "master",
5 "SrcBranchName": "master-patch-1"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "c96a77a6-e366-f8b8-9d96-96d413d55414"
4 }
5}
查询保护分支规则列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
输出参数
参数名称 | 类型 | 描述 | |
---|---|---|---|
BranchProtections | BranchProtection[] | 保护分支规则列表 |
BranchProtection 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
BranchProtectionId | Integer | 保护分支规则 Id |
Rule | String | 保护分支规则 |
DenyForcePush | bool | 是否强制推送 |
ForceSquash | bool | 是否强制合并 |
RequiredGrantCount | Integer | 合并请求允许合并授权数量 |
RequiredStatusCheck | bool 是否开启状态检查 | |
MatcherCount | Integer | 匹配到的分支数量 |
SrcMustMergedTo | String | 必须合入某分支 |
RequiredCodeOwnerGrant | bool | 是否开启代码所有者评审 |
Example 1
成功示例
1{
2 "Action": "DescribeBranchProtections",
3 "DepotId": 809883
4}
成功示例
1{
2 "Response": {
3 "RequestId": "9fd71e2c-c7d1-5dfe-9667-cff5340a7941",
4 "BranchProtections": [
5 {
6 "BranchProtectionId": 28233,
7 "Rule": "master",
8 "DenyForcePush": true,
9 "ForceSquash": false,
10 "RequiredGrantCount": 1,
11 "RequiredStatusCheck": false,
12 "MatcherCount": 0,
13 "SrcMustMergedTo": "",
14 "RequiredCodeOwnerGrant": false
15 },
16 {
17 "BranchProtectionId": 28234,
18 "Rule": "dev/*",
19 "DenyForcePush": true,
20 "ForceSquash": false,
21 "RequiredGrantCount": 1,
22 "RequiredStatusCheck": false,
23 "MatcherCount": 0,
24 "SrcMustMergedTo": "",
25 "RequiredCodeOwnerGrant": false
26 }
27 ]
28 }
29}
查询保护分支规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BranchProtectionId | 是 | Integer | 保护分支规则 Id |
输出参数
参数名称 | 类型 | 描述 | |
---|---|---|---|
BranchProtection | BranchProtection | 保护分支规则 |
BranchProtection 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
BranchProtectionId | Integer | 保护分支规则 Id |
Rule | String | 保护分支规则 |
DenyForcePush | bool | 是否强制推送 |
ForceSquash | bool | 是否强制合并 |
RequiredGrantCount | Integer | 合并请求允许合并授权数量 |
RequiredStatusCheck | bool 是否开启状态检查 | |
MatcherCount | Integer | 匹配到的分支数量 |
SrcMustMergedTo | String | 必须合入某分支 |
RequiredCodeOwnerGrant | bool | 是否开启代码所有者评审 |
Example 1
成功示例
1{
2 "Action": "DescribeBranchProtection",
3 "DepotId": 809883,
4 "BranchProtectionId": 28234
5}
成功示例
1{
2 "Response": {
3 "RequestId": "c96a77a6-e366-f8b8-9d96-96d413d55414",
4 "BranchProtection": {
5 "BranchProtectionId": 28234,
6 "Rule": "dev/*",
7 "DenyForcePush": true,
8 "ForceSquash": false,
9 "RequiredGrantCount": 1,
10 "RequiredStatusCheck": false,
11 "MatcherCount": 0,
12 "SrcMustMergedTo": "",
13 "RequiredCodeOwnerGrant": false
14 }
15 }
16}
查询保护分支规则的管理员
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BranchProtectionId | 是 | Integer | 保护分支规则 Id |
输入参数
参数名称 | 类型 | 描述 |
---|---|---|
Members | Member[] | 成员列表 |
Member 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Name | String | 用户名 |
GlobalKey | String | 用户 globalKey |
AllowPush | bool | 允许直接推送 |
Example 1
成功示例
1{
2 "Action": "DescribeBranchProtectionMembers",
3 "DepotId": 809883,
4 "BranchProtectionId": 28250
5}
成功示例
1{
2 "Response": {
3 "RequestId": "3a8c60bd-14ff-65e2-2458-e0f7e92d56b4",
4 "Members": [
5 {
6 "Name": "Coding管理员1",
7 "GlobalKey": "coding",
8 "AllowPush": true
9 }
10 ]
11 }
12}
新建保护分支规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Rule | 是 | String | 保护分支规则 |
Example 1
成功示例
1{
2 "Action": "CreateBranchProtection",
3 "DepotId": 809883,
4 "Rule": "dev/*"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "c20cbf85-844c-6a7d-8f4d-99400db1e9e1"
4 }
5}
新建保护分支规则的成员
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BranchProtectionId | 是 | Integer | 保护分支规则 Id |
UserGlobalKey | 是 | String | 用户 globalKey |
AllowPush | 是 | bool | 允许直接推送 |
Example 1
成功示例
1{
2 "Action": "CreateBranchProtectionMember",
3 "DepotId": 809883,
4 "BranchProtectionId": 28234,
5 "UserGlobalKey": "coding",
6 "AllowPush": true
7}
成功示例
1{
2 "Response": {
3 "RequestId": "51e123c8-48af-72f9-ac98-dc32f393355f"
4 }
5}
修改保护分支规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
BranchProtectionId | 是 | Integer | 保护分支规则 Id |
Rule | 是 | String | 保护分支规则 |
DenyForcePush | 是 | bool | 是否强制推送 |
ForceSquash | 是 | bool | 是否强制合并 |
RequiredGrantCount | 是 | Integer | 合并请求允许合并授权数量 |
RequiredStatusCheck | 是 | bool 是否开启状态检查 | |
MatcherCount | 是 | Integer | 匹配到的分支数量 |
SrcMustMergedTo | 是 | String | 必须合入某分支 |
RequiredCodeOwnerGrant | 是 | bool | 是否开启代码所有者评审 |
输出参数
参数名称 | 类型 | 描述 | |
---|---|---|---|
BranchProtection | BranchProtection | 保护分支规则对象 |
BranchProtection 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
BranchProtectionId | Integer | 保护分支规则 Id |
Rule | String | 保护分支规则 |
DenyForcePush | bool | 是否强制推送 |
ForceSquash | bool | 是否强制合并 |
RequiredGrantCount | Integer | 合并请求允许合并授权数量 |
RequiredStatusCheck | bool 是否开启状态检查 | |
MatcherCount | Integer | 匹配到的分支数量 |
SrcMustMergedTo | String | 必须合入某分支 |
RequiredCodeOwnerGrant | bool | 是否开启代码所有者评审 |
Example 1
成功示例
1{
2 "Action": "ModifyBranchProtection",
3 "DepotId": 809883,
4 "BranchProtection": {
5 "BranchProtectionId": 28250,
6 "Rule": "dev/*",
7 "DenyForcePush": true,
8 "ForceSquash": false,
9 "RequiredGrantCount": 1,
10 "RequiredStatusCheck": false,
11 "MatcherCount": 0,
12 "SrcMustMergedTo": "",
13 "RequiredCodeOwnerGrant": false
14 }
15}
成功示例
1{
2 "Response": {
3 "RequestId": "93bd76b6-68aa-af54-2607-b637e53edb74",
4 "BranchProtection": {
5 "BranchProtectionId": 28250,
6 "Rule": "dev/*",
7 "DenyForcePush": true,
8 "ForceSquash": false,
9 "RequiredGrantCount": 1,
10 "RequiredStatusCheck": false,
11 "MatcherCount": 0,
12 "SrcMustMergedTo": "",
13 "RequiredCodeOwnerGrant": false
14 }
15 }
16}
删除保护分支规则
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BranchProtectionId | 是 | Integer | 保护分支 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteBranchProtection",
3 "DepotId": 2,
4 "BranchProtectionId": 10
5}
成功示例
1{
2 "Response": {
3 "RequestId": "b81757db-42dc-98f9-0f01-9d7c1abe0f50"
4 }
5}
删除保护分支规则的成员
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
BranchProtectionId | 是 | Integer | 保护分支规则 Id |
UserGlobalKey | 是 | String | 用户 globalKey |
Example 1
成功示例
1{
2 "Action": "DeleteBranchProtectionMember",
3 "DepotId": 809883,
4 "BranchProtectionId": 28234,
5 "UserGlobalKey": "coding"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "51e123c8-48af-72f9-ac98-dc32f393355f"
4 }
5}
获取合并请求提交记录
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
MergeId | 是 | Integer | 合并请求 id |
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Commits | Commit | 请求提交列表 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
ShortMessage | String | 提交消息 |
Sha | String | 提交 sha 值 |
CommitDate | Integer | 提交时间戳 |
Commiter | Commiter | 提交者 |
Commiter 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
String | email 地址 | |
Name | String | 姓名 |
Example 1
成功示例
1{
2 "Action": "DescribeMergeRequestCommits",
3 "DepotId": 46,
4 "MergeId": 5
5}
成功示例
1{
2 "Response": {
3 "RequestId": "e846cfdb-e842-08a5-7fa3-a484d63fa250",
4 "Commits": [
5 {
6 "ShortMessage": "commit-1\n",
7 "Sha": "7c86071af40405abad16c90dcf6cb72abcf8184d",
8 "CommitDate": 1604478235000,
9 "Commiter": {
10 "Email": "coding@coding.com",
11 "Name": "洋葱猴1"
12 }
13 },
14 {
15 "ShortMessage": "commit-2\n",
16 "Sha": "12908c5ab917d2b9829378cd21355d3a42df432a",
17 "CommitDate": 1604478219000,
18 "Commiter": {
19 "Email": "coding2@coding.com",
20 "Name": "洋葱猴2"
21 }
22 },
23 {
24 "ShortMessage": "commit-3\n",
25 "Sha": "568f4d10256685d3301e95557f2511e38336f38c",
26 "CommitDate": 1604478188000,
27 "Commiter": {
28 "Email": "coding3@coding.com",
29 "Name": "洋葱猴3"
30 }
31 }
32 ]
33 }
34}
查询合并请求详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
MergeId | 是 | Integer | 合并请求 id |
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
MergeRequestInfo | MergeRequestInfo | 合并相关信息 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Describe | String | 描述,为 markdown 格式 |
Status | String | 合并状态 |
Title | String | 合并标题 |
TargetBranch | String | 目标分支 |
SourceBranch | bool | 源分支 |
ProjectId | Integer | 项目ID |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 更新时间 |
Conflicts | Array of [String] | 冲突 |
TargetBranchSha | String | 目标分支提交id |
SourceBranchSha | String | 源分支提交id |
MergeCommitSha | String | 合并提交id |
Id | Integer | 合并请求id |
MergeId | String | 合并请求iid |
ActionAt | Long | 合并时间 |
Author | User | 创建者 |
CommentCount | Integer | 评论数 |
Granted | Integer | 授权数 |
Labels | Array of [String] | 标签列表 |
Path | String | 合并请求 web 页面路径 |
Reviewers | Array of [User] | 评审者类表 |
TargetBranchProtected | bool | 目标分支是否为保护分支 |
Reminded | bool | 是否提醒 |
DepotId | Integer | 仓库ID |
BaseSha | String | 基础Sha |
StickingPoint | String | MR阻塞点 |
合并状态值
值 | 对应状态 |
---|---|
CANMERGE | 状态可自动合并 |
ACCEPTED | 状态已接受 |
CANNOTMERGE | 状态不可自动合并 |
REFUSED | 状态已拒绝(关闭) |
CANCEL | 取消 |
MERGING | 正在合并中 |
ABNORMAL | 状态异常 |
Example 1
成功示例
1{
2 "Action": "DescribeMergeRequest",
3 "DepotId": 46,
4 "MergeId": 5
5}
成功示例
1{
2 "Response": {
3 "RequestId": "bcc8760c-5abf-ab67-f88c-f29befab2c8e",
4 "MergeRequestInfo": {
5 "Describe": "## 改动说明\n[scheduler]仓库导入同步。开发人员:@洋葱猴`\n## 测试要点\n\n无",
6 "Status": "ACCEPTED",
7 "Title": "测试合并",
8 "TargetBranch": "master",
9 "SourceBranch": "dev",
10 "ActionAt": 1663728111000,
11 "ActionAuthor": {
12 "Id": 0,
13 "TeamId": 0,
14 "Name": "",
15 "Email": "",
16 "GlobalKey": "",
17 "Status": "UNKNOWN",
18 "Avatar": ""
19 },
20 "Author": {
21 "Id": 2,
22 "TeamId": 0,
23 "Name": "coding",
24 "Email": "",
25 "GlobalKey": "coding-coding",
26 "Status": "INACTIVE",
27 "Avatar": "/static/fruit_avatar/Fruit-20.png"
28 },
29 "CommentCount": 0,
30 "CreatedAt": 1663728111000,
31 "Granted": 0,
32 "Id": 1,
33 "MergeId": 1,
34 "Labels": [
35 "标签1"
36 ],
37 "Path": "/p/project-d/d/depot-1/git/merge/1",
38 "Reviewers": [
39 {
40 "Id": 3,
41 "TeamId": 0,
42 "Name": "admin",
43 "Email": "",
44 "GlobalKey": "coding-admin",
45 "Status": "INACTIVE",
46 "Avatar": "/static/fruit_avatar/Fruit-20.png"
47 },
48 {
49 "Id": 4,
50 "TeamId": 0,
51 "Name": "user",
52 "Email": "",
53 "GlobalKey": "coding-user",
54 "Status": "INACTIVE",
55 "Avatar": "/static/fruit_avatar/Fruit-20.png"
56 }
57 ],
58 "UpdatedAt": 1663729163000,
59 "TargetBranchProtected": false,
60 "Reminded": false,
61 "DepotId": 1,
62 "ProjectId": 1,
63 "BaseSha": "xxxxxxxx",
64 "MergeCommitSha": "xxxxxxxx",
65 "SourceBranchSha": "xxxxxxxx",
66 "TargetBranchSha": "xxxxxxxx",
67 "StickingPoint": "MERGE_FAILED"
68 }
69 }
70}
获取合并请求文件修改记录
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
MergeId | 是 | Integer | 合并请求 id |
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
MergeRequestFileDiff | MergeRequestFileDiff | 文件修改记录 |
MergeRequestFileDiff 参数详情
参数名称 | 类型 | 描述 |
---|---|---|
FileDiffs | FileDiff | 文件差别列表 |
Deletions | Integer | 总删除行数 |
Insertions | Integer | 总新增行数 |
OldSha | String | 旧请求的 sha 值 |
NewSha | String | 新请求的 sha 值 |
FileDiff 参数详情
参数名称 | 类型 | 描述 |
---|---|---|
ChangeType | String | 操作类型 |
Deletions | Integer | 总删除行数 |
Insertions | Integer | 总新增行数 |
ObjectId | String | objectId |
Path | String | 文件路径 |
DiffLines | Array of [DifferentLine] | 文件差异 |
ChangeType 参数详情
值 | 状态 |
---|---|
ADD | 添加 |
MODIFY | 修改 |
DELETE | 删除 |
REPLACE | 替换 |
DifferentLine 参数详情
参数名称 | 类型 | 描述 |
---|---|---|
参数名称 | 类型 | 描述 |
Index | Integer | 排序号,由小到大递增 |
LeftNo | Integer | 操作起始行号 |
Prefix | Integer | 操作方式:"+"表示新增,"-"表示删除," "表示不变 |
RightNo | Integer | 操作结束行号 |
Text | String | 文本 |
Example 1
成功示例
1{
2 "Action": "DescribeMergeRequestFileDiff",
3 "DepotId": 46,
4 "MergeId": 5
5}
成功示例
1{
2 "Response": {
3 "RequestId": "7dc24d8c-7dbc-3f62-0571-39c92a347ba4",
4 "MergeRequestFileDiff": {
5 "FileDiffs": [
6 {
7 "ChangeType": "ADD",
8 "Deletions": 0,
9 "Insertions": 1,
10 "ObjectId": "4868155eaef0a678c55181286d89fd85c4261631",
11 "Path": "demo.txt",
12 "DiffLines": [
13 {
14 "Index": 0,
15 "LeftNo": 0,
16 "Prefix": "",
17 "RightNo": 0,
18 "Text": "@@ -1 +1,12 @@\n"
19 },
20 {
21 "Index": 1,
22 "LeftNo": 1,
23 "Prefix": "-",
24 "RightNo": 1,
25 "Text": "bbbbb\\ No newline at end of file"
26 }
27 ]
28 },
29 {
30 "ChangeType": "DELETE",
31 "Deletions": 1,
32 "Insertions": 0,
33 "ObjectId": "00092a3577f35a6482ab92fa4061cfaf22c1e4d1",
34 "Path": "demo2.txt",
35 "DiffLines": [
36 {
37 "Index": 0,
38 "LeftNo": 0,
39 "Prefix": "",
40 "RightNo": 0,
41 "Text": "@@ -1 +1,12 @@\n"
42 }
43 ]
44 },
45 {
46 "ChangeType": "ADD",
47 "Deletions": 0,
48 "Insertions": 1,
49 "ObjectId": "4d24b63b49b0759406294ee9fb9986ed0606bb39",
50 "Path": "demo3.txt",
51 "DiffLines": [
52 {
53 "Index": 1,
54 "LeftNo": 1,
55 "Prefix": "-",
56 "RightNo": 1,
57 "Text": "bbbbb\\ No newline at end of file"
58 }
59 ]
60 }
61 ],
62 "Deletions": 1,
63 "Insertions": 2,
64 "OldSha": "b1c78397d7465a719b92ba41adac6e1c8bccfcdb",
65 "NewSha": "7c86071af40405abad16c90dcf6cb72abcf8184d"
66 }
67 }
68}
获取合并请求操作记录
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
MergeId | 是 | Integer | 合并请求 id |
DepotId | 是 | Integer | 仓库 id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Logs | MergeRequestLog | 操作记录列表 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID |
Action | String | 操作方式 |
Name | String | 操作用户姓名 |
Example 1
成功示例
1{
2 "Action": "DescribeMergeRequestLog",
3 "DepotId": 46,
4 "MergeId": 5
5}
成功示例
1{
2 "Response": {
3 "RequestId": "e9fb2397-f4c5-e3f7-4f10-5fe8aec3c6ae",
4 "Logs": [
5 {
6 "Id": 1280,
7 "Action": "create",
8 "Name": "洋葱猴1"
9 },
10 {
11 "Id": 1281,
12 "Action": "update_content",
13 "Name": "洋葱猴2"
14 }
15 ]
16 }
17}
创建 merge 请求
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Title | 是 | String | 合并请求标题 |
Reviewers | 否 | String | 评审者 |
Content | 是 | String | 合并请求内容 |
SrcBranch | 是 | String | 源分支 |
DestBranch | 是 | String | 目标分支 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
MergeInfo | MergeInfo | Merge信息 |
MergeInfo 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
ProjectId | Integer | 项目 Id |
DepotId | Integer | 仓库 Id |
MergeRequestId | Integer | 合并请求 IId |
MergeRequestUrl | String | 合并请求 web 地址 |
MergeRequestInfo | MergeRequestInfo | 合并请求详情 |
MergeRequestInfo 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Describe | String | 描述,为 markdown 格式 |
Status | String | 合并状态 |
Title | String | 合并标题 |
TargetBranch | String | 目标分支 |
SourceBranch | bool | 源分支 |
ProjectId | Integer | 项目ID |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 更新时间 |
Conflicts | Array of [String] | 冲突 |
TargetBranchSha | String | 目标分支提交id |
SourceBranchSha | String | 源分支提交id |
MergeCommitSha | String | 合并提交id |
Id | Integer | 合并请求id |
MergeId | String | 合并请求iid |
ActionAt | Long | 合并时间 |
Author | User | 创建者 |
CommentCount | Integer | 评论数 |
Granted | Integer | 授权数 |
Labels | Array of [String] | 标签列表 |
Path | String | 合并请求 web 页面路径 |
Reviewers | Array of [User] | 评审者类表 |
TargetBranchProtected | bool | 目标分支是否为保护分支 |
Reminded | bool | 是否提醒 |
DepotId | Integer | 仓库ID |
BaseSha | String | 基础Sha |
StickingPoint | String | MR阻塞点 |
合并状态值
值 | 对应状态 |
---|---|
CANMERGE | 状态可自动合并 |
ACCEPTED | 状态已接受 |
CANNOTMERGE | 状态不可自动合并 |
REFUSED | 状态已拒绝(关闭) |
CANCEL | 取消 |
MERGING | 正在合并中 |
ABNORMAL | 状态异常 |
Example 1
成功示例
1{
2 "Action": "CreateGitMergeReq",
3 "DepotId": 809883,
4 "Title": "Hello",
5 "Content": "Hello",
6 "SrcBranch": "dev/branch1",
7 "DestBranch": "release",
8 "Reviewers": "admin,user"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "042b8230-87bc-d8aa-20d5-daa06fd319a6",
4 "MergeInfo": {
5 "ProjectId": 797199,
6 "DepotId": 809883,
7 "MergeRequestId": 11,
8 "MergeRequestInfo": {
9 "Describe": "## 改动说明\n[scheduler]仓库导入同步。开发人员:@洋葱猴`\n## 测试要点\n\n无",
10 "Status": "ACCEPTED",
11 "Title": "测试合并",
12 "TargetBranch": "master",
13 "SourceBranch": "dev",
14 "ActionAt": 1663728111000,
15 "ActionAuthor": {
16 "Id": 0,
17 "TeamId": 0,
18 "Name": "",
19 "Email": "",
20 "GlobalKey": "",
21 "Status": "UNKNOWN",
22 "Avatar": ""
23 },
24 "Author": {
25 "Id": 2,
26 "TeamId": 0,
27 "Name": "coding",
28 "Email": "",
29 "GlobalKey": "coding-coding",
30 "Status": "INACTIVE",
31 "Avatar": "/static/fruit_avatar/Fruit-20.png"
32 },
33 "CommentCount": 0,
34 "CreatedAt": 1663728111000,
35 "Granted": 0,
36 "Id": 1,
37 "MergeId": 1,
38 "Labels": [
39 "标签1"
40 ],
41 "Path": "/p/project-d/d/depot-1/git/merge/1",
42 "Reviewers": [
43 {
44 "Id": 3,
45 "TeamId": 0,
46 "Name": "admin",
47 "Email": "",
48 "GlobalKey": "coding-admin",
49 "Status": "INACTIVE",
50 "Avatar": "/static/fruit_avatar/Fruit-20.png"
51 },
52 {
53 "Id": 4,
54 "TeamId": 0,
55 "Name": "user",
56 "Email": "",
57 "GlobalKey": "coding-user",
58 "Status": "INACTIVE",
59 "Avatar": "/static/fruit_avatar/Fruit-20.png"
60 }
61 ],
62 "UpdatedAt": 1663729163000,
63 "TargetBranchProtected": false,
64 "Reminded": false,
65 "DepotId": 1,
66 "ProjectId": 1,
67 "BaseSha": "xxxxxxxx",
68 "MergeCommitSha": "xxxxxxxx",
69 "SourceBranchSha": "xxxxxxxx",
70 "TargetBranchSha": "xxxxxxxx",
71 "StickingPoint": "MERGE_FAILED"
72 }
73 }
74 }
75}
获取分支的合并状态
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
Source | 是 | String | 源分支 |
Target | 是 | String | 目标分支 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
MergeStatus | String | 合入状态 (NOT_MERGEABLE, FAILED, ALREADY_MERGED, MERGEABLE, MERGED, NO_MERGE_BASE) |
Example 1
成功示例
1{
2 "Action": "DescribeCanMerge",
3 "DepotId": 809883,
4 "Source": "dev/branch1",
5 "Target": "release"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "f4135d6c-9bc6-2dd6-97f4-b2a850dd9713",
4 "MergeStatus": "MERGEABLE"
5 }
6}
关闭合并请求
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
MergeId | 是 | Integer | 合并请求id |
Example 1
成功示例
1{
2 "Action": "ModifyCloseMR",
3 "DepotId": 809883,
4 "MergeId": 12
5}
成功示例
1{
2 "Response": {
3 "RequestId": "5f988d01-e86c-53c6-1170-c2b67eb9d335"
4 }
5}
合入合并请求
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 id |
MergeId | 是 | Integer | 合并请求 id |
Message | 否 | String | 请求合入信息 |
IsDelSourceBranch | 否 | bool | 是否删除源分支 |
IsFastForward | 否 | bool | 是否启用 fastForward 模式 |
Squash | 否 | bool | 是否合并多个 commit 记录 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
MergeRequestInfo | MergeRequestInfo | 合并相关信息 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Describe | String | 描述,为 markdown 格式 |
Status | String | 合并状态 |
Title | String | 合并标题 |
TargetBranch | String | 目标分支 |
SourceBranch | bool | 源分支 |
ProjectId | Integer | 项目ID |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 更新时间 |
Conflicts | Array of [String] | 冲突 |
TargetBranchSha | String | 目标分支提交id |
SourceBranchSha | String | 源分支提交id |
MergeCommitSha | String | 合并提交id |
Id | Integer | 合并请求id |
MergeId | String | 合并请求iid |
ActionAt | Long | 合并时间 |
Author | User | 创建者 |
CommentCount | Integer | 评论数 |
Granted | Integer | 授权数 |
Labels | Array of [String] | 标签列表 |
Path | String | 合并请求 web 页面路径 |
Reviewers | Array of [User] | 评审者类表 |
TargetBranchProtected | bool | 目标分支是否为保护分支 |
Reminded | bool | 是否提醒 |
DepotId | Integer | 仓库ID |
BaseSha | String | 基础Sha |
StickingPoint | String | MR阻塞点 |
合并状态值
值 | 对应状态 |
---|---|
CANMERGE | 状态可自动合并 |
ACCEPTED | 状态已接受 |
CANNOTMERGE | 状态不可自动合并 |
REFUSED | 状态已拒绝(关闭) |
CANCEL | 取消 |
MERGING | 正在合并中 |
ABNORMAL | 状态异常 |
Example 1
成功示例
1{
2 "Action": "ModifyMergeMR",
3 "DepotId": 809883,
4 "MergeId": 14,
5 "Message": "Hello",
6 "IsDelSourceBranch": true,
7 "IsFastForward": false,
8 "Squash": false
9}
成功示例
1{
2 "Response": {
3 "RequestId": "5f988d01-e86c-53c6-1170-c2b67eb9d335",
4 "MergeRequestInfo": {
5 "Describe": "## 改动说明\n[scheduler]仓库导入同步。开发人员:@洋葱猴`\n## 测试要点\n\n无",
6 "Status": "ACCEPTED",
7 "Title": "测试合并",
8 "TargetBranch": "master",
9 "SourceBranch": "dev",
10 "ActionAt": 1663728111000,
11 "ActionAuthor": {
12 "Id": 0,
13 "TeamId": 0,
14 "Name": "",
15 "Email": "",
16 "GlobalKey": "",
17 "Status": "UNKNOWN",
18 "Avatar": ""
19 },
20 "Author": {
21 "Id": 2,
22 "TeamId": 0,
23 "Name": "coding",
24 "Email": "",
25 "GlobalKey": "coding-coding",
26 "Status": "INACTIVE",
27 "Avatar": "/static/fruit_avatar/Fruit-20.png"
28 },
29 "CommentCount": 0,
30 "CreatedAt": 1663728111000,
31 "Granted": 0,
32 "Id": 1,
33 "MergeId": 1,
34 "Labels": [
35 "标签1"
36 ],
37 "Path": "/p/project-d/d/depot-1/git/merge/1",
38 "Reviewers": [
39 {
40 "Id": 4,
41 "TeamId": 0,
42 "Name": "user",
43 "Email": "",
44 "GlobalKey": "coding-user",
45 "Status": "INACTIVE",
46 "Avatar": "/static/fruit_avatar/Fruit-20.png"
47 }
48 ],
49 "UpdatedAt": 1663729163000,
50 "TargetBranchProtected": false,
51 "Reminded": false,
52 "DepotId": 1,
53 "ProjectId": 1,
54 "BaseSha": "xxxxxxxx",
55 "MergeCommitSha": "xxxxxxxx",
56 "SourceBranchSha": "xxxxxxxx",
57 "TargetBranchSha": "xxxxxxxx",
58 "StickingPoint": "MERGE_FAILED"
59 }
60 }
61}
合并请求中的源分支进行rebase操作
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
MergeId | 是 | Integer | 合并请求 IId |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyGitMergeRequestRebase",
3 "DepotId": 2,
4 "MergeId": 2
5}
成功示例
1{
2 "Response": {
3 "RequestId": "fd409d06-9765-c2d5-28e7-bee9cfca19c2"
4 }
5}
查询合并请求的参与者
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
MergeId | 是 | Integer | 合并请求 IId |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Participants | Array of [User] | 参与者列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
User 参数详解
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
TeamId | Integer | 团队 Id |
Name | String | 用户名 |
String | 用户电子邮箱 | |
GlobalKey | String | 全局 Key |
Status | String | 用户状态 |
Avatar | String | 用户图标 |
Example 1
成功示例
1{
2 "Action": "DescribeGitMergeRequestParticipants",
3 "DepotId": 2,
4 "MergeId": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "33affd68-fb4f-d677-0a75-1c1abf78bd2a",
4 "Participants": [
5 {
6 "Id": 2,
7 "TeamId": 1,
8 "Name": "coding",
9 "Email": "coding@coding.com",
10 "GlobalKey": "coding-coding",
11 "Status": "INACTIVE",
12 "Avatar": "/static/fruit_avatar/Fruit-20.png"
13 }
14 ]
15 }
16}
查询合并请求 diff 信息的文件列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
MergeId | 是 | Integer | 合并请求 IId |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Diff | MrDiff | diff 信息概览 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
MrDiff 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
IsLarge | Boolean | diff 信息是否过多,不宜于展示 |
Insertions | Integer | 一共新增行数 |
Deletions | Integer | 一共减少行数 |
OldSha | String | 目标分支对应的Sha值 |
NewSha | String | 源分支对应的Sha值 |
Paths | Array of [MrDiffFile] | 标签信息 |
MrDiffFile 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Path | String | 文件路径 |
BlobSha | String | 文件对应的 blob Id |
Size | Integer | 文件大小(字节) |
ChangeType | String | 文件改动类型 |
Deletions | Integer | 文件删除的行数 |
Insertions | Integer | 文件新增的行数 |
Example 1
成功示例
1{
2 "Action": "DescribeGitMergeRequestDiffs",
3 "DepotId": 2,
4 "MergeId": 2
5}
成功示例
1{
2 "Response": {
3 "RequestId": "7171c2a8-4bb1-d88b-470d-e921bdb18188",
4 "Diff": {
5 "IsLarge": false,
6 "Insertions": 1,
7 "Deletions": 0,
8 "OldSha": "125e0345107601d7e3d451032e6a40ecf0b4c548",
9 "NewSha": "e06ebced0f890db2265b8362b3e3f24f30374413",
10 "Paths": [
11 {
12 "Path": "src/qw.js",
13 "BlobSha": "81f4282e8e0bcd8f765ca96b7ef2b8b9050f4a97",
14 "Size": 2,
15 "ChangeType": "ADD",
16 "Deletions": 0,
17 "Insertions": 1
18 }
19 ]
20 }
21 }
22}
查询合并请求文件的 diff 详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
MergeId | 是 | Integer | 合并请求 IId |
Path | 是 | String | 文件路径 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Detail | GitDiff | 合并请求某文件的diff信息 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
GitDiff 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Path | String | 文件路径 |
Content | String | diff内容 |
Lines | Array of [Line] | 页面展示diff信息的集合 |
NewMode | String | 修改后文件权限 |
OldMode | String | 修改前文件权限 |
ChangeType | String | 文件修改类型 |
Insertions | Integer | 文件新增行数 |
Deletions | Integer | 文件删除行数 |
Example 1
成功示例
1{
2 "Action": "DescribeGitMergeRequestDiffDetail",
3 "DepotId": 2,
4 "Path": "source/test.dart",
5 "MergeId": 1
6}
成功示例
1{
2 "Response": {
3 "RequestId": "10534565-3d16-c847-9a0d-2fc0752b80a3",
4 "Detail": {
5 "Path": "source/test.dart",
6 "Content": "diff --git a/source/test.dart b/source/test.dart\nnew file mode 100644\nindex 0000000..c1cac2d\n--- /dev/null\n+++ b/source/test.dart\n@@ -0,0 +1 @@\n+this is a test file.\n\\ No newline at end of file",
7 "Lines": [
8 {
9 "Index": 0,
10 "LeftNo": 0,
11 "Prefix": "\u0000",
12 "RightNo": 0,
13 "Text": "@@ -0,0 +1 @@\n"
14 },
15 {
16 "Index": 1,
17 "LeftNo": 1,
18 "Prefix": "+",
19 "RightNo": 1,
20 "Text": "this is a test file.\\ No newline at end of file"
21 }
22 ],
23 "NewMode": "100644",
24 "OldMode": "0",
25 "ChangeType": "add",
26 "Insertions": 1,
27 "Deletions": 0
28 }
29 }
30}
查询含有某次提交的合并请求
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Sha | 是 | String | 提交 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Details | Array of [MergeRequestDetail] | 合并请求详情列表 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
MergeRequestDetail 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 合并请求 Id |
MergeId | Integer | 合并请求 Iid |
DepotId | Integer | 仓库 Id |
Title | String | 合并请求标题 |
Content | String | 合并请求描述 |
ContentHtml | String | 合并请求描述(html 格式) |
Author | User | 合并请求创建人 |
MergeStatus | String | 合并请求状态 |
CreateAt | Long | 创建时间 |
UpdateAt | Long | 更新时间 |
ActionAt | Long | 是否允许合并时间 |
ActionAuthor | User | 合并人 |
SourceBranch | String | 源分支名 |
TargetBranch | String | 目标分支名 |
SourceSha | String | 源分支 Sha |
TargetSha | String | 目标分支 Sha |
MergedSha | String | 合并 Sha |
Example 1
成功示例
1{
2 "Action": "DescribeGitMergeRequestsBySha",
3 "DepotId": 2,
4 "Sha": "a9891701d0cfea86339cae013c1401ef0ed8edef"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "ceca62de-5742-08f1-91f5-05f103fd228b",
4 "Details": [
5 {
6 "Id": 1,
7 "MergeId": 1,
8 "DepotId": 2,
9 "Title": "test merge title",
10 "Content": "test merge description",
11 "ContentHtml": "<p>test merge description</p>",
12 "Author": {
13 "Id": 2,
14 "TeamId": 1,
15 "Name": "coding",
16 "Email": "coding@coding.com",
17 "GlobalKey": "coding-coding",
18 "Status": "INACTIVE",
19 "Avatar": "/static/fruit_avatar/Fruit-20.png"
20 },
21 "MergeStatus": "CANMERGE",
22 "CreateAt": 1642140131000,
23 "UpdateAt": 1642140131000,
24 "ActionAt": 1642140131000,
25 "ActionAuthor": {
26 "Id": 0,
27 "TeamId": 0,
28 "Name": "",
29 "Email": "",
30 "GlobalKey": "",
31 "Status": "",
32 "Avatar": ""
33 },
34 "SourceBranch": "dev",
35 "TargetBranch": "master",
36 "SourceSha": "a9891701d0cfea86339cae013c1401ef0ed8edef",
37 "TargetSha": "6d19499a8f91da496c79acfa142f9a2b747ea76e",
38 "MergedSha": ""
39 }
40 ]
41 }
42}
修改合并请求的标题和描述信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
MergeId | 是 | Integer | 合并请求 IId |
Title | 是 | String | 合并请求标题 |
Content | 是 | String | 合并请求描述 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
MergeRequestInfo | MergeRequestInfo | 合并相关信息 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Describe | String | 描述,为 markdown 格式 |
Status | String | 合并状态 |
Title | String | 合并标题 |
TargetBranch | String | 目标分支 |
SourceBranch | bool | 源分支 |
ProjectId | Integer | 项目ID |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 更新时间 |
Conflicts | Array of [String] | 冲突 |
TargetBranchSha | String | 目标分支提交id |
SourceBranchSha | String | 源分支提交id |
MergeCommitSha | String | 合并提交id |
Id | Integer | 合并请求id |
MergeId | String | 合并请求iid |
ActionAt | Long | 合并时间 |
Author | User | 创建者 |
CommentCount | Integer | 评论数 |
Granted | Integer | 授权数 |
Labels | Array of [String] | 标签列表 |
Path | String | 合并请求 web 页面路径 |
Reviewers | Array of [User] | 评审者类表 |
TargetBranchProtected | bool | 目标分支是否为保护分支 |
Reminded | bool | 是否提醒 |
DepotId | Integer | 仓库ID |
BaseSha | String | 基础Sha |
StickingPoint | String | MR阻塞点 |
合并状态值
值 | 对应状态 |
---|---|
CANMERGE | 状态可自动合并 |
ACCEPTED | 状态已接受 |
CANNOTMERGE | 状态不可自动合并 |
REFUSED | 状态已拒绝(关闭) |
CANCEL | 取消 |
MERGING | 正在合并中 |
ABNORMAL | 状态异常 |
Example 1
成功示例
1{
2 "Action": "ModifyGitMergeRequest",
3 "DepotId": 2,
4 "MergeId": 1,
5 "Title": "modify mr title",
6 "Content": "modify mr content"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "b275dc2e-792e-d81b-2b61-7dc8e60aeb41",
4 "MergeRequestInfo": {
5 "Describe": "## 改动说明\n[scheduler]仓库导入同步。开发人员:@洋葱猴`\n## 测试要点\n\n无",
6 "Status": "ACCEPTED",
7 "Title": "测试合并",
8 "TargetBranch": "master",
9 "SourceBranch": "dev",
10 "ActionAt": 1663728111000,
11 "ActionAuthor": {
12 "Id": 0,
13 "TeamId": 0,
14 "Name": "",
15 "Email": "",
16 "GlobalKey": "",
17 "Status": "UNKNOWN",
18 "Avatar": ""
19 },
20 "Author": {
21 "Id": 2,
22 "TeamId": 0,
23 "Name": "coding",
24 "Email": "",
25 "GlobalKey": "coding-coding",
26 "Status": "INACTIVE",
27 "Avatar": "/static/fruit_avatar/Fruit-20.png"
28 },
29 "CommentCount": 0,
30 "CreatedAt": 1663728111000,
31 "Granted": 0,
32 "Id": 1,
33 "MergeId": 1,
34 "Labels": [
35 "标签1"
36 ],
37 "Path": "/p/project-d/d/depot-1/git/merge/1",
38 "Reviewers": [
39 {
40 "Id": 3,
41 "TeamId": 0,
42 "Name": "admin",
43 "Email": "",
44 "GlobalKey": "coding-admin",
45 "Status": "INACTIVE",
46 "Avatar": "/static/fruit_avatar/Fruit-20.png"
47 },
48 {
49 "Id": 4,
50 "TeamId": 0,
51 "Name": "user",
52 "Email": "",
53 "GlobalKey": "coding-user",
54 "Status": "INACTIVE",
55 "Avatar": "/static/fruit_avatar/Fruit-20.png"
56 }
57 ],
58 "UpdatedAt": 1663729163000,
59 "TargetBranchProtected": false,
60 "Reminded": false,
61 "DepotId": 1,
62 "ProjectId": 1,
63 "BaseSha": "xxxxxxxx",
64 "MergeCommitSha": "xxxxxxxx",
65 "SourceBranchSha": "xxxxxxxx",
66 "TargetBranchSha": "xxxxxxxx",
67 "StickingPoint": "MERGE_FAILED"
68 }
69 }
70}
查询仓库下的合并请求列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Status | 否 | String | 合并请求状态 open/close/all |
CreatorGlobalKeys | 否 | Array of [String] | 合并请求创建者全局 key 列表 |
MergerGlobalKeys | 否 | Array of [String] | 合并请求合并者全局 key 列表 |
ReviewerGlobalKeys | 否 | Array of [String] | 合并请求评审者全局 key 列表 |
Sort | 否 | String | 排序 action_at:以更新时间排序 created_at:以创建时间排序 |
IsSortDirectionAsc | 否 | Boolean | 是否正序排序 默认 false |
KeyWord | 否 | String | 关键词 |
Labels | 否 | Array of [String] | 标签列表 |
TargetBranches | 否 | Array of [String] | 欲合入分支列表 |
PageNumber | 否 | Integer | 页数 默认 1 |
PageSize | 否 | Integer | 每页条数 默认 10 |
CreatorEmails | 否 | Array of [String] | 合并请求创建者邮箱列表 |
MergerEmails | 否 | Array of [String] | 合并请求合并者邮箱列表 |
ReviewerEmails | 否 | Array of [String] | 合并请求评审者邮箱列表 |
SourceBranches | 否 | Array of [String] | 源分支列表 |
CreatedAtStartDate | 否 | String | 查询mr创建开始时间 |
CreatedAtEndDate | 否 | String | 查询mr创建结束时间 |
UpdatedAtStartDate | 否 | String | 查询mr更新开始时间 |
UpdatedAtEndDate | 否 | String | 查询mr更新结束时间 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeMergeRequestsData | 合并请求信息 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
DescribeMergeRequestsData 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
List | Array of [MergeRequestData] | 合并请求列表 |
PageNumber | Integer | 页数 |
PageSize | Integer | 每页条数 |
TotalPage | Integer | 总页数 |
TotalRow | Integer | 总条数 |
MergeRequestData 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
ActionAt | Long | 合并时间 |
ActionAuthor | User | 合并者 |
Author | User | 创建者 |
CommentCount | Integer | 评论数 |
CreatedAt | Long | 创建时间 |
DesBranch | String | 目标分支(旧) |
Granted | Integer | 授权数 |
Id | Integer | 合并请求 Id |
MergeId | Integer | 合并请求 IId |
Labels | Array of [String] | 标签列表 |
Status | String | 合并请求状态 |
Path | String | 合并请求 web 页面路径 |
Reviewers | Array of [User] | 评审者列表 |
SrcBranch | String | 源分支(旧) |
Title | String | 合并请求标题 |
UpdateAt | Long | 更新时间 |
TargetBranchProtected | Boolean | 目标分支是否保护分支 |
Reminded | Boolean | 是否提醒 |
DepotId | Integer | 仓库 Id |
Describe | String | 描述,为 markdown 格式 |
BaseSha | String | 基础Sha |
TargetBranchSha | String | 目标分支提交id |
SourceBranchSha | String | 源分支提交id |
MergeCommitSha | String | 合并提交id |
ProjectId | Integer | 项目ID |
StickingPoint | String | MR阻塞点 |
TargetBranch | String | 目标分支(新) |
SourceBranch | bool | 源分支(新) |
合并状态值
值 | 对应状态 |
---|---|
CANMERGE | 状态可自动合并 |
ACCEPTED | 状态已接受 |
CANNOTMERGE | 状态不可自动合并 |
REFUSED | 状态已拒绝(关闭) |
CANCEL | 取消 |
MERGING | 正在合并中 |
ABNORMAL | 状态异常 |
Example 1
成功示例
1{
2 "Action": "DescribeDepotMergeRequests",
3 "DepotId": 2,
4 "Status": "open",
5 "CreatorGlobalKeys": [
6 "coding-coding"
7 ],
8 "MergerGlobalKeys": [],
9 "ReviewerGlobalKeys": [],
10 "Sort": "action_at",
11 "IsSortDirectionAsc": true,
12 "KeyWord": "modify",
13 "Labels": [
14 "label-1"
15 ],
16 "TargetBranches": [
17 "master"
18 ],
19 "CreatorEmails": [],
20 "MergerEmails": [],
21 "ReviewerEmails": [],
22 "SourceBranches": [
23 "master"
24 ],
25 "CreatedAtStartDate": "2023-06-01",
26 "CreatedAtEndDate": "2023-06-20",
27 "UpdatedAtStartDate": "2023-06-01",
28 "UpdatedAtEndDate": "2023-06-20",
29 "PageNumber": 1,
30 "PageSize": 10
31}
成功示例
1{
2 "Response": {
3 "RequestId": "f30370a3-6ce1-6207-34c8-8c4e462f7064",
4 "Data": {
5 "List": [
6 {
7 "ActionAt": 1642142065000,
8 "ActionAuthor": {
9 "Id": 0,
10 "TeamId": 0,
11 "Name": "",
12 "Email": "",
13 "GlobalKey": "",
14 "Status": "UNKNOWN",
15 "Avatar": ""
16 },
17 "Author": {
18 "Id": 2,
19 "TeamId": 0,
20 "Name": "coding",
21 "Email": "",
22 "GlobalKey": "coding-coding",
23 "Status": "INACTIVE",
24 "Avatar": "/static/fruit_avatar/Fruit-20.png"
25 },
26 "CommentCount": 0,
27 "CreatedAt": 1642140131000,
28 "DesBranch": "master",
29 "Granted": 0,
30 "Id": 1,
31 "MergeId": 1,
32 "Labels": [
33 "label-1"
34 ],
35 "Status": "CANMERGE",
36 "Path": "/p/project-d/d/extended_text/git/merge/1",
37 "Reviewers": [],
38 "SrcBranch": "dev",
39 "Title": "modify mr title",
40 "UpdateAt": 1642152009000,
41 "TargetBranchProtected": false,
42 "Reminded": false,
43 "DepotId": 2,
44 "ProjectId": 1,
45 "Describe": "MR描述",
46 "BaseSha": "xxxxxxxx",
47 "MergeCommitSha": "xxxxxxxx",
48 "SourceBranchSha": "xxxxxxxx",
49 "TargetBranchSha": "xxxxxxxx",
50 "StickingPoint": "MERGE_FAILED",
51 "TargetBranch": "master",
52 "SourceBranch": "dev"
53 }
54 ],
55 "PageNumber": 1,
56 "PageSize": 10,
57 "TotalPage": 1,
58 "TotalRow": 1
59 }
60 }
61}
查询项目下的合并请求列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
ProjectId | 是 | Integer | 项目 Id |
Status | 否 | String | 合并请求状态 open/close/all |
CreatorGlobalKeys | 否 | Array of [String] | 合并请求创建者全局 key 列表 |
MergerGlobalKeys | 否 | Array of [String] | 合并请求合并者全局 key 列表 |
ReviewerGlobalKeys | 否 | Array of [String] | 合并请求评审者全局 key 列表 |
Sort | 否 | String | 排序 action_at:以更新时间排序 created_at:以创建时间排序 |
IsSortDirectionAsc | 否 | Boolean | 是否正序排序 默认 false |
KeyWord | 否 | String | 关键词 |
Label | 否 | String | 标签 |
TargetBranch | 否 | String | 欲合入分支 |
PageNumber | 否 | Integer | 页数 默认 1 |
PageSize | 否 | Integer | 每页条数 默认 10 |
CreatorEmail | 否 | String | 合并请求创建者邮箱 |
MergerEmail | 否 | String | 合并请求合并者邮箱 |
ReviewerEmail | 否 | String | 合并请求评审者邮箱 |
SourceBranch | 否 | String | 源分支 |
CreatedAtStartDate | 否 | String | 查询mr创建开始时间 |
CreatedAtEndDate | 否 | String | 查询mr创建结束时间 |
UpdatedAtStartDate | 否 | String | 查询mr更新开始时间 |
UpdatedAtEndDate | 否 | String | 查询mr更新结束时间 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeMergeRequestsData | 合并请求信息 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
DescribeMergeRequestsData 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
List | Array of [MergeRequestData] | 合并请求列表 |
PageNumber | Integer | 页数 |
PageSize | Integer | 每页条数 |
TotalPage | Integer | 总页数 |
TotalRow | Integer | 总条数 |
MergeRequestData 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
ActionAt | Long | 合并时间 |
ActionAuthor | User | 合并者 |
Author | User | 创建者 |
CommentCount | Integer | 评论数 |
CreatedAt | Long | 创建时间 |
DesBranch | String | 目标分支(旧) |
Granted | Integer | 授权数 |
Id | Integer | 合并请求 Id |
MergeId | Integer | 合并请求 IId |
Labels | Array of [String] | 标签列表 |
Status | String | 合并请求状态 |
Path | String | 合并请求 web 页面路径 |
Reviewers | Array of [User] | 评审者列表 |
SrcBranch | String | 源分支(旧) |
Title | String | 合并请求标题 |
UpdateAt | Long | 更新时间 |
TargetBranchProtected | Boolean | 目标分支是否保护分支 |
Reminded | Boolean | 是否提醒 |
DepotId | Integer | 仓库 Id |
Describe | String | 描述,为 markdown 格式 |
BaseSha | String | 基础Sha |
TargetBranchSha | String | 目标分支提交id |
SourceBranchSha | String | 源分支提交id |
MergeCommitSha | String | 合并提交id |
ProjectId | Integer | 项目ID |
StickingPoint | String | MR阻塞点 |
TargetBranch | String | 目标分支(新) |
SourceBranch | bool | 源分支(新) |
合并状态值
值 | 对应状态 |
---|---|
CANMERGE | 状态可自动合并 |
ACCEPTED | 状态已接受 |
CANNOTMERGE | 状态不可自动合并 |
REFUSED | 状态已拒绝(关闭) |
CANCEL | 取消 |
MERGING | 正在合并中 |
ABNORMAL | 状态异常 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectMergeRequests",
3 "ProjectId": 1,
4 "Status": "open",
5 "CreatorGlobalKey": "coding-coding",
6 "MergerGlobalKey": "",
7 "ReviewerGlobalKey": "",
8 "Sort": "action_at",
9 "IsSortDirectionAsc": true,
10 "KeyWord": "modify",
11 "Label": "label-1",
12 "TargetBranch": "master",
13 "CreatorEmail": "",
14 "MergerEmail": "",
15 "ReviewerEmail": "",
16 "SourceBranch": "master",
17 "CreatedAtStartDate": "2023-06-01",
18 "CreatedAtEndDate": "2023-06-20",
19 "UpdatedAtStartDate": "2023-06-01",
20 "UpdatedAtEndDate": "2023-06-20"
21}
成功示例
1{
2 "Response": {
3 "RequestId": "7b87916c-7241-bf06-74a6-6360375ba17b",
4 "Data": {
5 "List": [
6 {
7 "ActionAt": 1642142065000,
8 "ActionAuthor": {
9 "Id": 0,
10 "TeamId": 0,
11 "Name": "",
12 "Email": "",
13 "GlobalKey": "",
14 "Status": "UNKNOWN",
15 "Avatar": ""
16 },
17 "Author": {
18 "Id": 2,
19 "TeamId": 0,
20 "Name": "coding",
21 "Email": "",
22 "GlobalKey": "coding-coding",
23 "Status": "INACTIVE",
24 "Avatar": "/static/fruit_avatar/Fruit-20.png"
25 },
26 "CommentCount": 0,
27 "CreatedAt": 1642140131000,
28 "DesBranch": "master",
29 "Granted": 0,
30 "Id": 1,
31 "MergeId": 1,
32 "Labels": [],
33 "Status": "CANMERGE",
34 "Path": "/p/project-d/d/extended_text/git/merge/1",
35 "Reviewers": [],
36 "SrcBranch": "dev",
37 "Title": "modify mr title",
38 "UpdateAt": 1642152009000,
39 "TargetBranchProtected": false,
40 "Reminded": false,
41 "DepotId": 2,
42 "ProjectId": 1,
43 "Describe": "MR描述",
44 "BaseSha": "xxxxxxxx",
45 "MergeCommitSha": "xxxxxxxx",
46 "SourceBranchSha": "xxxxxxxx",
47 "TargetBranchSha": "xxxxxxxx",
48 "StickingPoint": "MERGE_FAILED",
49 "TargetBranch": "master",
50 "SourceBranch": "dev"
51 }
52 ],
53 "PageNumber": 1,
54 "PageSize": 10,
55 "TotalPage": 1,
56 "TotalRow": 1
57 }
58 }
59}
查询自己的合并请求列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Status | 否 | String | 合并请求状态 open/close/all |
MergerGlobalKeys | 否 | Array of [String] | 合并请求合并者全局 key 列表 |
ReviewerGlobalKeys | 否 | Array of [String] | 合并请求评审者全局 key 列表 |
Sort | 否 | String | 排序 action_at:以更新时间排序 created_at:以创建时间排序 |
IsSortDirectionAsc | 否 | Boolean | 是否正序排序 默认 false |
KeyWord | 否 | String | 关键词 |
Label | 否 | String | 标签 |
TargetBranch | 否 | String | 欲合入分支 |
PageNumber | 否 | Integer | 页数 默认 1 |
PageSize | 否 | Integer | 每页条数 默认 10 |
SourceBranch | 否 | String | 源分支 |
CreatedAtStartDate | 否 | String | 查询mr创建开始时间 |
CreatedAtEndDate | 否 | String | 查询mr创建结束时间 |
UpdatedAtStartDate | 否 | String | 查询mr更新开始时间 |
UpdatedAtEndDate | 否 | String | 查询mr更新结束时间 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeMergeRequestsData | 合并请求信息 |
RequestId | String | 唯一请求 ID,每次请求都返回。定位问题时需提供该次请求的 RequestId。 |
DescribeMergeRequestsData 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
List | Array of [MergeRequestData] | 合并请求列表 |
PageNumber | Integer | 页数 |
PageSize | Integer | 每页条数 |
TotalPage | Integer | 总页数 |
TotalRow | Integer | 总条数 |
MergeRequestData 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
ActionAt | Long | 合并时间 |
ActionAuthor | User | 合并者 |
Author | User | 创建者 |
CommentCount | Integer | 评论数 |
CreatedAt | Long | 创建时间 |
DesBranch | String | 目标分支 |
Granted | Integer | 授权数 |
Id | Integer | 合并请求 Id |
MergeId | Integer | 合并请求 IId |
Labels | Array of [String] | 标签列表 |
Status | String | 合并请求状态 |
Path | String | 合并请求 web 页面路径 |
Reviewers | Array of [User] | 评审者列表 |
SrcBranch | String | 源分支 |
Title | String | 合并请求标题 |
UpdateAt | Long | 更新时间 |
TargetBranchProtected | Boolean | 目标分支是否保护分支 |
Reminded | Boolean | 是否提醒 |
DepotId | Integer | 仓库 Id |
Example 1
成功示例
1{
2 "Action": "DescribeSelfMergeRequests",
3 "Status": "open",
4 "MergerGlobalKey": "",
5 "ReviewerGlobalKey": "",
6 "Sort": "action_at",
7 "IsSortDirectionAsc": true,
8 "KeyWord": "modify",
9 "Label": "label-1",
10 "TargetBranch": "master",
11 "CreatedAtStartDate": "2023-06-01",
12 "CreatedAtEndDate": "2023-06-20",
13 "UpdatedAtStartDate": "2023-06-01",
14 "UpdatedAtEndDate": "2023-06-20",
15 "SourceBranch": "yy"
16}
成功示例
1{
2 "Response": {
3 "RequestId": "0f569eca-7575-e6fe-d02a-8d67d8c8b6be",
4 "Data": {
5 "List": [
6 {
7 "ActionAt": 1642142065000,
8 "ActionAuthor": {
9 "Id": 0,
10 "TeamId": 0,
11 "Name": "",
12 "Email": "",
13 "GlobalKey": "",
14 "Status": "UNKNOWN",
15 "Avatar": ""
16 },
17 "Author": {
18 "Id": 2,
19 "TeamId": 0,
20 "Name": "coding",
21 "Email": "",
22 "GlobalKey": "coding-coding",
23 "Status": "INACTIVE",
24 "Avatar": "/static/fruit_avatar/Fruit-20.png"
25 },
26 "CommentCount": 0,
27 "CreatedAt": 1642140131000,
28 "DesBranch": "master",
29 "Granted": 0,
30 "Id": 1,
31 "MergeId": 1,
32 "Labels": [],
33 "Status": "CANMERGE",
34 "Path": "/p/project-d/d/extended_text/git/merge/1",
35 "Reviewers": [],
36 "SrcBranch": "dev",
37 "Title": "modify mr title",
38 "UpdateAt": 1642152009000,
39 "TargetBranchProtected": false,
40 "Reminded": false,
41 "DepotId": 2
42 }
43 ],
44 "PageNumber": 1,
45 "PageSize": 10,
46 "TotalPage": 1,
47 "TotalRow": 1
48 }
49 }
50}
查询合并请求评审者列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 ID |
MergeId | 是 | Integer | 合并请求资源ID (页面合并请求列表中 #数字) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Reviewers | User[] | 评论者列表 |
User 详情
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 ID |
TeamId | Integer | 团队 ID |
Name | String | 用户名 |
String | 用户邮箱地址 | |
GlobalKey | String | 用户全局 Key |
Avatar | String | 用户头像 URI |
Example 1
成功示例
1{
2 "Action": "DescribeMergeRequestReviewers",
3 "MergeId": 1,
4 "DepotId": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "5cd3685f-be5d-4238-889d-7847a22a061e",
4 "Reviewers": [
5 {
6 "Id": 4,
7 "TeamId": 0,
8 "Name": "user",
9 "Email": "",
10 "GlobalKey": "coding-user",
11 "Status": "INACTIVE",
12 "Avatar": "/static/fruit_avatar/Fruit-20.png"
13 }
14 ]
15 }
16}
新增合并请求评审者
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 ID |
MergeId | 是 | Integer | 合并请求资源ID (页面合并请求列表中 #数字) |
ReviewerGlobalKey | 是 | String | 用户全局 Key |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Reviewers | User[] | 评论者列表 |
User 详情
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 ID |
TeamId | Integer | 团队 ID |
Name | String | 用户名 |
String | 用户邮箱地址 | |
GlobalKey | String | 用户全局 Key |
Avatar | String | 用户头像 URI |
Example 1
成功示例
1{
2 "Action": "CreateMergeRequestReviewer",
3 "DepotId": 1,
4 "MergeId": 1,
5 "ReviewerGlobalKey": "coding-coding"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "29ec9529-e03a-4a89-b71d-d988676e608e",
4 "Reviewers": [
5 {
6 "Id": 2,
7 "TeamId": 0,
8 "Name": "coding",
9 "Email": "",
10 "GlobalKey": "coding-coding",
11 "Status": "INACTIVE",
12 "Avatar": "/static/fruit_avatar/Fruit-20.png"
13 }
14 ]
15 }
16}
删除合并请求评审者
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 ID |
MergeId | 是 | Integer | 合并请求资源ID (页面合并请求列表中 #数字) |
ReviewerGlobalKey | 是 | String | 用户全局 Key |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Reviewers | User[] | 评论者列表 |
User 详情
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 ID |
TeamId | Integer | 团队 ID |
Name | String | 用户名 |
String | 用户邮箱地址 | |
GlobalKey | String | 用户全局 Key |
Avatar | String | 用户头像 URI |
Example 1
成功示例
1{
2 "Action": "DeleteMergeRequestReviewer",
3 "DepotId": 1,
4 "MergeId": 1,
5 "ReviewerGlobalKey": "coding-coding"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "29ec9529-e03a-4a89-b71d-d988676e608e",
4 "Reviewers": []
5 }
6}
创建合并请求评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
Form | 否 | MergeRequestDiffNoteForm | 创建Diff信息行评论表单 |
Content | 是 | String | 行评论内容 |
MergeId | 是 | Integer | 合并请求 id |
ParentId | 是 | Integer | 行评论的父亲Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Note | MergeRequestNote | 合并请求评论 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 行评论的Id |
Content | String | 行评论内容 |
Author | User | 行评论用户 |
CreatedAt | Integer | 行评论创建时间 |
UpdatedAt | Integer | 行评论更新时间 |
MergeId | Integer | 合并请求的Iid |
ParentId | Integer | 子评论的父Id |
CommitSha | String | 提交Id |
Index | Integer | diff信息中的行数 |
Path | String | 改动文件路径 |
Example 1
成功示例
1{
2 "Action": "CreateMergeRequestNote",
3 "DepotPath": "team-name/project-name/depot-name",
4 "Form": {
5 "CommitSha": "0752f87988bcedec2e0556d172010befa90e2561",
6 "Index": 10,
7 "Path": "README.md"
8 },
9 "Content": "你好",
10 "MergeId": 123,
11 "ParentId": 0
12}
成功示例
1{
2 "Response": {
3 "RequestId": "6e3d93db-fbe1-4088-bc02-2e040e4e47f9",
4 "Note": {
5 "Id": 555,
6 "Content": "你好",
7 "Author": {
8 "Id": 2,
9 "TeamId": 1,
10 "Name": "coding",
11 "Email": "coding@coding.com",
12 "GlobalKey": "coding-coding",
13 "Status": "INACTIVE",
14 "Avatar": "/static/fruit_avatar/Fruit-20.png"
15 },
16 "CreatedAt": 1670857162000,
17 "UpdatedAt": 1670857162000,
18 "MergeId": 6,
19 "ParentId": 555,
20 "CommitSha": "2cdefc16b38ad276d833f1a0dc6e24eea0adb258",
21 "Index": 3,
22 "Path": "src/main/main.java"
23 }
24 }
25}
删除合并请求评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
LineNoteId | 是 | Integer | 行评论Id |
MergeId | 是 | Integer | 合并请求的Iid |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Note | MergeRequestNote | 合并请求评论 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 行评论的Id |
Content | String | 行评论内容 |
Author | User | 行评论用户 |
CreatedAt | Integer | 行评论创建时间 |
UpdatedAt | Integer | 行评论更新时间 |
MergeId | Integer | 合并请求的Iid |
ParentId | Integer | 子评论的父Id |
CommitSha | String | 提交Id |
Index | Integer | diff信息中的行数 |
Path | String | 改动文件路径 |
Example 1
成功示例
1{
2 "Action": "DeleteMergeRequestNote",
3 "DepotPath": "team-name/project-name/depot-name",
4 "LineNoteId": 373,
5 "MergeId": 1
6}
成功示例
1{
2 "Response": {
3 "RequestId": "6e3d93db-fbe1-4088-bc02-2e040e4e47f9",
4 "Note": {
5 "Id": 373,
6 "Content": "你好",
7 "Author": {
8 "Id": 2,
9 "TeamId": 1,
10 "Name": "coding",
11 "Email": "coding@coding.com",
12 "GlobalKey": "coding-coding",
13 "Status": "INACTIVE",
14 "Avatar": "/static/fruit_avatar/Fruit-20.png"
15 },
16 "CreatedAt": 1670857162000,
17 "UpdatedAt": 1670857162000,
18 "MergeId": 1,
19 "ParentId": 0,
20 "CommitSha": "2cdefc16b38ad276d833f1a0dc6e24eea0adb258",
21 "Index": 3,
22 "Path": "src/main/main.java"
23 }
24 }
25}
获取单个合并请求评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
MergeId | 是 | Integer | 合并请求的Iid |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Notes | MergeRequestNoteList | 合并请求评论列表 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 行评论的Id |
Content | String | 行评论内容 |
Author | User | 行评论用户 |
CreatedAt | Integer | 行评论创建时间 |
UpdatedAt | Integer | 行评论更新时间 |
MergeId | Integer | 合并请求的Iid |
ParentId | Integer | 子评论的父Id |
CommitSha | String | 提交Id |
Index | Integer | diff信息中的行数 |
Path | String | 改动文件路径 |
Example 1
成功示例
1{
2 "Action": "DescribeSingeMergeRequestNotes",
3 "DepotPath": "team-name/project-name/depot-name",
4 "MergeId": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "6e3d93db-fbe1-4088-bc02-2e040e4e47f9",
4 "Notes": [
5 {
6 "Note": [
7 {
8 "Id": 712,
9 "Content": "ch",
10 "Author": {
11 "Id": 2,
12 "TeamId": 1,
13 "Name": "coding",
14 "Email": "coding@coding.com",
15 "GlobalKey": "coding-coding",
16 "Status": "INACTIVE",
17 "Avatar": "/static/fruit_avatar/Fruit-20.png"
18 },
19 "CreatedAt": 1670992946000,
20 "UpdatedAt": 1670992958000,
21 "MergeId": 25,
22 "ParentId": 0,
23 "CommitSha": "",
24 "Index": 0,
25 "Path": ""
26 },
27 {
28 "Id": 714,
29 "Content": "@coding cew",
30 "Author": {
31 "Id": 2,
32 "TeamId": 1,
33 "Name": "coding",
34 "Email": "coding@coding.com",
35 "GlobalKey": "coding-coding",
36 "Status": "INACTIVE",
37 "Avatar": "/static/fruit_avatar/Fruit-20.png"
38 },
39 "CreatedAt": 1670992958000,
40 "UpdatedAt": 1670992958000,
41 "MergeId": 25,
42 "ParentId": 712,
43 "CommitSha": "",
44 "Index": 0,
45 "Path": ""
46 }
47 ]
48 },
49 {
50 "Note": [
51 {
52 "Id": 713,
53 "Content": "c",
54 "Author": {
55 "Id": 2,
56 "TeamId": 1,
57 "Name": "coding",
58 "Email": "coding@coding.com",
59 "GlobalKey": "coding-coding",
60 "Status": "INACTIVE",
61 "Avatar": "/static/fruit_avatar/Fruit-20.png"
62 },
63 "CreatedAt": 1670992952000,
64 "UpdatedAt": 1670992952000,
65 "MergeId": 25,
66 "ParentId": 0,
67 "CommitSha": "b629921cd61e57ba698816c84986e4cee8675066",
68 "Index": 3,
69 "Path": "README.md"
70 },
71 {
72 "Id": 715,
73 "Content": "cja",
74 "Author": {
75 "Id": 2,
76 "TeamId": 1,
77 "Name": "coding",
78 "Email": "coding@coding.com",
79 "GlobalKey": "coding-coding",
80 "Status": "INACTIVE",
81 "Avatar": "/static/fruit_avatar/Fruit-20.png"
82 },
83 "CreatedAt": 1670998229000,
84 "UpdatedAt": 1670998229000,
85 "MergeId": 25,
86 "ParentId": 0,
87 "CommitSha": "b629921cd61e57ba698816c84986e4cee8675066",
88 "Index": 3,
89 "Path": "README.md"
90 }
91 ]
92 }
93 ]
94 }
95}
获取所有合并请求评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotPath | 是 | String | 仓库路径 |
MergeIds | 否 | Array of [Integer] | 合并请求的Iid列表 |
MrStatuses | 否 | Array of [String] | 合并请求的状态列表 |
ReporterIds | 否 | Array of [Integer] | 合并请求的发起者列表 |
CreatedAtStartDate | 否 | String | 开始时间 |
CreatedAtEndDate | 否 | String | 结束时间 |
PageNumber | 是 | Integer | 页码 |
PageSize | 是 | Integer | 页数量 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Notes | MergeRequestNoteList | 合并请求评论列表 |
参数详解
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 行评论的Id |
Content | String | 行评论内容 |
Author | User | 行评论用户 |
CreatedAt | Integer | 行评论创建时间 |
UpdatedAt | Integer | 行评论更新时间 |
MergeId | Integer | 合并请求的Iid |
ParentId | Integer | 子评论的父Id |
CommitSha | String | 提交Id |
Index | Integer | diff信息中的行数 |
Path | String | 改动文件路径 |
合并状态值
值 | 对应状态 |
---|---|
CANMERGE | 状态可自动合并 |
ACCEPTED | 状态已接受 |
CANNOTMERGE | 状态不可自动合并 |
REFUSED | 状态已拒绝(关闭) |
CANCEL | 取消 |
MERGING | 正在合并中 |
ABNORMAL | 状态异常 |
Example 1
成功示例
1{
2 "Action": "DescribeAllMergeRequestNotes",
3 "DepotPath": "team-name/project-name/depot-name",
4 "MergeIds": [
5 10,
6 11
7 ],
8 "MrStatuses": [
9 "CANMERGE",
10 "CANNOTMERGE",
11 "ACCEPTED",
12 "REFUSED",
13 "CANCEL",
14 "MERGING",
15 "ABNORMAL"
16 ],
17 "ReporterIds": [
18 2,
19 3
20 ],
21 "PageNumber": 1,
22 "PageSize": 10,
23 "CreatedAtStartDate": "2023-10-10 00:00:00",
24 "CreatedAtEndDate": "2023-10-10 23:59:59"
25}
成功示例
1{
2 "Response": {
3 "RequestId": "6e3d93db-fbe1-4088-bc02-2e040e4e47f9",
4 "Notes": [
5 {
6 "Note": [
7 {
8 "Id": 733,
9 "Content": "ch",
10 "Author": {
11 "Id": 2,
12 "TeamId": 1,
13 "Name": "coding",
14 "Email": "coding@coding.com",
15 "GlobalKey": "coding-coding",
16 "Status": "INACTIVE",
17 "Avatar": "/static/fruit_avatar/Fruit-20.png"
18 },
19 "CreatedAt": 1670992946000,
20 "UpdatedAt": 1670992958000,
21 "MergeId": 14,
22 "ParentId": 0,
23 "CommitSha": "",
24 "Index": 0,
25 "Path": ""
26 },
27 {
28 "Id": 714,
29 "Content": "@coding cew",
30 "Author": {
31 "Id": 2,
32 "TeamId": 1,
33 "Name": "coding",
34 "Email": "coding@coding.com",
35 "GlobalKey": "coding-coding",
36 "Status": "INACTIVE",
37 "Avatar": "/static/fruit_avatar/Fruit-20.png"
38 },
39 "CreatedAt": 1670992958000,
40 "UpdatedAt": 1670992958000,
41 "MergeId": 14,
42 "ParentId": 733,
43 "CommitSha": "",
44 "Index": 0,
45 "Path": ""
46 }
47 ]
48 },
49 {
50 "Note": [
51 {
52 "Id": 713,
53 "Content": "c",
54 "Author": {
55 "Id": 2,
56 "TeamId": 1,
57 "Name": "coding",
58 "Email": "coding@coding.com",
59 "GlobalKey": "coding-coding",
60 "Status": "INACTIVE",
61 "Avatar": "/static/fruit_avatar/Fruit-20.png"
62 },
63 "CreatedAt": 1670992952000,
64 "UpdatedAt": 1670992952000,
65 "MergeId": 25,
66 "ParentId": 0,
67 "CommitSha": "b629921cd61e57ba698816c84986e4cee8675066",
68 "Index": 3,
69 "Path": "README.md"
70 },
71 {
72 "Id": 715,
73 "Content": "cja",
74 "Author": {
75 "Id": 2,
76 "TeamId": 1,
77 "Name": "coding",
78 "Email": "coding@coding.com",
79 "GlobalKey": "coding-coding",
80 "Status": "INACTIVE",
81 "Avatar": "/static/fruit_avatar/Fruit-20.png"
82 },
83 "CreatedAt": 1670998229000,
84 "UpdatedAt": 1670998229000,
85 "MergeId": 25,
86 "ParentId": 0,
87 "CommitSha": "b629921cd61e57ba698816c84986e4cee8675066",
88 "Index": 3,
89 "Path": "README.md"
90 }
91 ]
92 }
93 ]
94 }
95}
查询构建记录详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIBuild。 |
BuildId | 是 | Integer | 构建 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Build | CodingCIBuild | 构建详情 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIBuild",
3 "BuildId": 1
4}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Build": {
5 "Id": 55,
6 "JobId": 23,
7 "CodingCIId": "cci-2-605077",
8 "Number": 2,
9 "CommitId": "14c8e6e51ea01fc916dbcaf416f79a68f42c7634",
10 "Cause": "coding 手动触发",
11 "Branch": "",
12 "FailedMessage": "",
13 "JenkinsFileContent": "pipeline {\n agent any\n stages {\n \n stage(\"检出\") {\n steps {\n checkout(\n [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], \n userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]\n )\n }\n }\n\n stage(\"构建\") {\n steps {\n echo \"构建中...\"\n sh 'docker version'\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn package' // mvn 示例\n // sh 'make' // make 示例\n echo \"构建完成.\"\n \n // 演示怎样产生构建物\n script{\n def exists = fileExists 'README.md'\n if (!exists) {\n writeFile(file: 'README.md', text: 'Helloworld')\n }\n }\n archiveArtifacts artifacts: 'README.md', fingerprint: true\n \n // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物\n }\n }\n\n stage(\"测试\") {\n steps {\n echo \"单元测试中...\"\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn test' // mvn 示例\n // sh 'make test' // make 示例\n echo \"单元测试完成.\"\n \n // 演示怎么样生成测试报告\n writeFile(file: 'TEST-demo.junit4.AppTest.xml', text: '''\n <testsuite name=\"demo.junit4.AppTest\" time=\"0.053\" tests=\"3\" errors=\"0\" skipped=\"0\" failures=\"0\">\n <properties>\n </properties>\n <testcase name=\"testApp\" classname=\"demo.junit4.AppTest\" time=\"0.003\"/>\n <testcase name=\"test1\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n <testcase name=\"test2\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n </testsuite>\n ''')\n junit '*.xml'\n \n // junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程\n }\n }\n\n stage(\"部署\") {\n steps {\n echo \"部署中...\"\n // 请在这里放置收集单元测试报告的调用过程,例如:\n // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:\n // sh './deploy.sh' // 自研部署脚本\n echo \"部署完成\"\n }\n }\n }\n}\n",
14 "Duration": 8000,
15 "Status": "SUCCEED",
16 "StatusNode": "",
17 "TestResult": {
18 "Empty": false,
19 "FailCount": 0,
20 "PassCount": 0,
21 "SkipCount": 0,
22 "TotalCount": 0,
23 "Duration": 0
24 },
25 "CreatedAt": 1589084450000
26 }
27 }
28}
查询构建完整日志(原始日志 Raw)
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIBuildLogRaw。 |
BuildId | 是 | Integer | 构建 ID |
Start | 是 | Integer | 日志开始位置 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCodingCIBuildLogRawData | 构建原始日志 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIBuildLogRaw",
3 "BuildId": 56,
4 "Start": 0
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
触发构建
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:TriggerCodingCIBuild。 |
JobId | 是 | Integer | 构建计划 Id |
Revision | 否 | String | 分支名或 CommitId,当为构建计划的 DepotType 为 NONE 是可不传 |
ParamList | 否 | Array of CIJobEnv | 构建附加的环境变量 |
Reentrant | 否 | String | 可重入字符串 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | TriggerCodingCIBuildData | 构建信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
CIJobEnv
环境变量配置
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Name | String | 是 | 环境变量名称 |
Value | String | 是 | 环境变量值 |
Sensitive | Boolean | 是 | 是否保密 |
Example 1
成功示例
1{
2 "Action": "TriggerCodingCIBuild",
3 "Revision": "master",
4 "JobId": 23
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "Build": {
6 "Id": 55,
7 "JobId": 23,
8 "CodingCIId": "cci-2-605077",
9 "Number": 2,
10 "CommitId": "14c8e6e51ea01fc916dbcaf416f79a68f42c7634",
11 "Cause": "coding 手动触发",
12 "Branch": "",
13 "FailedMessage": "",
14 "JenkinsFileContent": "pipeline {\n agent any\n stages {\n \n stage(\"检出\") {\n steps {\n checkout(\n [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], \n userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]\n )\n }\n }\n\n stage(\"构建\") {\n steps {\n echo \"构建中...\"\n sh 'docker version'\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn package' // mvn 示例\n // sh 'make' // make 示例\n echo \"构建完成.\"\n \n // 演示怎样产生构建物\n script{\n def exists = fileExists 'README.md'\n if (!exists) {\n writeFile(file: 'README.md', text: 'Helloworld')\n }\n }\n archiveArtifacts artifacts: 'README.md', fingerprint: true\n \n // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物\n }\n }\n\n stage(\"测试\") {\n steps {\n echo \"单元测试中...\"\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn test' // mvn 示例\n // sh 'make test' // make 示例\n echo \"单元测试完成.\"\n \n // 演示怎么样生成测试报告\n writeFile(file: 'TEST-demo.junit4.AppTest.xml', text: '''\n <testsuite name=\"demo.junit4.AppTest\" time=\"0.053\" tests=\"3\" errors=\"0\" skipped=\"0\" failures=\"0\">\n <properties>\n </properties>\n <testcase name=\"testApp\" classname=\"demo.junit4.AppTest\" time=\"0.003\"/>\n <testcase name=\"test1\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n <testcase name=\"test2\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n </testsuite>\n ''')\n junit '*.xml'\n \n // junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程\n }\n }\n\n stage(\"部署\") {\n steps {\n echo \"部署中...\"\n // 请在这里放置收集单元测试报告的调用过程,例如:\n // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:\n // sh './deploy.sh' // 自研部署脚本\n echo \"部署完成\"\n }\n }\n }\n}\n",
15 "Duration": 0,
16 "Status": "QUEUED",
17 "StatusNode": "",
18 "TestResult": {
19 "Empty": false,
20 "FailCount": 0,
21 "PassCount": 0,
22 "SkipCount": 0,
23 "TotalCount": 0,
24 "Duration": 0
25 },
26 "CreatedAt": 1589084450366
27 }
28 }
29 }
30}
获取构建步骤日志
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIBuildStepLog。 |
BuildId | 是 | Integer | 构建 ID |
StageId | 是 | Integer | 阶段 ID |
StepId | 是 | Integer | 步骤 ID |
Start | 是 | Integer | 日志开始位置 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCodingCIBuildStepLogData | 日志详情 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIBuildStepLog",
3 "BuildId": 56,
4 "StageId": 24,
5 "StepId": 25,
6 "Start": 0
7}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "Log": "单元测试中...\r\n",
6 "MoreData": false,
7 "TextDelivered": 10,
8 "TextSize": 10
9 }
10 }
11}
获取构建计划的构建列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIBuilds。 |
Version | 是 | String | 公共参数,本接口取值:2019-10-21。 |
Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
JobId | 是 | Integer | 构建计划 ID |
PageNumber | 是 | Integer | 页码 |
PageSize | 是 | Integer | 每页条数 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCodingCIBuildsData | 构建列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIBuilds",
3 "JobId": 1,
4 "PageNumber": 1,
5 "PageSize": 10
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "BuildList": [
6 {
7 "Id": 55,
8 "JobId": 23,
9 "CodingCIId": "cci-2-605077",
10 "Number": 2,
11 "CommitId": "14c8e6e51ea01fc916dbcaf416f79a68f42c7634",
12 "Cause": "coding 手动触发",
13 "Branch": "",
14 "FailedMessage": "",
15 "JenkinsFileContent": "pipeline {\n agent any\n stages {\n \n stage(\"检出\") {\n steps {\n checkout(\n [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], \n userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]\n )\n }\n }\n\n stage(\"构建\") {\n steps {\n echo \"构建中...\"\n sh 'docker version'\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn package' // mvn 示例\n // sh 'make' // make 示例\n echo \"构建完成.\"\n \n // 演示怎样产生构建物\n script{\n def exists = fileExists 'README.md'\n if (!exists) {\n writeFile(file: 'README.md', text: 'Helloworld')\n }\n }\n archiveArtifacts artifacts: 'README.md', fingerprint: true\n \n // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物\n }\n }\n\n stage(\"测试\") {\n steps {\n echo \"单元测试中...\"\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn test' // mvn 示例\n // sh 'make test' // make 示例\n echo \"单元测试完成.\"\n \n // 演示怎么样生成测试报告\n writeFile(file: 'TEST-demo.junit4.AppTest.xml', text: '''\n <testsuite name=\"demo.junit4.AppTest\" time=\"0.053\" tests=\"3\" errors=\"0\" skipped=\"0\" failures=\"0\">\n <properties>\n </properties>\n <testcase name=\"testApp\" classname=\"demo.junit4.AppTest\" time=\"0.003\"/>\n <testcase name=\"test1\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n <testcase name=\"test2\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n </testsuite>\n ''')\n junit '*.xml'\n \n // junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程\n }\n }\n\n stage(\"部署\") {\n steps {\n echo \"部署中...\"\n // 请在这里放置收集单元测试报告的调用过程,例如:\n // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:\n // sh './deploy.sh' // 自研部署脚本\n echo \"部署完成\"\n }\n }\n }\n}\n",
16 "Duration": 8000,
17 "Status": "SUCCEED",
18 "StatusNode": "",
19 "TestResult": {
20 "Empty": false,
21 "FailCount": 0,
22 "PassCount": 0,
23 "SkipCount": 0,
24 "TotalCount": 0,
25 "Duration": 0
26 },
27 "CreatedAt": 1589084450000
28 },
29 {
30 "Id": 54,
31 "JobId": 23,
32 "CciId": "cci-1-863629",
33 "Number": 1,
34 "CommitId": "14c8e6e51ea01fc916dbcaf416f79a68f42c7634",
35 "Cause": "coding 手动触发",
36 "Branch": "",
37 "FailedMessage": "",
38 "JenkinsFileContent": "pipeline {\n agent any\n stages {\n \n stage(\"检出\") {\n steps {\n checkout(\n [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], \n userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]\n )\n }\n }\n\n stage(\"构建\") {\n steps {\n echo \"构建中...\"\n sh 'docker version'\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn package' // mvn 示例\n // sh 'make' // make 示例\n echo \"构建完成.\"\n \n // 演示怎样产生构建物\n script{\n def exists = fileExists 'README.md'\n if (!exists) {\n writeFile(file: 'README.md', text: 'Helloworld')\n }\n }\n archiveArtifacts artifacts: 'README.md', fingerprint: true\n \n // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物\n }\n }\n\n stage(\"测试\") {\n steps {\n echo \"单元测试中...\"\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn test' // mvn 示例\n // sh 'make test' // make 示例\n echo \"单元测试完成.\"\n \n // 演示怎么样生成测试报告\n writeFile(file: 'TEST-demo.junit4.AppTest.xml', text: '''\n <testsuite name=\"demo.junit4.AppTest\" time=\"0.053\" tests=\"3\" errors=\"0\" skipped=\"0\" failures=\"0\">\n <properties>\n </properties>\n <testcase name=\"testApp\" classname=\"demo.junit4.AppTest\" time=\"0.003\"/>\n <testcase name=\"test1\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n <testcase name=\"test2\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n </testsuite>\n ''')\n junit '*.xml'\n \n // junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程\n }\n }\n\n stage(\"部署\") {\n steps {\n echo \"部署中...\"\n // 请在这里放置收集单元测试报告的调用过程,例如:\n // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:\n // sh './deploy.sh' // 自研部署脚本\n echo \"部署完成\"\n }\n }\n }\n}\n",
39 "Duration": 10000,
40 "Status": "ABORTED",
41 "StatusNode": "",
42 "TestResult": {
43 "Empty": false,
44 "FailCount": 0,
45 "PassCount": 0,
46 "SkipCount": 0,
47 "TotalCount": 0,
48 "Duration": 0
49 },
50 "CreatedAt": 1589081372000
51 }
52 ],
53 "PageNumber": 1,
54 "PageSize": 2,
55 "TotalCount": 2
56 }
57 }
58}
获取构建计划环境变量
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIBuildEnvs。 |
BuildId | 是 | Integer | 构建ID |
Type | 是 | String | SYSTEM(系统内置环境变量) Param(触发构建输入环境变量) Env(构建计划填写环境变量) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
EnvList | Array of CIJobEnv | 环境变量列表 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
CIJobEnv
环境变量配置
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Name | String | 是 | 环境变量名称 |
Value | String | 是 | 环境变量值 |
Sensitive | Boolean | 是 | 是否保密 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIBuildEnvs",
3 "BuildId": 1,
4 "Type": "PARAM"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "09066b12-9027-1a52-d3bf-d1f30440f4c0",
4 "EnvList": [
5 {
6 "Name": "TRIGGER_USER_NAME",
7 "Value": "coding",
8 "Sensitive": false
9 },
10 {
11 "Name": "TRIGGER_USER_GK",
12 "Value": "coding",
13 "Sensitive": false
14 },
15 {
16 "Name": "CCI_TRIGGER_METHOD",
17 "Value": "MANUAL",
18 "Sensitive": false
19 },
20 {
21 "Name": "TRIGGER_USER_EMAIL",
22 "Value": "coding@coding.com",
23 "Sensitive": false
24 },
25 {
26 "Name": "TRIGGER_USER_ID",
27 "Value": "1",
28 "Sensitive": false
29 }
30 ]
31 }
32}
获取构建任务阶段
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
BuildId | 是 | Integer | 构建 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | CodingCIBuildStageData | 包含步骤返回信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIBuildStage",
3 "BuildId": 1
4}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "StageJsonString": "[{\"_class\":\"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl\",\"_links\":{\"self\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/6/\"},\"actions\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/6/actions/\"},\"steps\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/6/steps/\"}},\"actions\":[],\"displayDescription\":null,\"displayName\":\"检出\",\"durationInMillis\":5694,\"id\":\"6\",\"input\":null,\"result\":\"SUCCESS\",\"startTime\":\"2020-05-10T12:21:02.862+0800\",\"state\":\"FINISHED\",\"type\":\"STAGE\",\"causeOfBlockage\":null,\"edges\":[{\"_class\":\"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl\",\"id\":\"11\",\"type\":\"STAGE\"}],\"firstParent\":null,\"restartable\":true},{\"_class\":\"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl\",\"_links\":{\"self\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/11/\"},\"actions\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/11/actions/\"},\"steps\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/11/steps/\"}},\"actions\":[],\"displayDescription\":null,\"displayName\":\"构建\",\"durationInMillis\":427,\"id\":\"11\",\"input\":null,\"result\":\"SUCCESS\",\"startTime\":\"2020-05-10T12:21:08.611+0800\",\"state\":\"FINISHED\",\"type\":\"STAGE\",\"causeOfBlockage\":null,\"edges\":[{\"_class\":\"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl\",\"id\":\"24\",\"type\":\"STAGE\"}],\"firstParent\":\"6\",\"restartable\":true},{\"_class\":\"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl\",\"_links\":{\"self\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/24/\"},\"actions\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/24/actions/\"},\"steps\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/24/steps/\"}},\"actions\":[],\"displayDescription\":null,\"displayName\":\"测试\",\"durationInMillis\":97,\"id\":\"24\",\"input\":null,\"result\":\"SUCCESS\",\"startTime\":\"2020-05-10T12:21:09.095+0800\",\"state\":\"FINISHED\",\"type\":\"STAGE\",\"causeOfBlockage\":null,\"edges\":[{\"_class\":\"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl\",\"id\":\"32\",\"type\":\"STAGE\"}],\"firstParent\":\"11\",\"restartable\":true},{\"_class\":\"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl\",\"_links\":{\"self\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/32/\"},\"actions\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/32/actions/\"},\"steps\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-2-605077/runs/1/nodes/32/steps/\"}},\"actions\":[],\"displayDescription\":null,\"displayName\":\"部署\",\"durationInMillis\":37,\"id\":\"32\",\"input\":null,\"result\":\"SUCCESS\",\"startTime\":\"2020-05-10T12:21:09.253+0800\",\"state\":\"FINISHED\",\"type\":\"STAGE\",\"causeOfBlockage\":null,\"edges\":[],\"firstParent\":\"24\",\"restartable\":true}]"
6 }
7 }
8}
获取构建任务指定阶段的步骤
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIBuildStep。 |
BuildId | 是 | Integer | 构建 ID |
StageId | 是 | Integer | 阶段 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | CodingCIBuildStepData | Step 信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIBuildStep",
3 "BuildId": 1,
4 "StageId": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "StepJsonString": "[{\"_class\":\"io.jenkins.blueocean.rest.impl.pipeline.PipelineStepImpl\",\"_links\":{\"self\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-10-664474/runs/1/nodes/6/steps/7/\"},\"actions\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-10-664474/runs/1/nodes/6/steps/7/actions/\"}},\"actions\":[{\"_class\":\"io.jenkins.blueocean.service.embedded.rest.ActionProxiesImpl\",\"_links\":{\"self\":{\"_class\":\"io.jenkins.blueocean.rest.hal.Link\",\"href\":\"/blue/rest/organizations/jenkins/pipelines/cci-10-664474/runs/1/nodes/6/steps/7/log/\"}},\"_class\":\"org.jenkinsci.plugins.workflow.support.actions.LogStorageAction\",\"urlName\":\"log\"}],\"displayDescription\":null,\"displayName\":\"Check out from version control\",\"durationInMillis\":4490,\"id\":\"7\",\"input\":null,\"result\":\"SUCCESS\",\"startTime\":\"2020-05-08T17:45:21.407+0800\",\"state\":\"FINISHED\",\"type\":\"STEP\"}]"
6 }
7 }
8}
获取构建日志
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIBuildLog。 |
BuildId | 是 | Integer | 构建 ID |
Start | 是 | Integer | 日志的开始位置 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCodingCIBuildLogData | 日志信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIBuildLog",
3 "BuildId": 1,
4 "StageId": 1,
5 "StepId": 1,
6 "start": 1
7}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "Log": "Started by user coding\r\nRunning in Durability level: MAX_SURVIVABILITY\r\n[Pipeline] Start of Pipeline\r\n[Pipeline] node\r\nRunning on Jenkins in /var/jenkins_home/workspace/cci-******-605077\r\n[Pipeline] {\r\n[Pipeline] stage\r\n[Pipeline] { (检出)\r\n[Pipeline] checkout\r\nusing credential 9378a66a-b949-4c4a-bf7e-094d0d7e36c0\r\nCloning the remote Git repository\r\nCloning repository git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git\r\n > git init /var/jenkins_home/workspace/cci-******-605077 # timeout=10\r\nFetching upstream changes from git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git\r\n > git --version # timeout=10\r\nusing GIT_SSH to set credentials \r\n > git fetch --tags --progress -- git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git +refs/heads/*:refs/remotes/origin/*\r\n > git config remote.origin.url git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git # timeout=10\r\n > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10\r\n > git config remote.origin.url git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git # timeout=10\r\nFetching upstream changes from git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git\r\nusing GIT_SSH to set credentials \r\n > git fetch --tags --progress -- git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git +refs/heads/*:refs/remotes/origin/* +refs/merge/*:refs/remotes/origin/merge/*\r\n > git rev-parse 14c8e6e51ea01fc916dbcaf416f79a68f4******c7634^{commit} # timeout=10\r\nChecking out Revision 14c8e6e51ea01fc916dbcaf416f79a68f4******c7634 (detached)\r\n > git config core.sparsecheckout # timeout=10\r\n > git checkout -f 14c8e6e51ea01fc916dbcaf416f79a68f4******c7634\r\nCommit message: \"Initial commit\"\r\nFirst time build. Skipping changelog.\r\n[Pipeline] }\r\n[Pipeline] // stage\r\n[Pipeline] stage\r\n[Pipeline] { (构建)\r\n[Pipeline] echo\r\n构建中...\r\n[Pipeline] sh\r\n+ docker version\r\nClient: Docker Engine - Community\r\n Version: 19.03.5\r\n API version: 1.39 (downgraded from 1.40)\r\n Go version: go1.1******.1******\r\n Git commit: 633a0ea838\r\n Built: Wed Nov 13 07:******:05 ******019\r\n OS/Arch: linux/amd64\r\n Experimental: false\r\n\r\nServer: Docker Engine - Community\r\n Engine:\r\n Version: 18.09.7\r\n API version: 1.39 (minimum version 1.1******)\r\n Go version: go1.10.8\r\n Git commit: ******d0083d\r\n Built: Thu Jun ******7 17:******6:******8 ******019\r\n OS/Arch: linux/amd64\r\n Experimental: false\r\n[Pipeline] echo\r\n构建完成.\r\n[Pipeline] script\r\n[Pipeline] {\r\n[Pipeline] fileExists\r\n[Pipeline] }\r\n[Pipeline] // script\r\n[Pipeline] archiveArtifacts\r\nArchiving artifacts\r\nRecording fingerprints\r\n[Pipeline] }\r\n[Pipeline] // stage\r\n[Pipeline] stage\r\n[Pipeline] { (测试)\r\n[Pipeline] echo\r\n单元测试中...\r\n[Pipeline] echo\r\n单元测试完成.\r\n[Pipeline] writeFile\r\n[Pipeline] junit\r\nRecording test results\r\n[Pipeline] }\r\n[Pipeline] // stage\r\n[Pipeline] stage\r\n[Pipeline] { (部署)\r\n[Pipeline] echo\r\n部署中...\r\n[Pipeline] echo\r\n部署完成\r\n[Pipeline] }\r\n[Pipeline] // stage\r\n[Pipeline] }\r\n[Pipeline] // node\r\n[Pipeline] End of Pipeline\r\nFinished: SUCCESS\r\n",
6 "MoreData": false,
7 "TextDelivered": 3003,
8 "TextSize": 3003
9 }
10 }
11}
删除构建
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteCodingCIBuild。 |
BuildId | 是 | Integer | 构建 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteCodingCIBuild",
3 "BuildId": 55
4}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
停止构建
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:StopCodingCIBuild。 |
BuildId | 是 | Integer | 构建 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "StopCodingCIBuild",
3 "BuildId": 1
4}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
创建构建计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCodingCIJob。 |
ProjectId | 是 | Integer | 项目 ID |
DepotId | 是 | Integer | 仓库 ID |
Name | 是 | String | 构建计划名称 |
ExecuteIn | 是 | String | 执行方式 CVM | STATIC | AGENT |
HookType | 是 | String | 代码更新触发匹配规则 DEFAULT,TAG,BRANCH,CUSTOM |
JenkinsFileFromType | 是 | String | STATIC,SCM 从代码库读取 |
AutoCancelSameRevision | 是 | Boolean | 自动取消相同版本 |
AutoCancelSameMergeRequest | 是 | Boolean | 自动取消相同 MR |
JobFromType | 是 | String | 构建计划来源 CODING |
DepotType | 是 | String | 仓库类型 CODING_OTHER_PROJ,CODING,TGIT,GITHUB,GITLAB,GITLAB_PRIVATE,GITEE,COMMON_GIT_REPO,NONE |
TriggerMethodList | 否 | Array of String | REF_CHANGE 代码更新触发 CRON = 1 定时触发 MR_CHANGE MR变动触发 |
BranchSelector | 否 | String | hookType 为 DEFAULT 时须指定 |
BranchRegex | 否 | String | hookType 为 CUSTOM 时须指定 |
JenkinsFilePath | 否 | String | JenkinsFileFromType 为 SCM 必填 |
JenkinsFileStaticContent | 否 | String | JenkinsFileFromType 为 STATIC 必填 |
TriggerRemind | 否 | String | 构建结果通知触发者机制 ALWAYS -总是通知; BUILD_FAIL -仅构建失败时通知; |
CachePathList | 否 | Array of CodingCIJobCachePath | 任务缓存目录配置 |
EnvList | 否 | Array of CIJobEnv | 环境变量配置 |
ScheduleList | 否 | Array of CodingCIJobSchedule | 针对 CRON triggerMethod 的 schedule 规则配置, 暂只用于添加 |
AlwaysUserIdList | 否 | Array of Integer | 不管构建成功还是失败总是通知的用户 |
BuildFailUserIdList | 否 | Array of Integer | 仅构建失败时要通知的用户 |
ExecutedAgentPoolId | 否 | Integer | 自定义构建节点池 ID,ExecuteIn 为 AGENT 必填 |
CodingCIJobCachePath
缓存目录配置
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
AbsolutePath | String | 是 | 绝对路径 |
Enabled | Boolean | 是 | 是否使用 |
CIJobEnv
环境变量配置
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Name | String | 是 | 环境变量名称 |
Value | String | 是 | 环境变量值 |
Sensitive | Boolean | 是 | 是否保密 |
CodingCIJobSchedule
定时触发配置
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
RefChangeTrigger | Boolean | 是 | 是否自动变更触发 |
Branch | String | 是 | 分支 |
Weekend | Array of Integer | 是 | 日期 |
Repeat | Boolean | 是 | 是否周期性 |
StartTime | String | 是 | 开始时间 |
EndTime | String | 是 | 结束时间 |
Interval | String | 是 | 间隔时间 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | CreateCodingCIJobData | 创建构建计划返回结构 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateCodingCIJob",
3 "AutoCancelSameMergeRequest": true,
4 "AutoCancelSameRevision": true,
5 "BranchRegex": "",
6 "BranchSelector": "",
7 "DepotId": 0,
8 "DepotType": "NONE",
9 "ExecuteIn": "CVM",
10 "HookType": "DEFAULT",
11 "JenkinsFileFromType": "STATIC",
12 "JenkinsFilePath": "Jenkinsfile",
13 "JenkinsFileStaticContent": "文件内容过长请忽略",
14 "JobFromType": "CODING",
15 "Name": "hugoo201905135027hello64f84173-321b-4f36-aae7-5b87bfd9b7de",
16 "ProjectId": 645819,
17 "TriggerRemind": "ALWAYS"
18}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "Id": 24
6 }
7 }
8}
删除构建计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteCodingCIJob。 |
Version | 是 | String | 公共参数,本接口取值:2019-10-21。 |
Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
JobId | 是 | Integer | 构建计划 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
修改构建计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyCodingCIJob。 |
Version | 是 | String | 公共参数,本接口取值:2019-10-21。 |
Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
ProjectId | 是 | Integer | 项目 ID |
DepotId | 是 | Integer | 仓库 ID |
ExecuteIn | 是 | String | 执行方式 CVM | STATIC |
HookType | 是 | String | 代码更新触发匹配规则 |
JenkinsFileFromType | 是 | String | STATIC,SCM 从代码库读取 |
AutoCancelSameRevision | 是 | Boolean | 自动取消相同版本 |
AutoCancelSameMergeRequest | 是 | Boolean | 自动取消相同 MR |
TriggerRemind | 是 | String | 构建结果通知触发者机制 ALWAYS -总是通知; BUILD_FAIL -仅构建失败时通知; |
JobFromType | 是 | String | 构建计划来源 TKE TCB |
DepotType | 是 | String | 仓库类型 CODING,TGIT,GITHUB,GITLAB,GITLAB_PRIVATE,GITEE,NONE |
Id | 是 | Integer | 构建计划 ID |
Name | 否 | String | 构建计划名称 |
TriggerMethodList | 否 | Array of String | REF_CHANGE 代码更新触发 CRON = 1 定时触发 MR_CHANGE MR变动触发 TKE 对接他们传空数组老是有问题,遂改成非必填 |
BranchSelector | 否 | String | hookType 为 DEFAULT 时须指定 |
BranchRegex | 否 | String | hookType 为 CUSTOM 时须指定 |
JenkinsFilePath | 否 | String | JenkinsFileFromType 为 SCM 必填 |
JenkinsFileStaticContent | 否 | String | JenkinsFileFromType 为 STATIC 必填 |
CachePathList | 否 | Array of CodingCIJobCachePath | 任务缓存目录配置 |
EnvList | 否 | Array of CodingCIJobEnv | 环境变量配置 |
ScheduleList | 否 | Array of CodingCIJobSchedule | 针对 CRON triggerMethod 的 schedule 规则配置, 暂只用于添加 |
AlwaysUserIdList | 否 | Array of Integer | 不管构建成功还是失败总是通知的用户 |
BuildFailUserIdList | 否 | Array of Integer | 仅构建失败时要通知的用户 |
ExecutedAgentPoolId | 否 | Integer | 自定义构建节点池 ID,ExecuteIn 为 AGENT 必填 |
CodingCIJobCachePath
缓存目录配置
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
AbsolutePath | String | 是 | 绝对路径 |
Enabled | Boolean | 是 | 是否使用 |
CIJobEnv
环境变量配置
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Name | String | 是 | 环境变量名称 |
Value | String | 是 | 环境变量值 |
Sensitive | Boolean | 是 | 是否保密 |
CodingCIJobSchedule
定时触发配置
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
RefChangeTrigger | Boolean | 是 | 是否自动变更触发 |
Branch | String | 是 | 分支 |
Weekend | Array of Integer | 是 | 日期 |
Repeat | Boolean | 是 | 是否周期性 |
StartTime | String | 是 | 开始时间 |
EndTime | String | 是 | 结束时间 |
Interval | String | 是 | 间隔时间 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Id": 123,
3 "AutoCancelSameMergeRequest": true,
4 "AutoCancelSameRevision": true,
5 "BranchRegex": "",
6 "BranchSelector": "",
7 "DepotId": 0,
8 "DepotType": "NONE",
9 "ExecuteIn": "CVM",
10 "HookType": "DEFAULT",
11 "JenkinsFileFromType": "STATIC",
12 "JenkinsFilePath": "Jenkinsfile",
13 "JenkinsFileStaticContent": "文件内容过长请忽略",
14 "JobFromType": "TCB_FRAMEWORK",
15 "Name": "hugoo201905135027hello64f84173-321b-4f36-aae7-5b87bfd9b7de",
16 "ProjectId": 645819,
17 "TriggerRemind": "ALWAYS"
18}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
获取构建计划详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIJob。 |
Version | 是 | String | 公共参数,本接口取值:2019-10-21。 |
Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
JobId | 是 | Integer | 构建计划 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Job | CodingCIJob | 构建计划详情 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Job": {
5 "Id": 23,
6 "ProjectId": 450,
7 "ProjectName": "test-1",
8 "DepotId": 1,
9 "DepotName": "test-1",
10 "Name": "job-create",
11 "ExecuteIn": "CVM",
12 "TriggerMethodList": [
13 "MR_CHANGE",
14 "REF_CHANGE"
15 ],
16 "HookType": "DEFAULT",
17 "BranchSelector": "master",
18 "BranchRegex": "^refs/heads/master$",
19 "JenkinsFileFromType": "STATIC",
20 "JenkinsFilePath": "Jenkinsfile",
21 "JenkinsFileStaticContent": "pipeline {\n agent any\n stages {\n \n stage(\"检出\") {\n steps {\n checkout(\n [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], \n userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]\n )\n }\n }\n\n stage(\"构建\") {\n steps {\n echo \"构建中...\"\n sh 'docker version'\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn package' // mvn 示例\n // sh 'make' // make 示例\n echo \"构建完成.\"\n \n // 演示怎样产生构建物\n script{\n def exists = fileExists 'README.md'\n if (!exists) {\n writeFile(file: 'README.md', text: 'Helloworld')\n }\n }\n archiveArtifacts artifacts: 'README.md', fingerprint: true\n \n // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物\n }\n }\n\n stage(\"测试\") {\n steps {\n echo \"单元测试中...\"\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn test' // mvn 示例\n // sh 'make test' // make 示例\n echo \"单元测试完成.\"\n \n // 演示怎么样生成测试报告\n writeFile(file: 'TEST-demo.junit4.AppTest.xml', text: '''\n <testsuite name=\"demo.junit4.AppTest\" time=\"0.053\" tests=\"3\" errors=\"0\" skipped=\"0\" failures=\"0\">\n <properties>\n </properties>\n <testcase name=\"testApp\" classname=\"demo.junit4.AppTest\" time=\"0.003\"/>\n <testcase name=\"test1\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n <testcase name=\"test2\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n </testsuite>\n ''')\n junit '*.xml'\n \n // junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程\n }\n }\n\n stage(\"部署\") {\n steps {\n echo \"部署中...\"\n // 请在这里放置收集单元测试报告的调用过程,例如:\n // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:\n // sh './deploy.sh' // 自研部署脚本\n echo \"部署完成\"\n }\n }\n }\n}\n",
22 "AutoCancelSameRevision": true,
23 "AutoCancelSameMergeRequest": true,
24 "TriggerRemind": "ALWAYS",
25 "CachePathList": [],
26 "EnvList": [
27 {
28 "Name": "a",
29 "Value": "1",
30 "Sensitive": false
31 },
32 {
33 "Name": "b",
34 "Value": "2",
35 "Sensitive": true
36 }
37 ],
38 "ScheduleList": [],
39 "AlwaysUserIdList": [],
40 "BuildFailUserIdList": [],
41 "CreatorId": 1,
42 "CreatedAt": 0,
43 "UpdatedAt": 0,
44 "DepotWebUrl": "http://codingcorp.coding.9.134.115.58.nip.io/p/test-1/d/test-1/git",
45 "DepotSshUrl": "git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git",
46 "DepotHttpsUrl": "http://e.coding.9.134.115.58.nip.io/codingcorp/test-1.git",
47 "DockerFilePath": "",
48 "DockerBuildPath": "",
49 "DockerBuildTag": "",
50 "JobFromType": "CODING",
51 "DepotType": "CODING",
52 "GroupName": "test1"
53 }
54 }
55}
查询单个项目下的所有构建计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCIJobs。 |
Version | 是 | String | 公共参数,本接口取值:2019-10-21。 |
Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
ProjectId | 是 | Integer | 项目 ID |
Filter.N | 否 | Array of Filter | 过滤参数 |
Filter 参数说明(仅支持 Name 和 GroupName 过滤)
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Name | String | 是 | 过滤字段名称 |
Value | Array of String | 是 | 过滤字段值 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
JobList | Array of CodingCIJob | CI 任务列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCIJobs",
3 "ProjectId": 123,
4 "Filter": [
5 {
6 "Name": "Name",
7 "Value": [
8 "job-create"
9 ]
10 },
11 {
12 "Name": "GroupName",
13 "Value": [
14 "test1",
15 "test2"
16 ]
17 }
18 ]
19}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "JobList": [
5 {
6 "Id": 23,
7 "ProjectId": 450,
8 "ProjectName": "test-1",
9 "DepotId": 1,
10 "DepotName": "test-1",
11 "Name": "job-create",
12 "ExecuteIn": "CVM",
13 "TriggerMethodList": [
14 "MR_CHANGE",
15 "REF_CHANGE"
16 ],
17 "HookType": "DEFAULT",
18 "BranchSelector": "master",
19 "BranchRegex": "^refs/heads/master$",
20 "JenkinsFileFromType": "STATIC",
21 "JenkinsFilePath": "Jenkinsfile",
22 "JenkinsFileStaticContent": "pipeline {\n agent any\n stages {\n \n stage(\"检出\") {\n steps {\n checkout(\n [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], \n userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]\n )\n }\n }\n\n stage(\"构建\") {\n steps {\n echo \"构建中...\"\n sh 'docker version'\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn package' // mvn 示例\n // sh 'make' // make 示例\n echo \"构建完成.\"\n \n // 演示怎样产生构建物\n script{\n def exists = fileExists 'README.md'\n if (!exists) {\n writeFile(file: 'README.md', text: 'Helloworld')\n }\n }\n archiveArtifacts artifacts: 'README.md', fingerprint: true\n \n // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物\n }\n }\n\n stage(\"测试\") {\n steps {\n echo \"单元测试中...\"\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn test' // mvn 示例\n // sh 'make test' // make 示例\n echo \"单元测试完成.\"\n \n // 演示怎么样生成测试报告\n writeFile(file: 'TEST-demo.junit4.AppTest.xml', text: '''\n <testsuite name=\"demo.junit4.AppTest\" time=\"0.053\" tests=\"3\" errors=\"0\" skipped=\"0\" failures=\"0\">\n <properties>\n </properties>\n <testcase name=\"testApp\" classname=\"demo.junit4.AppTest\" time=\"0.003\"/>\n <testcase name=\"test1\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n <testcase name=\"test2\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n </testsuite>\n ''')\n junit '*.xml'\n \n // junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程\n }\n }\n\n stage(\"部署\") {\n steps {\n echo \"部署中...\"\n // 请在这里放置收集单元测试报告的调用过程,例如:\n // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:\n // sh './deploy.sh' // 自研部署脚本\n echo \"部署完成\"\n }\n }\n }\n}\n",
23 "AutoCancelSameRevision": true,
24 "AutoCancelSameMergeRequest": true,
25 "TriggerRemind": "ALWAYS",
26 "CachePathList": [],
27 "EnvList": [
28 {
29 "Name": "a",
30 "Value": "1",
31 "Sensitive": false
32 },
33 {
34 "Name": "b",
35 "Value": "2",
36 "Sensitive": true
37 }
38 ],
39 "ScheduleList": [],
40 "AlwaysUserIdList": [],
41 "BuildFailUserIdList": [],
42 "CreatorId": 1,
43 "CreatedAt": 0,
44 "UpdatedAt": 0,
45 "DepotWebUrl": "http://codingcorp.coding.9.134.115.58.nip.io/p/test-1/d/test-1/git",
46 "DepotSshUrl": "git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git",
47 "DepotHttpsUrl": "http://e.coding.9.134.115.58.nip.io/codingcorp/test-1.git",
48 "DockerFilePath": "",
49 "DockerBuildPath": "",
50 "DockerBuildTag": "",
51 "JobFromType": "CODING",
52 "DepotType": "CODING",
53 "GroupName": "test1"
54 },
55 {
56 "Id": 24,
57 "ProjectId": 450,
58 "ProjectName": "test-1",
59 "DepotId": 1,
60 "DepotName": "test-1",
61 "Name": "job-create",
62 "ExecuteIn": "CVM",
63 "TriggerMethodList": [
64 "MR_CHANGE",
65 "REF_CHANGE"
66 ],
67 "HookType": "DEFAULT",
68 "BranchSelector": "master",
69 "BranchRegex": "^refs/heads/master$",
70 "JenkinsFileFromType": "STATIC",
71 "JenkinsFilePath": "Jenkinsfile",
72 "JenkinsFileStaticContent": "pipeline {\n agent any\n stages {\n \n stage(\"检出\") {\n steps {\n checkout(\n [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], \n userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]\n )\n }\n }\n\n stage(\"构建\") {\n steps {\n echo \"构建中...\"\n sh 'docker version'\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn package' // mvn 示例\n // sh 'make' // make 示例\n echo \"构建完成.\"\n \n // 演示怎样产生构建物\n script{\n def exists = fileExists 'README.md'\n if (!exists) {\n writeFile(file: 'README.md', text: 'Helloworld')\n }\n }\n archiveArtifacts artifacts: 'README.md', fingerprint: true\n \n // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物\n }\n }\n\n stage(\"测试\") {\n steps {\n echo \"单元测试中...\"\n // 请在这里放置您项目代码的单元测试调用过程,例如:\n // sh 'mvn test' // mvn 示例\n // sh 'make test' // make 示例\n echo \"单元测试完成.\"\n \n // 演示怎么样生成测试报告\n writeFile(file: 'TEST-demo.junit4.AppTest.xml', text: '''\n <testsuite name=\"demo.junit4.AppTest\" time=\"0.053\" tests=\"3\" errors=\"0\" skipped=\"0\" failures=\"0\">\n <properties>\n </properties>\n <testcase name=\"testApp\" classname=\"demo.junit4.AppTest\" time=\"0.003\"/>\n <testcase name=\"test1\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n <testcase name=\"test2\" classname=\"demo.junit4.AppTest\" time=\"0\"/>\n </testsuite>\n ''')\n junit '*.xml'\n \n // junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程\n }\n }\n\n stage(\"部署\") {\n steps {\n echo \"部署中...\"\n // 请在这里放置收集单元测试报告的调用过程,例如:\n // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:\n // sh './deploy.sh' // 自研部署脚本\n echo \"部署完成\"\n }\n }\n }\n}\n",
73 "AutoCancelSameRevision": true,
74 "AutoCancelSameMergeRequest": true,
75 "TriggerRemind": "ALWAYS",
76 "CachePathList": [],
77 "EnvList": [
78 {
79 "Name": "a",
80 "Value": "1",
81 "Sensitive": false
82 },
83 {
84 "Name": "b",
85 "Value": "2",
86 "Sensitive": true
87 }
88 ],
89 "ScheduleList": [],
90 "AlwaysUserIdList": [],
91 "BuildFailUserIdList": [],
92 "CreatorId": 1,
93 "CreatedAt": 0,
94 "UpdatedAt": 0,
95 "DepotWebUrl": "http://codingcorp.coding.9.134.115.58.nip.io/p/test-1/d/test-1/git",
96 "DepotSshUrl": "git@e.coding.9.134.115.58.nip.io:codingcorp/test-1.git",
97 "DepotHttpsUrl": "http://e.coding.9.134.115.58.nip.io/codingcorp/test-1.git",
98 "DockerFilePath": "",
99 "DockerBuildPath": "",
100 "DockerBuildTag": "",
101 "JobFromType": "CODING",
102 "DepotType": "CODING",
103 "GroupName": "test2"
104 }
105 ]
106 }
107}
清理构建计划缓存
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ClearCodingCIJobCache。 |
Version | 是 | String | 公共参数,本接口取值:2019-10-21。 |
Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
Id | 是 | Integer | 构建计划ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Id": 0
3}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
根据团队模板创建构建计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCodingCIJobByTeamTemplate。 |
DepotId | 是 | Integer | 仓库 ID |
JobName | 是 | String | 构建计划名称 |
TemplateId | 是 | Integer | 团队构建模板 ID |
DepotType | 是 | String | 仓库类型 CODING_OTHER_PROJ,CODING,TGIT,GITHUB,GITLAB,GITLAB_PRIVATE,GITEE,COMMON_GIT_REPO,NONE |
ProjectId | 是 | Integer | 项目 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Data | CreateCodingCIJobByTeamTemplateData | 根据团队模板创建构建计划返回结构 |
Example 1
成功示例
1{
2 "Action": "CreateCodingCIJobByTeamTemplate",
3 "DepotId": 1,
4 "JobName": "jobName1",
5 "TemplateId": 1,
6 "DepotType": "CODING",
7 "ProjectId": 1
8}
成功示例
1{
2 "Response": {
3 "RequestId": "cfcafe2c-44ad-4290-bcbc-b018d11b4fa3",
4 "Data": {
5 "Id": 165
6 }
7 }
8}
自定义构建节点启用、禁用
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyCodingCIAgentEnable。 |
PoolId | 是 | Integer | 节点池 ID。 |
Id | 是 | Integer | 节点 ID |
Enable | 是 | Bool | 启用 true,禁用 false。 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyCodingCIAgentEnable",
3 "PoolId": 1445,
4 "Id": 7,
5 "Enable": true
6}
成功示例
1{
2 "Response": {
3 "RequestId": "73e84ce3-e95e-4ad8-a944-f9f0c17f289a"
4 }
5}
根据项目名获取关联应用的发布次数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdDeployCountByProject。 |
ProjectName | 是 | String | 项目名称 |
StartAt | 是 | String | 开始时间(格式:yyyy-MM-dd HH:mm:ss) |
EndAt | 是 | String | 结束时间(格式:yyyy-MM-dd HH:mm:ss) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdDeployCountByProjectResponseData | 发布次数统计数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdDeployCountByProject",
3 "ProjectName": "test",
4 "StartAt": "2020-12-01 00:00:00",
5 "EndAt": "2020-12-03 23:59:59"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "4cb20019-03de-3ae1-08a6-7b2e0817ca26",
4 "Data": {
5 "Details": [
6 {
7 "Application": "dev",
8 "CdDeployCount": {
9 "SucceedCount": 2,
10 "TotalCount": 2
11 }
12 },
13 {
14 "Application": "local",
15 "CdDeployCount": {
16 "SucceedCount": 1,
17 "TotalCount": 1
18 }
19 }
20 ],
21 "Total": {
22 "SucceedCount": 3,
23 "TotalCount": 3
24 },
25 "StartDate": "2020-12-01",
26 "EndDate": "2020-12-03"
27 }
28 }
29}
根据项目名获取关联应用的发布趋势
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdDeployTrendByProject。 |
ProjectName | 是 | String | 项目名称 |
StartAt | 是 | String | 开始时间(格式:yyyy-MM-dd HH:mm:ss) |
EndAt | 是 | String | 结束时间(格式:yyyy-MM-dd HH:mm:ss) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdDeployTrendByProjectResponseData | 发布趋势统计数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdDeployTrendByProject",
3 "ProjectName": "test",
4 "StartAt": "2020-12-01 00:00:00",
5 "EndAt": "2020-12-03 23:59:59"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "b9591c5a-b7d5-8d0a-fa91-5d9b7fc6c88d",
4 "Data": {
5 "Details": [
6 {
7 "Application": "dev",
8 "CdDeployTrend": [
9 {
10 "SucceedCount": 0,
11 "TotalCount": 0,
12 "Date": "2020-12-01"
13 },
14 {
15 "SucceedCount": 0,
16 "TotalCount": 0,
17 "Date": "2020-12-02"
18 },
19 {
20 "SucceedCount": 2,
21 "TotalCount": 2,
22 "Date": "2020-12-03"
23 }
24 ],
25 "SuccessCount": 2,
26 "TotalCount": 2
27 },
28 {
29 "Application": "local",
30 "CdDeployTrend": [
31 {
32 "SucceedCount": 0,
33 "TotalCount": 0,
34 "Date": "2020-12-01"
35 },
36 {
37 "SucceedCount": 0,
38 "TotalCount": 0,
39 "Date": "2020-12-02"
40 },
41 {
42 "SucceedCount": 1,
43 "TotalCount": 1,
44 "Date": "2020-12-03"
45 }
46 ],
47 "SuccessCount": 1,
48 "TotalCount": 1
49 }
50 ],
51 "Total": {
52 "CdDeployTrend": [
53 {
54 "SucceedCount": 0,
55 "TotalCount": 0,
56 "Date": "2020-12-01"
57 },
58 {
59 "SucceedCount": 0,
60 "TotalCount": 0,
61 "Date": "2020-12-02"
62 },
63 {
64 "SucceedCount": 3,
65 "TotalCount": 3,
66 "Date": "2020-12-03"
67 }
68 ],
69 "SuccessCount": 3,
70 "TotalCount": 3
71 },
72 "StartDate": "2020-12-01",
73 "EndDate": "2020-12-03"
74 }
75 }
76}
根据项目名获取关联应用的发布时长
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdDeployTimeByProject。 |
ProjectName | 是 | String | 项目名称 |
StartAt | 是 | String | 开始时间(格式:yyyy-MM-dd HH:mm:ss) |
EndAt | 是 | String | 结束时间(格式:yyyy-MM-dd HH:mm:ss) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdDeployTimeByProjectResponseData | 发布时长统计数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdDeployTimeByProject",
3 "ProjectName": "test",
4 "StartAt": "2020-12-01 00:00:00",
5 "EndAt": "2020-12-31 23:59:59"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "88e099d1-487e-cd40-0673-c51e865a9e81",
4 "Data": {
5 "Details": [
6 {
7 "Application": "dev",
8 "CdDeployTime": {
9 "TotalCount": 2,
10 "DeployTime": 6
11 }
12 },
13 {
14 "Application": "local",
15 "CdDeployTime": {
16 "TotalCount": 1,
17 "DeployTime": 30
18 }
19 }
20 ],
21 "Total": {
22 "TotalCount": 3,
23 "DeployTime": 36
24 },
25 "StartDate": "2020-12-01",
26 "EndDate": "2020-12-31"
27 }
28 }
29}
根据应用名列表获取发布次数
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdDeployCountByApplications。 |
Application | 是 | Array of String | 应用名列表 |
StartAt | 是 | String | 开始时间(格式:yyyy-MM-dd HH:mm:ss) |
EndAt | 是 | String | 结束时间(格式:yyyy-MM-dd HH:mm:ss) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdDeployCountByApplicationsResponseData | 发布次数统计数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdDeployCountByApplications",
3 "Application": [
4 "dev",
5 "local"
6 ],
7 "StartAt": "2020-12-01 00:00:00",
8 "EndAt": "2020-12-03 23:59:59"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "0fb1159d-e76b-4baa-4bd5-2649325d524f",
4 "Data": {
5 "Details": [
6 {
7 "Application": "dev",
8 "CdDeployCount": {
9 "SucceedCount": 2,
10 "TotalCount": 2
11 }
12 },
13 {
14 "Application": "local",
15 "CdDeployCount": {
16 "SucceedCount": 1,
17 "TotalCount": 1
18 }
19 }
20 ],
21 "Total": {
22 "SucceedCount": 3,
23 "TotalCount": 3
24 },
25 "StartDate": "2020-12-01",
26 "EndDate": "2020-12-03"
27 }
28 }
29}
根据应用名列表获取发布趋势
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdDeployTrendByApplications。 |
Application | 是 | Array of String | 应用名列表 |
StartAt | 是 | String | 开始时间(格式:yyyy-MM-dd HH:mm:ss) |
EndAt | 是 | String | 结束时间(格式:yyyy-MM-dd HH:mm:ss) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdDeployTrendByApplicationsResponseData | 发布趋势统计数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdDeployTrendByApplications",
3 "Application": [
4 "dev",
5 "local"
6 ],
7 "StartAt": "2020-12-01 00:00:00",
8 "EndAt": "2020-12-03 23:59:59"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "2d9211a8-07d7-927c-3e80-7d78cf793ffe",
4 "Data": {
5 "Details": [
6 {
7 "Application": "dev",
8 "CdDeployTrend": [
9 {
10 "SucceedCount": 0,
11 "TotalCount": 0,
12 "Date": "2020-12-01"
13 },
14 {
15 "SucceedCount": 0,
16 "TotalCount": 0,
17 "Date": "2020-12-02"
18 },
19 {
20 "SucceedCount": 2,
21 "TotalCount": 2,
22 "Date": "2020-12-03"
23 }
24 ],
25 "SuccessCount": 2,
26 "TotalCount": 2
27 },
28 {
29 "Application": "local",
30 "CdDeployTrend": [
31 {
32 "SucceedCount": 0,
33 "TotalCount": 0,
34 "Date": "2020-12-01"
35 },
36 {
37 "SucceedCount": 0,
38 "TotalCount": 0,
39 "Date": "2020-12-02"
40 },
41 {
42 "SucceedCount": 1,
43 "TotalCount": 1,
44 "Date": "2020-12-03"
45 }
46 ],
47 "SuccessCount": 1,
48 "TotalCount": 1
49 }
50 ],
51 "Total": {
52 "CdDeployTrend": [
53 {
54 "SucceedCount": 0,
55 "TotalCount": 0,
56 "Date": "2020-12-01"
57 },
58 {
59 "SucceedCount": 0,
60 "TotalCount": 0,
61 "Date": "2020-12-02"
62 },
63 {
64 "SucceedCount": 3,
65 "TotalCount": 3,
66 "Date": "2020-12-03"
67 }
68 ],
69 "SuccessCount": 3,
70 "TotalCount": 3
71 },
72 "StartDate": "2020-12-01",
73 "EndDate": "2020-12-03"
74 }
75 }
76}
根据应用名列表获取发布时长
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdDeployTimeByApplications。 |
Applicatio | 是 | Array of String | 应用名列表 |
StartAt | 是 | String | 开始时间(格式:yyyy-MM-dd HH:mm:ss) |
EndAt | 是 | String | 结束时间(格式:yyyy-MM-dd HH:mm:ss) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdDeployTimeByApplicationsResponseData | 发布时长统计数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdDeployTimeByApplications",
3 "Application": [
4 "dev",
5 "local"
6 ],
7 "StartAt": "2020-12-01 00:00:00",
8 "EndAt": "2020-12-31 23:59:59"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "fc75f5e4-ef08-4469-bb75-9591b85a298d",
4 "Data": {
5 "Details": [
6 {
7 "Application": "dev",
8 "CdDeployTime": {
9 "TotalCount": 2,
10 "DeployTime": 6
11 }
12 },
13 {
14 "Application": "local",
15 "CdDeployTime": {
16 "TotalCount": 1,
17 "DeployTime": 30
18 }
19 }
20 ],
21 "Total": {
22 "TotalCount": 3,
23 "DeployTime": 36
24 },
25 "StartDate": "2020-12-01",
26 "EndDate": "2020-12-31"
27 }
28 }
29}
绑定 CD 应用到项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:BindCdApplicationToProject。 |
ProjectName | 是 | String | 项目名称 |
Application | 是 | String | CD 应用名 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "BindCdApplicationToProject",
3 "ProjectName": "test",
4 "Application": "dev"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "501d4e6c-10d9-7b28-326f-0a1ce5abb9e7"
4 }
5}
根据项目名获取关联应用列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdApplicationsByProject。 |
ProjectName | 是 | String | 项目名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdApplicationsByProjectResponseData | CD 应用列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdApplicationsByProject",
3 "ProjectName": "test"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "481be64b-f436-c025-2667-e89e7db69c6e",
4 "Data": {
5 "Applications": [
6 {
7 "Name": "dev"
8 },
9 {
10 "Name": "local"
11 }
12 ]
13 }
14 }
15}
获取应用列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdApplications。 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdApplicationsResponseData | CD 应用列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdApplications"
3}
成功示例
1{
2 "Response": {
3 "RequestId": "f7f613b5-83eb-438b-c196-9f7b4d01fde1",
4 "Data": {
5 "Applications": [
6 {
7 "Name": "dev"
8 },
9 {
10 "Name": "local"
11 }
12 ]
13 }
14 }
15}
获取 CD 应用详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdApplication。 |
Application | 是 | String | 应用名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdApplicationResponseData | CD 应用详情数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdApplication",
3 "Application": "test"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "a95b0fcf-8e96-4a2c-5052-01184fa4caff",
4 "Data": {
5 "ApplicationJsonContent": "{\"cloudProviders\":\"kubernetes,hostserver\",\"description\":\"\",\"instancePort\":80,\"lastModifyNickName\":\"coding\",\"name\":\"test\",\"trafficGuards\":[],\"user\":\"coding\"}"
6 }
7 }
8}
执行 CD 任务
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCdTask。 |
TaskJsonContent | 是 | String | 任务 JSON 配置 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | CreateCdTaskResponseData | CD 任务执行记录数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateCdTask",
3 "TaskJsonContent": "{\"job\":[{\"type\":\"createApplication\",\"application\":{\"cloudProviders\":\"kubernetes,hostserver\",\"email\":\"coding@coding.com\",\"instancePort\":80,\"nickName\":\"coding\",\"name\":\"test\"},\"user\":\"coding\"}],\"application\":\"test\",\"description\":\"Create Application: test\"}"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "cb0dfdd2-d6e4-36e8-385e-b91ecf8d1877",
4 "Data": {
5 "TaskExecutionRef": "/tasks/01EXNWQJFCBG9PE1GG1NPWPV4T",
6 "TaskExecutionId": "01EXNWQJFCBG9PE1GG1NPWPV4T"
7 }
8 }
9}
获取 CD 任务执行记录
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdTask。 |
TaskExecutionId | 是 | String | 任务执行记录 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdTaskResponseData | CD 任务执行记录数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdTask",
3 "TaskExecutionId": "01EXNWQJFCBG9PE1GG1NPWPV4T"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "c607f1b4-12b4-7b42-7ff3-09a1f5c4fff1",
4 "Data": {
5 "TaskExecutionJsonContent": "{\"application\":\"test\",\"buildTime\":1612513747872,\"endTime\":1612513748575,\"execution\":{\"application\":\"test\",\"authentication\":{\"allowedAccounts\":[],\"user\":\"coding\"},\"buildTime\":1612513747872,\"canceled\":false,\"description\":\"Create Application: test\",\"endTime\":1612513748575,\"id\":\"01EXRMY8X07T4Q2N65EGKCHZQ8\",\"initialConfig\":{},\"keepWaitingPipelines\":false,\"limitConcurrent\":false,\"notifications\":[],\"origin\":\"unknown\",\"stages\":[{\"context\":{\"application\":{\"cloudProviders\":\"kubernetes,hostserver\",\"email\":\"coding@coding.com\",\"instancePort\":80,\"lastModifyNickName\":\"coding\",\"name\":\"testteam1\",\"nickName\":\"coding\",\"permissions\":{\"EXECUTE\":[\"团队管理员team1\",\"团队所有者team1\"],\"READ\":[\"团队管理员team1\",\"团队所有者team1\"],\"WRITE\":[\"团队管理员team1\",\"团队所有者team1\"]}},\"application.name\":\"testteam1\",\"codingNickname\":\"coding\",\"newState\":{\"cloudProviders\":\"kubernetes,hostserver\",\"email\":\"coding@coding.com\",\"instancePort\":80,\"lastModifyNickName\":\"coding\",\"name\":\"testteam1\",\"nickName\":\"coding\",\"user\":\"coding\"},\"notification.type\":\"upsertapplication\",\"previousState\":{},\"refId\":\"0\",\"requisiteStageRefIds\":[],\"user\":\"coding\"},\"endTime\":1612513748522,\"id\":\"01EXRMY8X0XTMY25Y7Z26V2JBG\",\"name\":\"createApplication\",\"outputs\":{},\"refId\":\"0\",\"requisiteStageRefIds\":[],\"startTime\":1612513747953,\"status\":\"SUCCEEDED\",\"tasks\":[{\"endTime\":1612513748470,\"id\":\"1\",\"implementingClass\":\"com.netflix.spinnaker.orca.applications.tasks.UpsertApplicationTask\",\"loopEnd\":false,\"loopStart\":false,\"name\":\"createApplication\",\"stageEnd\":true,\"stageStart\":true,\"startTime\":1612513748005,\"status\":\"SUCCEEDED\"}],\"type\":\"createApplication\"}],\"startTime\":1612513747903,\"status\":\"SUCCEEDED\",\"systemNotifications\":[],\"trigger\":{\"artifacts\":[],\"codingNickname\":\"coding\",\"dryRun\":false,\"notifications\":[],\"parameters\":{},\"rebake\":false,\"resolvedExpectedArtifacts\":[],\"strategy\":false,\"type\":\"manual\",\"user\":\"coding\"},\"type\":\"ORCHESTRATION\"},\"id\":\"01EXRMY8X07T4Q2N65EGKCHZQ8\",\"name\":\"Create Application: test\",\"startTime\":1612513747903,\"status\":\"SUCCEEDED\",\"steps\":[{\"endTime\":1612513748470,\"id\":\"1\",\"implementingClass\":\"com.netflix.spinnaker.orca.applications.tasks.UpsertApplicationTask\",\"loopEnd\":false,\"loopStart\":false,\"name\":\"createApplication\",\"stageEnd\":true,\"stageStart\":true,\"startTime\":1612513748005,\"status\":\"SUCCEEDED\"}],\"variables\":[{\"key\":\"notification.type\",\"value\":\"upsertapplication\"},{\"key\":\"requisiteStageRefIds\",\"value\":[]},{\"key\":\"application\",\"value\":{\"cloudProviders\":\"kubernetes,hostserver\",\"email\":\"coding@coding.com\",\"instancePort\":80,\"lastModifyNickName\":\"coding\",\"name\":\"testteam1\",\"nickName\":\"coding\",\"permissions\":{\"EXECUTE\":[\"团队管理员team1\",\"团队所有者team1\"],\"READ\":[\"团队管理员team1\",\"团队所有者team1\"],\"WRITE\":[\"团队管理员team1\",\"团队所有者team1\"]}}},{\"key\":\"codingNickname\",\"value\":\"coding\"},{\"key\":\"refId\",\"value\":\"0\"},{\"key\":\"user\",\"value\":\"coding\"},{\"key\":\"newState\",\"value\":{\"cloudProviders\":\"kubernetes,hostserver\",\"email\":\"coding@coding.com\",\"instancePort\":80,\"lastModifyNickName\":\"coding\",\"name\":\"testteam1\",\"nickName\":\"coding\",\"user\":\"coding\"}},{\"key\":\"application.name\",\"value\":\"testteam1\"},{\"key\":\"previousState\",\"value\":{}}]}",
6 "TaskExecutionStatus": "SUCCEEDED",
7 "Application": "test"
8 }
9 }
10}
创建 CD 部署流程
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCdPipeline。 |
PipelineJsonContent | 是 | String | 部署流程 JSON 配置 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | CreateCdPipelineResponseData | CD 部署流程数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateCdPipeline",
3 "PipelineJsonContent": "{\"keepWaitingPipelines\":false,\"limitConcurrent\":true,\"application\":\"test\",\"codingNickname\":\"coding\",\"roles\":[\"团队管理员\",\"团队所有者\"],\"lastModifiedBy\":\"Hello\",\"name\":\"test\",\"stages\":[{\"refId\":\"1\",\"requisiteStageRefIds\":[],\"type\":\"wait\",\"name\":\"等待\",\"waitTime\":10}],\"index\":0,\"triggers\":[],\"updateTs\":\"1612317257852\",\"relationProjects\":[]}"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "d6398a62-9af5-7ebd-13cb-07996a25917f",
4 "Data": {
5 "TaskExecutionRef": "/tasks/01EXRN2RDRPM9DW8HCHMMNKS1M",
6 "TaskExecutionId": "01EXRN2RDRPM9DW8HCHMMNKS1M"
7 }
8 }
9}
修改 CD 部署流程
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyCdPipeline。 |
PipelineConfigId | 是 | String | 部署流程 ID |
PipelineJsonContent | 是 | String | 部署流程 JSON 配置 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | ModifyCdPipelineResponseData | 修改部署流程响应数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyCdPipeline",
3 "PipelineConfigId": "c2b76217-ba5e-4032-abbe-888765b73db4",
4 "PipelineJsonContent": "{\"keepWaitingPipelines\":false,\"lastModifiedBy\":\"coding\",\"roles\":[\"团队管理员\",\"团队所有者\"],\"index\":0,\"triggers\":[],\"relationProjects\":[],\"limitConcurrent\":true,\"application\":\"test\",\"codingNickname\":\"coding\",\"name\":\"hello\",\"stages\":[{\"name\":\"等待\",\"refId\":\"1\",\"requisiteStageRefIds\":[],\"type\":\"wait\",\"waitTime\":5}],\"id\":\"c2b76217-ba5e-4032-abbe-888765b73db4\",\"updateTs\":\"1612421444090\"}"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "c0d671f1-c998-dda9-b2aa-8276cb72b619",
4 "Data": {
5 "TaskExecutionRef": "/tasks/01EXRN6M97M91Q3E00QFMC4FZ8",
6 "TaskExecutionId": "01EXRN6M97M91Q3E00QFMC4FZ8"
7 }
8 }
9}
删除 CD 部署流程
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteCdPipeline。 |
Application | 是 | String | CD 应用名 |
PipelineName | 是 | String | 部署流程名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteCdPipeline",
3 "Application": "test",
4 "PipelineName": "test"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "01d43d0b-ed71-ed55-4704-900a0802ad1d"
4 }
5}
获取 CD 应用下的所有部署流程配置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdPipelineConfigs。 |
Application | 是 | String | CD 应用名 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdPipelineConfigsResponseData | CD 部署流程配置数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdPipelineConfigs",
3 "Application": "test"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "eb99f5ed-1a32-48f3-01aa-f44c2c96e92e",
4 "Data": {
5 "PipelineConfigs": [
6 {
7 "Id": "c2b76217-ba5e-4032-abbe-888765b73db4",
8 "Name": "hello",
9 "JsonContent": "{\"application\":\"test\",\"codingNickname\":\"coding\",\"id\":\"c2b76217-ba5e-4032-abbe-888765b73db4\",\"index\":0,\"keepWaitingPipelines\":false,\"lastModifiedBy\":\"coding\",\"limitConcurrent\":true,\"name\":\"hello\",\"relationProjects\":[],\"roles\":[\"团队管理员\",\"团队所有者\"],\"stages\":[{\"name\":\"等待\",\"refId\":\"1\",\"requisiteStageRefIds\":[],\"type\":\"wait\",\"waitTime\":5}],\"triggers\":[],\"updateTs\":\"1612514032427\"}"
10 },
11 {
12 "Id": "99d2b0cf-3225-4aa3-9bea-6e66f4608e63",
13 "Name": "test",
14 "JsonContent": "{\"application\":\"test\",\"codingNickname\":\"coding\",\"id\":\"99d2b0cf-3225-4aa3-9bea-6e66f4608e63\",\"index\":1,\"keepWaitingPipelines\":false,\"lastModifiedBy\":\"coding\",\"limitConcurrent\":true,\"name\":\"test\",\"relationProjects\":[],\"roles\":[\"团队管理员\",\"团队所有者\"],\"stages\":[{\"name\":\"等待\",\"refId\":\"1\",\"requisiteStageRefIds\":[],\"type\":\"wait\",\"waitTime\":10}],\"triggers\":[],\"updateTs\":\"1612514145161\"}"
15 }
16 ]
17 }
18 }
19}
根据名称获取 CD 部署流程配置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdPipelineConfig。 |
Application | 是 | String | CD 应用名 |
PipelineName | 是 | String | 部署流程名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdPipelineConfigResponseData | CD 部署流程配置数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdPipelineConfig",
3 "Application": "test",
4 "PipelineName": "test"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "01c09ae1-4154-f119-2089-482afe5b2166",
4 "Data": {
5 "PipelineConfig": {
6 "Id": "99d2b0cf-3225-4aa3-9bea-6e66f4608e63",
7 "Name": "test",
8 "JsonContent": "{\"application\":\"test\",\"codingNickname\":\"coding\",\"id\":\"99d2b0cf-3225-4aa3-9bea-6e66f4608e63\",\"index\":1,\"keepWaitingPipelines\":false,\"lastModifiedBy\":\"coding\",\"limitConcurrent\":true,\"name\":\"test\",\"relationProjects\":[],\"roles\":[\"团队管理员\",\"团队所有者\"],\"stages\":[{\"name\":\"等待\",\"refId\":\"1\",\"requisiteStageRefIds\":[],\"type\":\"wait\",\"waitTime\":10}],\"triggers\":[],\"updateTs\":\"1612514145161\"}"
9 }
10 }
11 }
12}
触发部署流程
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:TriggerCdPipeline。 |
Application | 是 | String | CD 应用名 |
PipelineNameOrId | 是 | String | 部署流程名称或 ID |
TriggerJsonContent | 是 | String | 触发参数 JSON 配置 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | TriggerCdPipelineResponseData | 部署流程执行记录数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "TriggerCdPipeline",
3 "Application": "test",
4 "PipelineNameOrId": "test",
5 "TriggerJsonContent": "{\"buildNumber\":\"\",\"type\":\"manual\",\"dryRun\":false,\"user\":\"coding\"}"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "2969c6e0-689c-479c-98f0-dce488795abe",
4 "Data": {
5 "PipelineExecutionRef": "/pipelines/01EXNXJVMK6EVRHB49CH7FG2BH",
6 "PipelineExecutionId": "01EXNXJVMK6EVRHB49CH7FG2BH"
7 }
8 }
9}
获取 CD 部署流程执行记录
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdPipeline。 |
PipelineExecutionId | 是 | String | 部署流程执行记录 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdPipelineResponseData | 部署流程执行记录数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdPipeline",
3 "PipelineExecutionId": "01EXNXJVMK6EVRHB49CH7FG2BH"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "eba6432e-abdf-e27b-ab5a-ddeeaa270716",
4 "Data": {
5 "PipelineExecutionJsonContent": "{\"application\":\"test\",\"authentication\":{\"allowedAccounts\":[],\"user\":\"coding\"},\"buildTime\":1612514226935,\"canceled\":false,\"customName\":\"20210205-test-test\",\"endTime\":1612514237321,\"id\":\"01EXRNCWPRS3Y0GSG4JX4N4CTE\",\"initialConfig\":{},\"keepWaitingPipelines\":false,\"limitConcurrent\":true,\"name\":\"test\",\"notifications\":[],\"origin\":\"api\",\"pipelineConfigId\":\"99d2b0cf-3225-4aa3-9bea-6e66f4608e63\",\"stages\":[{\"context\":{\"startTime\":1612514227125,\"waitTime\":10},\"endTime\":1612514237268,\"id\":\"01EXRNCWQQBBR0G5RKFQQWSVC5\",\"name\":\"等待\",\"outputs\":{},\"refId\":\"1\",\"requisiteStageRefIds\":[],\"startTime\":1612514227020,\"status\":\"SUCCEEDED\",\"tasks\":[{\"endTime\":1612514237216,\"id\":\"1\",\"implementingClass\":\"com.netflix.spinnaker.orca.pipeline.tasks.WaitTask\",\"loopEnd\":false,\"loopStart\":false,\"name\":\"wait\",\"stageEnd\":true,\"stageStart\":true,\"startTime\":1612514227072,\"status\":\"SUCCEEDED\"}],\"type\":\"wait\"}],\"startTime\":1612514226971,\"status\":\"SUCCEEDED\",\"systemNotifications\":[],\"trigger\":{\"artifacts\":[],\"codingNickname\":\"coding\",\"dryRun\":false,\"enabled\":false,\"eventId\":\"340779f8-c7c5-4b93-a1f7-41c79793a4a0\",\"executionId\":\"01EXRNCWPRS3Y0GSG4JX4N4CTE\",\"notifications\":[],\"parameters\":{},\"rebake\":false,\"resolvedExpectedArtifacts\":[],\"strategy\":false,\"syncPipelineCacheEnable\":false,\"type\":\"manual\",\"user\":\"coding\"},\"type\":\"PIPELINE\"}",
6 "PipelineExecutionStatus": "SUCCEEDED",
7 "PipelineConfigId": "99d2b0cf-3225-4aa3-9bea-6e66f4608e63",
8 "PipelineName": "test",
9 "Application": "test"
10 }
11 }
12}
查询堡垒机秘钥
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeAgentSecret。 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Secret | String | 秘钥 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeAgentSecret"
3}
成功示例
1{
2 "Response": {
3 "RequestId": "5695f2a0-643b-400d-9eb0-88b2df80ae2d",
4 "Data": {
5 "Secret": "e7a33c13117d3eea401302dc21d729f683bc26f9"
6 }
7 }
8}
查询指定序号部署流水线详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ReorderCdPipelines。 |
Action | String | 应用名称 | |
PipelineIdIndex.PipelineId | String | 流水线id | |
PipelineIdIndex.Index | String | 流水线序号 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Data | ReorderCdPipelinesResponse | 流水线详情 |
Example 1
成功示例
1{
2 "Action": "ReorderCdPipelines",
3 "Application": "test",
4 "PipelineIdIndex": {
5 "PipelineId": "8d51ff40-5227-41d2-9fe7-9374baba1973",
6 "Index": 7
7 }
8}
成功示例
1{
2 "Response": {
3 "RequestId": "3b96ea35-51dd-4af3-b9d4-7396b666469c",
4 "Data": {
5 "TaskExecutionJsonContent": "{\"application\":\"test\",\"buildTime\":1692068802983,\"endTime\":1692068803357,\"execution\":{\"application\":\"test\",\"authentication\":{\"allowedAccounts\":[],\"user\":\"2fecfdc7-c544-4ce0-ab10-21fea5b897f3@managed-service-account\"},\"buildTime\":1692068802983,\"cancelPipelineProtected\":false,\"canceled\":false,\"description\":\"Reorder pipelines\",\"endTime\":1692068803357,\"id\":\"01H7VJHWD7MF9CB4YK7VYX2JJN\",\"initialConfig\":{},\"keepWaitingPipelines\":false,\"limitConcurrent\":false,\"notifications\":[],\"origin\":\"unknown\",\"stages\":[{\"context\":{\"application\":\"testteam1\",\"codingNickname\":\"coding\",\"idsToIndices\":\"e30=\",\"isStrategy\":\"ZmFsc2U=\",\"notification.type\":\"reorderpipelines\",\"user\":\"2fecfdc7-c544-4ce0-ab10-21fea5b897f3@managed-service-account\"},\"endTime\":1692068803298,\"id\":\"01H7VJHWD77FGCJCDH13TR37QQ\",\"name\":\"reorderPipelines\",\"outputs\":{},\"refId\":\"0\",\"requisiteStageRefIds\":[],\"startTime\":1692068803068,\"status\":\"SUCCEEDED\",\"tasks\":[{\"endTime\":1692068803244,\"id\":\"1\",\"implementingClass\":\"com.netflix.spinnaker.orca.front50.tasks.ReorderPipelinesTask\",\"loopEnd\":false,\"loopStart\":false,\"name\":\"reorderPipelines\",\"stageEnd\":true,\"stageStart\":true,\"startTime\":1692068803125,\"status\":\"SUCCEEDED\"}],\"type\":\"reorderPipelines\"}],\"startTime\":1692068803013,\"status\":\"SUCCEEDED\",\"systemNotifications\":[],\"trigger\":{\"artifacts\":[],\"codingNickname\":\"coding\",\"dryRun\":false,\"notifications\":[],\"parameters\":{},\"rebake\":false,\"resolvedExpectedArtifacts\":[],\"source\":\"OPEN API\",\"stageServers\":[],\"strategy\":false,\"type\":\"manual\",\"user\":\"2fecfdc7-c544-4ce0-ab10-21fea5b897f3@managed-service-account\"},\"type\":\"ORCHESTRATION\"},\"id\":\"01H7VJHWD7MF9CB4YK7VYX2JJN\",\"name\":\"Reorder pipelines\",\"startTime\":1692068803013,\"status\":\"SUCCEEDED\",\"steps\":[{\"endTime\":1692068803244,\"id\":\"1\",\"implementingClass\":\"com.netflix.spinnaker.orca.front50.tasks.ReorderPipelinesTask\",\"loopEnd\":false,\"loopStart\":false,\"name\":\"reorderPipelines\",\"stageEnd\":true,\"stageStart\":true,\"startTime\":1692068803125,\"status\":\"SUCCEEDED\"}],\"variables\":[{\"key\":\"idsToIndices\",\"value\":\"e30=\"},{\"key\":\"notification.type\",\"value\":\"reorderpipelines\"},{\"key\":\"application\",\"value\":\"test\"},{\"key\":\"codingNickname\",\"value\":\"coding\"},{\"key\":\"isStrategy\",\"value\":\"ZmFsc2U=\"},{\"key\":\"user\",\"value\":\"2fecfdc7-c544-4ce0-ab10-21fea5b897f3@managed-service-account\"}]}",
6 "TaskExecutionStatus": "SUCCEEDED"
7 }
8 }
9}
获取 CD 部署执行历史
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeExecutionsByConfigId。 |
ConfigId | 是 | String | 流水线 configId |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeExecutionsByConfigIdResponseData | 部署执行历史 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeExecutionsByConfigId",
3 "Limit": 1,
4 "ConfigId": "8d51ff40-5227-41d2-9fe7-9374baba1973"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1c9ff61c-9504-4e00-8c67-b49af9fa5477",
4 "Data": {
5 "Executions": [
6 {
7 "Application": "testteam1",
8 "Authentication": "{\"user\":\"2fecfdc7-c544-4ce0-ab10-21fea5b897f3@managed-service-account\",\"allowedAccounts\":[]}",
9 "BuildTime": 1692006304683,
10 "Canceled": false,
11 "CustomName": "20230814-test-bushu",
12 "Id": "01H7SPYJVW0NZARS627V1V0NCM",
13 "InitialConfig": "{}",
14 "KeepWaitingPipelines": false,
15 "LimitConcurrent": true,
16 "Name": "bushu",
17 "Origin": "api",
18 "PipelineConfigId": "8d51ff40-5227-41d2-9fe7-9374baba1973",
19 "Stages": "[{\"id\":\"01H7SPYJXBDK2XHQR0M4SE3JAQ\",\"refId\":\"1\",\"type\":\"deployHostserver\",\"name\":\"部署(主机组)\",\"startTime\":1692006304849,\"endTime\":1692006412552,\"status\":\"SUCCEEDED\",\"context\":{\"force.cache.refresh.errors\":[],\"zeroDesiredCapacityCount\":9,\"releaseName\":\"java\",\"initialed\":true,\"currentInstanceCount\":2,\"rolling\":false,\"cloudProvider\":\"hostserver\",\"kato.result.expected\":false,\"deploy.server.groups\":{\"虚拟机\":[\"testteam1-java-v003\"]},\"preScripts\":[{\"artifact\":{},\"timeoutSeconds\":10,\"artifactId\":\"\",\"source\":\"text\",\"type\":\"generic\",\"content\":\"sleep 100\\necho 111 >> /root/cd.log\"}],\"rollingType\":\"targetPercentages\",\"kato.last.task.id\":{\"id\":\"01H7SPYKEGBC30NWH3NS6G7B7Q\"},\"artifacts\":[],\"livenessProbe\":{\"periodSeconds\":10,\"timeoutSeconds\":3,\"shellProbe\":{\"source\":\"artifact\",\"content\":\"\"},\"httpProbe\":{\"path\":\"\",\"httpHeaders\":[]},\"type\":\"http\"},\"processed.server.groups\":[],\"refreshed.server.groups\":[],\"isNew\":true,\"moniker\":{\"app\":\"testteam1\",\"stack\":\"java\"},\"zones\":[],\"kato.task.firstNotFoundRetry\":-1,\"capacitySnapshot\":{\"minSize\":0,\"maxSize\":0,\"desiredCapacity\":0},\"postScripts\":[{\"artifact\":{},\"timeoutSeconds\":10,\"artifactId\":\"\",\"source\":\"text\",\"type\":\"generic\",\"content\":\"echo 22222 >> /root/cd.log\"}],\"completeOtherBranchesThenFail\":false,\"failPipeline\":true,\"kato.tasks\":[{\"resultObjects\":[{\"ancestorServerGroupNameByRegion\":{\"虚拟机\":\"testteam1-java-v002\"}},{\"deployments\":[{\"metadata\":{},\"serverGroupName\":\"testteam1-java-v003\",\"location\":\"虚拟机\"}],\"serverGroupNames\":[\"虚拟机:testteam1-java-v003\"],\"createdArtifacts\":[],\"deployedNamesByLocation\":{},\"deployedNames\":[],\"messages\":[],\"serverGroupNameByRegion\":{\"虚拟机\":\"testteam1-java-v003\"}}],\"id\":\"01H7SPYKEGBC30NWH3NS6G7B7Q\",\"history\":[{\"phase\":\"ORCHESTRATION\",\"status\":\"Initializing Orchestration Task\"},{\"phase\":\"ORCHESTRATION\",\"status\":\"Processing op: DeployAtomicOperatio\"},{\"phase\":\"DEPLOY\",\"status\":\"Initializing phase\"},{\"phase\":\"DEPLOY\",\"status\":\"Looking for HostServerDeployManifestDescription handler..\"},{\"phase\":\"DEPLOY\",\"status\":\"Found handler: HostServerDeployHandle\"},{\"phase\":\"DEPLOY\",\"status\":\"Invoking Handler\"},{\"phase\":\"DEPLOY_HOST_SERVER_MANIFEST\",\"status\":\"host server start deployingnul\"},{\"phase\":\"HOST_SERVER_DEPLOY\",\"status\":\"Found ancestor server group, parsing details (name: testteam1-java-v002\"},{\"phase\":\"DEPLOY_HOST_SERVER_MANIFEST\",\"status\":\"Produced server group name: testteam1-java-v00\"},{\"phase\":\"DEPLOY_HOST_SERVER_MANIFEST\",\"status\":\"host server deployednul\"},{\"phase\":\"DEPLOY\",\"status\":\"Server Groups: [虚拟机:testteam1-java-v003] created\"},{\"phase\":\"ORCHESTRATION\",\"status\":\"Orchestration completed\"},{\"phase\":\"ORCHESTRATION\",\"status\":\"Orchestration completed\"}],\"status\":{\"retryable\":false,\"completed\":true,\"failed\":false}}],\"sendNotifications\":false,\"region\":\"虚拟机\",\"kato.task.notFoundRetryCount\":0,\"account\":\"cred-3-5000001team1\",\"continuePipeline\":false},\"outputs\":{},\"tasks\":[{\"id\":\"1\",\"implementingClass\":\"com.netflix.spinnaker.orca.clouddriver.tasks.hostserver.DeployHostserverTask\",\"name\":\"deployHostserver\",\"startTime\":1692006305035,\"endTime\":1692006305312,\"status\":\"SUCCEEDED\",\"stageStart\":true,\"stageEnd\":false,\"loopStart\":false,\"loopEnd\":false},{\"id\":\"2\",\"implementingClass\":\"com.netflix.spinnaker.orca.clouddriver.tasks.MonitorKatoTask\",\"name\":\"monitorDeploy\",\"startTime\":1692006305368,\"endTime\":1692006310561,\"status\":\"SUCCEEDED\",\"stageStart\":false,\"stageEnd\":false,\"loopStart\":false,\"loopEnd\":false},{\"id\":\"3\",\"implementingClass\":\"com.netflix.spinnaker.orca.clouddriver.tasks.servergroup.ServerGroupCacheForceRefreshTask\",\"name\":\"forceCacheRefresh\",\"startTime\":1692006310616,\"endTime\":1692006320938,\"status\":\"SUCCEEDED\",\"stageStart\":false,\"stageEnd\":false,\"loopStart\":false,\"loopEnd\":false},{\"id\":\"4\",\"implementingClass\":\"com.netflix.spinnaker.orca.clouddriver.tasks.hostserver.WaitForDeployHostserverTask\",\"name\":\"waitForDeployCompleted\",\"startTime\":1692006321037,\"endTime\":1692006412491,\"status\":\"SUCCEEDED\",\"stageStart\":false,\"stageEnd\":true,\"loopStart\":false,\"loopEnd\":false}],\"requisiteStageRefIds\":[]},{\"id\":\"01H7SPYJXBSCDW3BYC92K58KG5\",\"refId\":\"2\",\"type\":\"deployHostserver\",\"name\":\"部署(主机组)\",\"startTime\":1692006412640,\"endTime\":1692006423724,\"status\":\"SUCCEEDED\",\"context\":{\"force.cache.refresh.errors\":[],\"releaseName\":\"ttttt\",\"initialed\":true,\"rolling\":false,\"cloudProvider\":\"hostserver\",\"kato.result.expected\":false,\"deploy.server.groups\":{\"虚拟机\":[\"testteam1-ttttt-v000\"]},\"preScripts\":[{\"artifact\":{},\"timeoutSeconds\":10,\"artifactId\":\"\",\"source\":\"text\",\"type\":\"generic\",\"content\":\"echo 111 >> /tmp/cd2.log\"}],\"rollingType\":\"targetPercentages\",\"kato.last.task.id\":{\"id\":\"01H7SQ1WJDT52FM796GZ50XVE6\"},\"artifacts\":[],\"livenessProbe\":{\"periodSeconds\":10,\"timeoutSeconds\":3,\"shellProbe\":{\"source\":\"artifact\",\"content\":\"\"},\"httpProbe\":{\"path\":\"\",\"httpHeaders\":[]},\"type\":\"http\"},\"processed.server.groups\":[],\"refreshed.server.groups\":[],\"isNew\":true,\"moniker\":{\"app\":\"testteam1\",\"stack\":\"ttttt\"},\"zones\":[],\"kato.task.firstNotFoundRetry\":-1,\"postScripts\":[{\"artifact\":{},\"timeoutSeconds\":10,\"artifactId\":\"\",\"source\":\"text\",\"type\":\"generic\",\"content\":\"echo 2222 >> /tmp/cd2.log\"}],\"completeOtherBranchesThenFail\":false,\"failPipeline\":true,\"kato.tasks\":[{\"resultObjects\":[{\"deployments\":[{\"metadata\":{},\"serverGroupName\":\"testteam1-ttttt-v000\",\"location\":\"虚拟机\"}],\"serverGroupNames\":[\"虚拟机:testteam1-ttttt-v000\"],\"createdArtifacts\":[],\"deployedNamesByLocation\":{},\"deployedNames\":[],\"messages\":[],\"serverGroupNameByRegion\":{\"虚拟机\":\"testteam1-ttttt-v000\"}}],\"id\":\"01H7SQ1WJDT52FM796GZ50XVE6\",\"history\":[{\"phase\":\"ORCHESTRATION\",\"status\":\"Initializing Orchestration Task\"},{\"phase\":\"ORCHESTRATION\",\"status\":\"Processing op: DeployAtomicOperatio\"},{\"phase\":\"DEPLOY\",\"status\":\"Initializing phase\"},{\"phase\":\"DEPLOY\",\"status\":\"Looking for HostServerDeployManifestDescription handler..\"},{\"phase\":\"DEPLOY\",\"status\":\"Found handler: HostServerDeployHandle\"},{\"phase\":\"DEPLOY\",\"status\":\"Invoking Handler\"},{\"phase\":\"DEPLOY_HOST_SERVER_MANIFEST\",\"status\":\"host server start deployingnul\"},{\"phase\":\"DEPLOY_HOST_SERVER_MANIFEST\",\"status\":\"Produced server group name: testteam1-ttttt-v00\"},{\"phase\":\"DEPLOY_HOST_SERVER_MANIFEST\",\"status\":\"host server deployednul\"},{\"phase\":\"DEPLOY\",\"status\":\"Server Groups: [虚拟机:testteam1-ttttt-v000] created\"},{\"phase\":\"ORCHESTRATION\",\"status\":\"Orchestration completed\"},{\"phase\":\"ORCHESTRATION\",\"status\":\"Orchestration completed\"}],\"status\":{\"retryable\":false,\"completed\":true,\"failed\":false}}],\"sendNotifications\":false,\"region\":\"虚拟机\",\"kato.task.notFoundRetryCount\":0,\"account\":\"cred-3-5000001team1\",\"continuePipeline\":false},\"outputs\":{},\"tasks\":[{\"id\":\"1\",\"implementingClass\":\"com.netflix.spinnaker.orca.clouddriver.tasks.hostserver.DeployHostserverTask\",\"name\":\"deployHostserver\",\"startTime\":1692006412738,\"endTime\":1692006412949,\"status\":\"SUCCEEDED\",\"stageStart\":true,\"stageEnd\":false,\"loopStart\":false,\"loopEnd\":false},{\"id\":\"2\",\"implementingClass\":\"com.netflix.spinnaker.orca.clouddriver.tasks.MonitorKatoTask\",\"name\":\"monitorDeploy\",\"startTime\":1692006413005,\"endTime\":1692006413119,\"status\":\"SUCCEEDED\",\"stageStart\":false,\"stageEnd\":false,\"loopStart\":false,\"loopEnd\":false},{\"id\":\"3\",\"implementingClass\":\"com.netflix.spinnaker.orca.clouddriver.tasks.servergroup.ServerGroupCacheForceRefreshTask\",\"name\":\"forceCacheRefresh\",\"startTime\":1692006413176,\"endTime\":1692006423382,\"status\":\"SUCCEEDED\",\"stageStart\":false,\"stageEnd\":false,\"loopStart\":false,\"loopEnd\":false},{\"id\":\"4\",\"implementingClass\":\"com.netflix.spinnaker.orca.clouddriver.tasks.hostserver.WaitForDeployHostserverTask\",\"name\":\"waitForDeployCompleted\",\"startTime\":1692006423438,\"endTime\":1692006423665,\"status\":\"SUCCEEDED\",\"stageStart\":false,\"stageEnd\":true,\"loopStart\":false,\"loopEnd\":false}],\"requisiteStageRefIds\":[\"1\"]}]",
20 "StartTime": 0,
21 "Status": "SUCCEEDED",
22 "SystemNotifications": "[]",
23 "Type": "PIPELINE"
24 }
25 ]
26 }
27 }
28}
获取 CD 主机组部署详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeHostServerInstance。 |
Account | 是 | String | 部署账号 从 DescribeCdPipeline 获取 |
ServerGroupName | 是 | String | 主机组名称 从 DescribeCdPipeline 获取 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Account | String | 部署账号 |
CloudProvider | String | 云主机类型 主机组部署默认为 hostserver |
DeployedTime | Long | 部署时间 |
HumanReadableName | String | 主机ip |
Ip | String | 主机ip |
Name | String | 该主机部署主键 |
ProviderType | String | 云主机类型 主机组部署默认为 hostserver |
Region | String | 主机组名称 |
Status | String | 部署状态 succeed:成功 failed:失败 running:运行中 |
Zone | String | 主机组名称 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeHostServerInstance",
3 "Account": "cred-4-5000015",
4 "ServerGroupName": "app4-service-v000"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "eba6432e-abdf-e27b-ab5a-ddeeaa270716",
4 "Data": [
5 {
6 "Account": "cred-4-5000015",
7 "CloudProvider": "hostserver",
8 "DeployedTime": 1691549460000,
9 "HumanReadableName": "9.135.146.88",
10 "Ip": "9.135.146.88",
11 "Name": "8095d3821c2b00a09f98742c312c0cf7531613a1",
12 "ProviderType": "hostserver",
13 "Region": "test",
14 "Status": "succeed",
15 "Zone": "test"
16 }
17 ]
18 }
19}
取消执行中的 CD 部署流程
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CancelCdPipeline。 |
PipelineExecutionId | 是 | String | 部署流程执行记录 ID |
Reason | 否 | String | 取消原因 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CancelCdPipeline",
3 "PipelineExecutionId": "01FCWNV355ECJSZYXFQE3166VT"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "f78e5722-c4e6-09fc-664c-62e98a970fb0"
4 }
5}
获取 CD 主机组列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdHostServerGroups。 |
PageNumber | 否 | Integer | 页码(默认为 1) |
PageSize | 否 | Integer | 每页条数(默认为 10,最大值为 500) |
Keyword | 否 | String | 检索关键字(按主机组名称搜索) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdHostServerGroupsResponseData | 主机组列表数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdHostServerGroups",
3 "PageNumber": 1,
4 "PageSize": 10,
5 "Keyword": ""
6}
成功示例
1{
2 "Response": {
3 "RequestId": "fe2689f4-72e0-02cf-8f98-e807c393d206",
4 "Data": {
5 "HostServerGroups": [
6 {
7 "AgentMachine": {
8 "Id": 16,
9 "Name": "master",
10 "Status": "SUCCESS"
11 },
12 "Id": 18,
13 "DisplayName": "local-server-group",
14 "Account": "cred-16-18"
15 }
16 ],
17 "PageNumber": 1,
18 "PageSize": 10,
19 "TotalPage": 1,
20 "TotalRow": 1
21 }
22 }
23}
获取 CD 堡垒机列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdAgentMachines。 |
PageNumber | 否 | Integer | 页码(默认为 1) |
PageSize | 否 | Integer | 每页条数(默认为 10,最大值为 500) |
Keyword | 否 | String | 检索关键字(按堡垒机名称搜索) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdAgentMachinesResponseData | 堡垒机列表数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdAgentMachines",
3 "PageNumber": 1,
4 "PageSize": 10,
5 "Keyword": ""
6}
成功示例
1{
2 "Response": {
3 "RequestId": "5a3d0128-36a3-cce3-2938-7f7e2f68b5c3",
4 "Data": {
5 "AgentMachines": [
6 {
7 "Id": 10,
8 "Name": "master",
9 "Status": "SUCCESS"
10 }
11 ],
12 "PageNumber": 1,
13 "PageSize": 10,
14 "TotalPage": 1,
15 "TotalRow": 1
16 }
17 }
18}
添加 CD 主机组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCdHostServerGroup。 |
AgentMachineId | 是 | Integer | 堡垒机 ID |
DisplayName | 是 | String | 主机组名称 |
AuthMethod | 是 | String | SSH 认证方式(可选值:PUBLIC_KEY、PASSWORD) |
UserName | 是 | String | SSH 用户名 |
Port | 是 | Integer | SSH 端口 |
Ips | 是 | Array of String | 实例 IP 列表 |
Password | 否 | String | SSH 密码 |
Labels | 否 | Array of HostServerGroupLabel | 主机组标签 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | CreateCdHostServerGroupResponseData | 主机组数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数详解
HostServerGroupLabel 参数
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Key | String | 是 | 主机组标签键 |
Value | String | 是 | 主机组标签值 |
Example 1
成功示例
1{
2 "Action": "CreateCdHostServerGroup",
3 "AgentMachineId": 10,
4 "DisplayName": "test",
5 "AuthMethod": "PUBLIC_KEY",
6 "UserName": "root",
7 "Port": 36000,
8 "Labels": [
9 {
10 "Key": "testKey",
11 "Value": "testValue"
12 }
13 ],
14 "Ips": [
15 "127.0.0.1"
16 ]
17}
成功示例
1{
2 "Response": {
3 "RequestId": "9d8775ae-cd91-d0ca-d0b2-24761bb073c7",
4 "Data": {
5 "HostServerGroup": {
6 "AgentMachine": {
7 "Id": 10,
8 "Name": "master",
9 "Status": "SUCCESS"
10 },
11 "Id": 41,
12 "DisplayName": "test",
13 "Account": "cred-10-41"
14 }
15 }
16 }
17}
修改 CD 主机组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyCdHostServerGroup。 |
AgentMachineId | 是 | Integer | 堡垒机 ID |
DisplayName | 是 | String | 主机组名称 |
AuthMethod | 是 | String | SSH 认证方式(可选值:PUBLIC_KEY、PASSWORD) |
UserName | 是 | String | SSH 用户名 |
Port | 是 | Integer | SSH 端口 |
Ips | 是 | Array of String | 实例 IP 列表 |
Id | 是 | Integer | 主机组 ID |
Password | 否 | String | SSH 密码 |
Labels | 否 | Array of HostServerGroupLabel | 主机组标签 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | ModifyCdHostServerGroupResponseData | 主机组数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数详解
HostServerGroupLabel 参数
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Key | String | 是 | 主机组标签键 |
Value | String | 是 | 主机组标签值 |
Example 1
成功示例
1{
2 "Action": "ModifyCdHostServerGroup",
3 "Id": 41,
4 "AgentMachineId": 10,
5 "DisplayName": "test-1",
6 "AuthMethod": "PUBLIC_KEY",
7 "UserName": "root",
8 "Port": 36000,
9 "Labels": [
10 {
11 "Key": "testKey",
12 "Value": "testValue"
13 }
14 ],
15 "Ips": [
16 "127.0.0.1"
17 ]
18}
成功示例
1{
2 "Response": {
3 "RequestId": "10906500-927d-82ab-7e95-3f5242712f12",
4 "Data": {
5 "HostServerGroup": {
6 "AgentMachine": {
7 "Id": 10,
8 "Name": "master",
9 "Status": "SUCCESS"
10 },
11 "Id": 41,
12 "DisplayName": "test-1",
13 "Account": "cred-10-41"
14 }
15 }
16 }
17}
获取 CD 主机组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdHostServerGroup。 |
Id | 是 | Integer | 主机组 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdHostServerGroupResponseData | 主机组详情数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdHostServerGroup",
3 "Id": 41
4}
成功示例
1{
2 "Response": {
3 "RequestId": "175127c8-bc19-5a38-b6c9-8f1a46f15c66",
4 "Data": {
5 "HostServerGroup": {
6 "AgentMachine": {
7 "Id": 10,
8 "Name": "master",
9 "Status": "SUCCESS"
10 },
11 "Id": 41,
12 "DisplayName": "test-1",
13 "Account": "cred-10-41",
14 "AuthMethod": "PUBLIC_KEY",
15 "UserName": "root",
16 "Port": 36000,
17 "Labels": [
18 {
19 "Key": "testKey",
20 "Value": "testValue"
21 }
22 ],
23 "Ips": [
24 "127.0.0.1"
25 ]
26 }
27 }
28 }
29}
删除 CD 主机组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteCdHostServerGroup。 |
Id | 是 | Integer | 主机组 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteCdHostServerGroup",
3 "Id": 41
4}
成功示例
1{
2 "Response": {
3 "RequestId": "a3d7e086-df2b-02a5-46f8-68bf99e2f514"
4 }
5}
添加 CD 云账号
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCdCloudAccount。 |
CloudProvider | 是 | String | 云账号类型(可选值:KUBERNETES、TENCENT) |
Name | 是 | String | 云账号名称 |
Credential | 是 | CloudAccountCredential | 云账号凭据 |
CloudAccountCredential 参数详解
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
KubernetesType | 否 | String | KUBERNETES 类型云账号认证方式(可选值:KUBE_CONFIG、SERVICE_ACCOUNT、TKE),TENCENT 类型云账号可不填 |
KubeConfig | 否 | KubeConfigForm | Kubeconfig 认证方式的凭据 |
ServiceAccount | 否 | ServiceAccountForm | ServiceAccount 认证方式的凭据 |
TkeConfig | 否 | TKEConfigForm | TKE 集群的配置 |
TencentCloudAccount | 否 | TencentCloudAccountForm | 腾讯云账号的凭据 |
KubeConfigForm 参数详解
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
KubeConfig | 否 | String | 访问集群的 KubeConfig 文件(YAML 格式,Base64 编码),添加时必填,修改时可不填 |
ClusterContext | 是 | String | 指定访问集群 KubeConfig 文件的上下文 |
InsecureSkipTLSVerify | 是 | Boolean | 是否接受非认证证书(是:true;否:false) |
OnlySpinnakerManaged | 是 | Boolean | 是否允许持续部署管理集群已有资源(是:false;否:true) |
ServiceAccountForm 参数详解
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Secret | 否 | String | ServiceAccount 关联的 Secret(YAML 格式,Base64 编码),添加时必填,修改时可不填 |
Server | 是 | String | API Server URL |
InsecureSkipTLSVerify | 是 | Boolean | 是否接受非认证证书(是:true;否:false) |
OnlySpinnakerManaged | 是 | Boolean | 是否允许持续部署管理集群已有资源(是:false;否:true) |
TKEConfigForm 参数详解
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Region | 是 | String | TKE 地域 |
ClusterId | 是 | String | TKE 集群 ID |
Namespaces | 否 | Array of String | 将为选择的每个命名空间自动生成用于访问 CODING Docker 仓库的凭据(ImagePullSecrets) |
OnlySpinnakerManaged | 是 | Boolean | 是否允许持续部署管理集群已有资源(是:false;否:true) |
TencentCloudAccountForm 参数详解
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
SecretId | 是 | String | 腾讯云 API 密钥 ID |
SecretKey | 否 | String | 腾讯云 API 密钥 Key |
Regions | 是 | Array of String | CVM 地域 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Data | CreateCdCloudAccountResponseData | 云账号数据 |
Example 1
成功示例
1{
2 "Action": "CreateCdCloudAccount",
3 "CloudProvider": "KUBERNETES",
4 "Name": "test",
5 "Credential": {
6 "KubernetesType": "KUBE_CONFIG",
7 "KubeConfig": {
8 "InsecureSkipTLSVerify": false,
9 "OnlySpinnakerManaged": true,
10 "ClusterContext": "kubernetes-admin@k8s-227",
11 "KubeConfig": "YXBpVmVyc2lvbjogdjEKa2luZDogQ29uZmln"
12 }
13 }
14}
成功示例
1{
2 "Response": {
3 "RequestId": "2e144be9-965e-49d8-8f3e-1eff17677f42",
4 "Data": {
5 "CloudAccount": {
6 "Id": 5000010,
7 "Name": "test",
8 "CloudProvider": "KUBERNETES",
9 "Credential": {
10 "KubernetesType": "KUBE_CONFIG",
11 "KubeConfig": {
12 "KubeConfig": "",
13 "ClusterContext": "kubernetes-admin@k8s-227",
14 "InsecureSkipTLSVerify": false,
15 "OnlySpinnakerManaged": true
16 },
17 "ServiceAccount": {
18 "Secret": "",
19 "Server": "",
20 "InsecureSkipTLSVerify": false,
21 "OnlySpinnakerManaged": false
22 },
23 "TKEConfig": {
24 "Region": "",
25 "ClusterId": "",
26 "Namespaces": [],
27 "OnlySpinnakerManaged": false
28 },
29 "TencentCloudAccount": {
30 "SecretId": "",
31 "SecretKey": "",
32 "Regions": []
33 }
34 },
35 "Status": "SUCCESS",
36 "ErrorMessage": ""
37 }
38 }
39 }
40}
更新 CD 云账号
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyCdCloudAccount。 |
Id | 是 | Integer | 云账号 ID |
Name | 是 | String | 云账号名称 |
Credential | 是 | CloudAccountCredential | 云账号凭据 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | ModifyCdCloudAccountResponseData | 云账号数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyCdCloudAccount",
3 "Id": 5000010,
4 "Name": "test",
5 "Credential": {
6 "KubernetesType": "SERVICE_ACCOUNT",
7 "ServiceAccount": {
8 "InsecureSkipTLSVerify": false,
9 "OnlySpinnakerManaged": true,
10 "Server": "https://api-server-host:6443",
11 "Secret": "YXBpVmVyc2lvbjogdjEKa2luZDogU2VjcmV0"
12 }
13 }
14}
成功示例
1{
2 "Response": {
3 "RequestId": "772b4b61-ebbb-489f-b3f2-8e752fc34f41",
4 "Data": {
5 "CloudAccount": {
6 "Id": 5000010,
7 "Name": "test",
8 "CloudProvider": "KUBERNETES",
9 "Credential": {
10 "KubernetesType": "SERVICE_ACCOUNT",
11 "KubeConfig": {
12 "KubeConfig": "",
13 "ClusterContext": "",
14 "InsecureSkipTLSVerify": false,
15 "OnlySpinnakerManaged": false
16 },
17 "ServiceAccount": {
18 "Secret": "",
19 "Server": "https://api-server-host:6443",
20 "InsecureSkipTLSVerify": false,
21 "OnlySpinnakerManaged": true
22 },
23 "TKEConfig": {
24 "Region": "",
25 "ClusterId": "",
26 "Namespaces": [],
27 "OnlySpinnakerManaged": false
28 },
29 "TencentCloudAccount": {
30 "SecretId": "",
31 "SecretKey": "",
32 "Regions": []
33 }
34 },
35 "Status": "SUCCESS",
36 "ErrorMessage": ""
37 }
38 }
39 }
40}
删除 CD 云账号
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteCdCloudAccount。 |
Id | 是 | Integer | 云账号 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteCdCloudAccount",
3 "Id": 5000010
4}
成功示例
1{
2 "Response": {
3 "RequestId": "6634c0b2-24f0-4eea-9369-458cdaed8607"
4 }
5}
获取 CD 云账号列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCdCloudAccounts。 |
PageNumber | 否 | Integer | 页码(默认为 1) |
PageSize | 否 | Integer | 每页条数(默认为 10,最大值为 500) |
Keyword | 否 | String | 检索关键字(按云账号名称搜索) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | DescribeCdCloudAccountsResponseData | 云账号列表数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeCdCloudAccounts"
3}
成功示例
1{
2 "Response": {
3 "RequestId": "92a4150c-77de-4364-9925-89bac5dae559",
4 "Data": {
5 "CloudAccounts": [
6 {
7 "Id": 5000001,
8 "Name": "tsf",
9 "CloudProvider": "TENCENT",
10 "Credential": {
11 "KubernetesType": "DEFAULT",
12 "KubeConfig": {
13 "KubeConfig": "",
14 "ClusterContext": "",
15 "InsecureSkipTLSVerify": false,
16 "OnlySpinnakerManaged": false
17 },
18 "ServiceAccount": {
19 "Secret": "",
20 "Server": "",
21 "InsecureSkipTLSVerify": false,
22 "OnlySpinnakerManaged": false
23 },
24 "TKEConfig": {
25 "Region": "",
26 "ClusterId": "",
27 "Namespaces": [],
28 "OnlySpinnakerManaged": false
29 },
30 "TencentCloudAccount": {
31 "SecretId": "AKIDxxx",
32 "SecretKey": "",
33 "Regions": [
34 "ap-guangzhou"
35 ]
36 }
37 },
38 "Status": "SUCCESS",
39 "ErrorMessage": ""
40 },
41 {
42 "Id": 5000009,
43 "Name": "tke",
44 "CloudProvider": "KUBERNETES",
45 "Credential": {
46 "KubernetesType": "TKE",
47 "KubeConfig": {
48 "KubeConfig": "",
49 "ClusterContext": "",
50 "InsecureSkipTLSVerify": false,
51 "OnlySpinnakerManaged": false
52 },
53 "ServiceAccount": {
54 "Secret": "",
55 "Server": "",
56 "InsecureSkipTLSVerify": false,
57 "OnlySpinnakerManaged": false
58 },
59 "TKEConfig": {
60 "Region": "ap-guangzhou",
61 "ClusterId": "cls-xxx",
62 "Namespaces": [],
63 "OnlySpinnakerManaged": true
64 },
65 "TencentCloudAccount": {
66 "SecretId": "",
67 "SecretKey": "",
68 "Regions": []
69 }
70 },
71 "Status": "SUCCESS",
72 "ErrorMessage": ""
73 },
74 {
75 "Id": 5000010,
76 "Name": "test",
77 "CloudProvider": "KUBERNETES",
78 "Credential": {
79 "KubernetesType": "SERVICE_ACCOUNT",
80 "KubeConfig": {
81 "KubeConfig": "",
82 "ClusterContext": "",
83 "InsecureSkipTLSVerify": false,
84 "OnlySpinnakerManaged": false
85 },
86 "ServiceAccount": {
87 "Secret": "",
88 "Server": "https://api-server-host:6443",
89 "InsecureSkipTLSVerify": false,
90 "OnlySpinnakerManaged": true
91 },
92 "TKEConfig": {
93 "Region": "",
94 "ClusterId": "",
95 "Namespaces": [],
96 "OnlySpinnakerManaged": false
97 },
98 "TencentCloudAccount": {
99 "SecretId": "",
100 "SecretKey": "",
101 "Regions": []
102 }
103 },
104 "Status": "SUCCESS",
105 "ErrorMessage": ""
106 },
107 {
108 "Id": 5000000,
109 "Name": "227",
110 "CloudProvider": "KUBERNETES",
111 "Credential": {
112 "KubernetesType": "KUBE_CONFIG",
113 "KubeConfig": {
114 "KubeConfig": "",
115 "ClusterContext": "kubernetes-admin@k8s-227",
116 "InsecureSkipTLSVerify": false,
117 "OnlySpinnakerManaged": false
118 },
119 "ServiceAccount": {
120 "Secret": "",
121 "Server": "",
122 "InsecureSkipTLSVerify": false,
123 "OnlySpinnakerManaged": false
124 },
125 "TKEConfig": {
126 "Region": "",
127 "ClusterId": "",
128 "Namespaces": [],
129 "OnlySpinnakerManaged": false
130 },
131 "TencentCloudAccount": {
132 "SecretId": "",
133 "SecretKey": "",
134 "Regions": []
135 }
136 },
137 "Status": "SUCCESS",
138 "ErrorMessage": ""
139 }
140 ],
141 "PageNumber": 1,
142 "PageSize": 10,
143 "TotalPage": 1,
144 "TotalRow": 4
145 }
146 }
147}
创建制品仓库
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateArtifactRepository。 |
ProjectId | 是 | Integer | 项目 ID |
RepositoryName | 是 | String | 仓库名称 |
Type | 是 | Integer | 仓库类型:1-generic;2-docker;3-maven;4-npm;5-pypi;6-helm;7-composer;8-nuget;9-conan;10-cocoapods;11-rpm |
Description | 否 | String | 仓库描述信息 |
AccessLevel | 否 | Integer | 仓库权限范围:1-项目内;2-团队内;3-公开,默认:1-项目内 |
AllowProxy | 否 | Boolean | 是否开启代理,仅支持当 Type 为 3-maven;4-npm; 5-PyPI;7-composer;10-cocoapods 时可为 true,默认:false |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 创建成功的仓库 ID |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateArtifactRepository",
3 "ProjectId": 450,
4 "AccessLevel": 1,
5 "AllowProxy": false,
6 "RepositoryName": "api_created",
7 "Type": 1
8}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Id": 1
5 }
6}
查询制品仓库列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeArtifactRepositoryList。 |
ProjectId | 是 | Integer | 项目 ID |
PageNumber | 否 | Integer | 页码,默认:1 |
PageSize | 否 | Integer | 每页展示数量,默认:10 |
Type | 否 | Integer | 仓库类型:1-generic;2-docker;3-maven;4-npm;5-pypi;6-helm;7-composer;8-nuget;9-conan;10-cocoapods;11-rpm |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | ArtifactRepositoryPageBean | 返回数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ArtifactRepositoryPageBean
被如下接口引用:DescribeArtifactRepositoryList。
名称 | 类型 | 描述 |
---|---|---|
InstanceSet | Array of ArtifactRepositoryBean | 分页数据列表 |
PageNumber | Integer | 页码 |
PageSize | Integer | 每页展示数量 |
TotalCount | Integer | 数据总数 |
ArtifactRepositoryBean
被如下接口引用:DescribeArtifactRepositoryList。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 仓库 ID |
Name | String | 仓库名称 |
TeamId | Integer | 团队 ID |
ProjectId | Integer | 项目 ID |
Type | Integer | 仓库类型:1-generic;2-docker;3-maven;4-npm;5-pypi;6-helm;7-composer;8-nuget;9-conan;10-cocoapods;11-rpm |
Description | String | 仓库描述 注意:此字段可能返回 null,表示取不到有效值。 |
AccessLevel | Integer | 仓库访问权限:1-项目内;2-团队内;3-公开 |
ReleaseStrategy | Integer | 版本发布策略:1-允许覆盖发布;2-不允许覆盖发布;3-快照策略 |
CreatedAt | Integer | 创建时间 |
Example 1
成功示例
1{
2 "Action": "DescribeArtifactRepositoryList",
3 "ProjectId": 450,
4 "PageNumber": 1,
5 "PageSize": 1,
6 "Type": 1
7}
成功示例
1{
2 "Response": {
3 "RequestId": "3c140219-cfe9-470e-b241-907877d6fb03",
4 "Data": {
5 "InstanceSet": [
6 {
7 "Id": 246823,
8 "Name": "1232",
9 "TeamId": 64,
10 "ProjectId": 7936000,
11 "Type": 1,
12 "Description": "",
13 "AccessLevel": 1,
14 "CreatedAt": 1605600358,
15 "ReleaseStrategy": 1
16 }
17 ],
18 "PageNumber": 1,
19 "PageSize": 10,
20 "TotalCount": 3
21 }
22 }
23}
查询制品仓库可下载文件列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeArtifactRepositoryFileList。 |
Project | 是 | String | 项目名称 |
Repository | 是 | String | 仓库名 |
ContinuationToken | 否 | String | 翻页符。每次 list 操作会返回 ContinuationToken,在下一次 list 传入该值,即可接续上次 list 内容进行 list,最后一页该字段为空 |
PageSize | 否 | Integer | 每页展示条数,默认值:1000 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | ArtifactRepositoryFileListData | 返回数据体 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ArtifactRepositoryFileListData
制品仓库文件列表
被如下接口引用:DescribeArtifactRepositoryFileList。
名称 | 类型 | 描述 |
---|---|---|
ContinuationToken | String | 翻页符,最后一页该字段为空 |
InstanceSet | Array of ArtifactRepositoryFile | 文件列表 |
ArtifactRepositoryFile
制品库文件列表
被如下接口引用:DescribeArtifactRepositoryFileList。
名称 | 类型 | 描述 |
---|---|---|
DownloadUrl | String | 符合对应制品标准协议的下载链接(有效期:300 s) |
Path | String | 相对于仓库级别的文件路径 |
ArtifactType | String | 制品类型 |
Host | String | 制品仓库 Host |
Project | String | 项目名称 |
Repository | String | 制品仓库名称 |
Example 1
成功示例
1{
2 "Action": "DescribeArtifactRepositoryFileList",
3 "Project": "testing",
4 "Repository": "maven",
5 "PageSize": 1000
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "ContinuationToken": "5e739c1e1f8bdb20cdb0db2ab2215903",
6 "InstanceSet": [
7 {
8 "DownloadUrl": "https://coding.net/repository/project/maven/pkg/vers/folder/object-1.jar",
9 "Path": "folder/object-1.jpg",
10 "ArtifactType": 3,
11 "Host": "coding.net",
12 "Project": "project",
13 "Repository": "maven"
14 }
15 ]
16 }
17 }
18}
查询制品包(镜像)列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeArtifactPackageList。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名称 |
PageNumber | 否 | Integer | 页码,默认:1 |
PageSize | 否 | Integer | 每页展示数量,默认:10 |
PackagePrefix | 否 | String | 包名前缀 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | ArtifactRepositoryPageBean | 返回数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ArtifactRepositoryPageBean
被如下接口引用:DescribeArtifactRepositoryList。
名称 | 类型 | 描述 |
---|---|---|
InstanceSet | Array of ArtifactRepositoryBean | 分页数据列表 |
PageNumber | Integer | 页码 |
PageSize | Integer | 每页展示数量 |
TotalCount | Integer | 数据总数 |
ArtifactRepositoryBean
被如下接口引用:DescribeArtifactRepositoryList。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 仓库 ID |
Name | String | 仓库名称 |
TeamId | Integer | 团队 ID |
ProjectId | Integer | 项目 ID |
Type | Integer | 仓库类型:1-generic;2-docker;3-maven;4-npm;5-pypi;6-helm;7-composer;8-nuget;9-conan;10-cocoapods;11-rpm |
Description | String | 仓库描述 注意:此字段可能返回 null,表示取不到有效值。 |
AccessLevel | Integer | 仓库访问权限:1-项目内;2-团队内;3-公开 |
ReleaseStrategy | Integer | 版本发布策略:1-允许覆盖发布;2-不允许覆盖发布;3-快照策略 |
CreatedAt | Integer | 创建时间 |
Example 1
成功示例
1{
2 "Action": "DescribeArtifactPackageList",
3 "ProjectId": 450,
4 "PageNumber": 1,
5 "PageSize": 10,
6 "Repository": "generic",
7 "PackagePrefix": "root/"
8}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "InstanceSet": [
6 {
7 "Id": 354263,
8 "Name": "demo",
9 "RepoId": 200866,
10 "Description": "",
11 "CreatedAt": 1603426362,
12 "VersionCount": 1,
13 "LatestVersionId": 1589443,
14 "LatestVersionName": "1.0",
15 "LatestVersionReleaseStatus": 1,
16 "ReleaseStrategy": 4
17 }
18 ],
19 "PageNumber": 1,
20 "PageSize": 10,
21 "TotalCount": 1
22 }
23 }
24}
查询制品版本列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeArtifactVersionList。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名称 |
Package | 是 | String | 包名称 |
PageNumber | 否 | Integer | 页码,默认:1 |
PageSize | 否 | Integer | 每页展示数量,默认:10 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | ArtifactVersionPageBean | 返回数据 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ArtifactVersionPageBean
被如下接口引用:DescribeArtifactVersionList。
名称 | 类型 | 描述 |
---|---|---|
InstanceSet | Array of ArtifactVersionBean | 分页数据列表 |
PageNumber | Integer | 页码 |
PageSize | Integer | 每页展示数量 |
TotalCount | Integer | 数据总数 |
ArtifactVersionBean
被如下接口引用:DescribeArtifactVersionList。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 版本 ID |
Version | String | 版本号 |
Hash | String | 版本哈希 |
Size | Float | 版本大小(单位:MB) 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 版本描述 |
PkgId | Integer | 制品包 ID |
DownloadCount | Integer | 下载量 |
ReleaseStatus | Integer | 发布状态:1-未发布;2-已发布 |
CreatedAt | Integer | 创建时间 |
Example 1
成功示例
1{
2 "Action": "DescribeArtifactVersionList",
3 "ProjectId": 450,
4 "PageNumber": 1,
5 "PageSize": 10,
6 "Repository": "generic",
7 "Package": "Pro"
8}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "InstanceSet": [
6 {
7 "Id": 1589443,
8 "Version": "1.0",
9 "Hash": "sha1 514854de2a43d015ed21042ac953058241cbfeb7",
10 "Description": "",
11 "PkgId": 354263,
12 "DownloadCount": 0,
13 "CreatedAt": 1603426362,
14 "ReleaseStatus": 0
15 }
16 ],
17 "PageNumber": 1,
18 "PageSize": 10,
19 "TotalCount": 1
20 }
21 }
22}
发布制品版本
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ReleaseArtifactVersion。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名 |
Package | 是 | String | 包名 |
PackageVersion | 是 | String | 版本号 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ReleaseArtifactVersion",
3 "ProjectId": 450,
4 "Repository": "generic",
5 "Package": "Pro",
6 "PackageVersion": "latest"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
禁止、解禁制品版本下载
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ForbiddenArtifactVersion。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名 |
Package | 是 | String | 包名 |
PackageVersion | 是 | String | 版本号 |
ForbiddenAction | 是 | String | FORBIDDEN 禁止下载,UNFORBIDDEN 解除禁止下载 |
ForbiddenNote | 否 | String | 禁止下载说明 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ForbiddenArtifactVersion",
3 "ProjectId": 450,
4 "Repository": "generic",
5 "Package": "Pro",
6 "PackageVersion": "latest",
7 "ForbiddenAction": "FORBIDDEN",
8 "ForbiddenNote": "垃圾制品,禁止下载"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
查询制品版本可下载文件列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeArtifactVersionFileList。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名 |
Package | 是 | String | 包名 |
PackageVersion | 是 | String | 版本号 |
Maven | 否 | Maven | maven 制品类型参数 |
Maven
查询制品版本可下载文件参数
被如下接口引用:DescribeArtifactVersionFileList。
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Packaging | String | 是 | 打包方式:pom;jar;war |
Classifier | String | 是 | 附属构件 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
InstanceSet | Array of ArtifactVersionFileBean | 文件列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ArtifactVersionFileBean
被如下接口引用:DescribeArtifactVersionFileList。
名称 | 类型 | 描述 |
---|---|---|
Name | String | 文件名称 |
Size | Float | 文件大小,单位:MB |
Example 1
成功示例
1{
2 "Action": "DescribeArtifactVersionFileList",
3 "ProjectId": 450,
4 "Repository": "generic",
5 "Package": "Pro",
6 "PackageVersion": "latest"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "InstanceSet": [
5 {
6 "Name": "LocalTest-2.0-sources.jar",
7 "Size": 1.04
8 }
9 ]
10 }
11}
查询制品文件临时下载链接
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeArtifactFileDownloadUrl。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名 |
Package | 是 | String | 包名 |
PackageVersion | 是 | String | 版本号 |
FileName | 是 | String | 文件名称 |
Timeout | 否 | Integer | 下载链接超时时间(单位:秒),默认:300 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Url | String | 临时下载链接 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeArtifactFileDownloadUrl",
3 "ProjectId": 450,
4 "Repository": "generic",
5 "Package": "Pro",
6 "PackageVersion": "latest",
7 "FileName": "Pro",
8 "Timeout": 300
9}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Url": "https//xxxxxxx.com/xxx"
5 }
6}
查询制品属性列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeArtifactProperties。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名 |
Package | 是 | String | 包名 |
PackageVersion | 是 | String | 版本号 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
InstanceSet | Array of ArtifactProperty | 制品属性列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ArtifactProperty
被如下接口引用:DescribeArtifactProperties。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 属性 ID |
Version | String | 制品版本 |
CreatedAt | Integer | 创建时间 |
Name | String | 属性名称(以 ‘coding.’ 作为属性名称开头的属性,将不可变更及删除,即 Immutable = false) |
Value | String | 属性值 |
Immutable | Boolean | 是否不可变更 |
Example 1
成功示例
1{
2 "Action": "DescribeArtifactProperties",
3 "ProjectId": 450,
4 "PageNumber": 1,
5 "PageSize": 10,
6 "Repository": "generic",
7 "Package": "Pro",
8 "PackageVersion": "latest"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "InstanceSet": [
5 {
6 "Id": 1,
7 "Version": "2.0",
8 "CreatedAt": 1538743856753,
9 "Name": "demo",
10 "Value": "demoValue",
11 "Immutable": true
12 }
13 ]
14 }
15}
新增制品属性
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateArtifactProperties。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名 |
Package | 是 | String | 包名 |
PackageVersion | 是 | String | 版本号 |
PropertySet | 是 | Array of ArtifactPropertyBean | 属性列表 |
ArtifactPropertyBean
被如下接口引用:CreateArtifactProperties, ModifyArtifactProperties。
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Name | String | 是 | 属性名称(以 ‘coding.’ 作为属性名称开头的属性,将不可变更及删除,即 Immutable = false) |
Value | String | 是 | 属性值 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateArtifactProperties",
3 "ProjectId": 450,
4 "Repository": "generic",
5 "Package": "Pro",
6 "PackageVersion": "latest",
7 "PropertySet": [
8 {
9 "Name": "name1",
10 "Value": "value1"
11 },
12 {
13 "Name": "name2",
14 "Value": "value2"
15 }
16 ]
17}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
修改制品属性
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyArtifactProperties。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名 |
Package | 是 | String | 包名 |
PackageVersion | 是 | String | 版本号 |
PropertySet | 是 | Array of ArtifactPropertyBean | 属性列表 |
ArtifactPropertyBean
被如下接口引用:CreateArtifactProperties, ModifyArtifactProperties。
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Name | String | 是 | 属性名称(以 ‘coding.’ 作为属性名称开头的属性,将不可变更及删除,即 Immutable = false) |
Value | String | 是 | 属性值 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyArtifactProperties",
3 "ProjectId": 450,
4 "Repository": "generic",
5 "Package": "Pro",
6 "PackageVersion": "latest",
7 "PropertySet": [
8 {
9 "Name": "name1",
10 "Value": "newValue"
11 },
12 {
13 "Name": "name2",
14 "Value": "newValue"
15 }
16 ]
17}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
删除制品属性
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteArtifactProperties。 |
ProjectId | 是 | Integer | 项目 ID |
Repository | 是 | String | 仓库名 |
Package | 是 | String | 包名 |
PackageVersion | 是 | String | 版本号 |
PropertyNameSet | 是 | Array of String | 属性名称列表( 以 ‘coding.’ 作为属性名称开头的属性,将不可删除) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteArtifactProperties",
3 "ProjectId": 450,
4 "Repository": "generic",
5 "Package": "Pro",
6 "PackageVersion": "latest",
7 "PropertyNameSet": [
8 "name1",
9 "name2"
10 ]
11}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
查询团队下制品版本列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTeamArtifacts。 |
PageNumber | 否 | Integer | 页码,默认:1 |
PageSize | 否 | Integer | 每页展示数量,默认:10 |
Rule | 否 | ArtifactFilterRule | 筛选规则(ArtifactFilterRule 之间筛选关系为 and,单个 ArtifactFilterRule 数组内的筛选关系为 or) |
ArtifactFilterRule
制品筛选规则实体
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
ArtifactType | Array of Integer | 否 | 制品类型筛选(1-generic;2-docker;3-maven;4-npm;5-pypi;6-helm;7-composer;8-nuget;9-conan;10-cocoapods;11-rpm) |
ProjectName | Array of String | 否 | 项目筛选 |
Repository | Array of String | 否 | 仓库筛选 |
Package | Array of ArtifactFilterRuleDetail | 否 | 包筛选 |
PackageVersion | Array of ArtifactFilterRuleDetail | 否 | 版本筛选 |
ArtifactFilterRuleDetail
制品筛选规则明细
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Algorithm | String | 是 | 名称匹配规则(支持 “EQUAL” 和 “REGEX”) |
Value | String | 是 | 名称匹配值 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | TeamArtifactPage | 分页列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
TeamArtifactPage
团队制品列表分页实体
名称 | 类型 | 描述 |
---|---|---|
PageNumber | Integer | 页码 |
PageSize | Integer | 每页展示数量 |
TotalCount | Integer | 总数 |
InstanceSet | Array of TeamArtifact | 当前页的版本列表 |
TeamArtifact
制品完整信息
名称 | 类型 | 描述 |
---|---|---|
ProjectId | Integer | 项目ID |
ProjectName | Boolean | 项目名称 |
RepoId | Integer | 制品仓库ID |
Repository | String | 制品仓库名称 |
PkgId | Integer | 制品包ID |
Package | String | 制品名称 |
ArtifactType | Integer | 制品类型(1-generic;2-docker;3-maven;4-npm;5-pypi;6-helm;7-composer;8-nuget;9-conan;10-cocoapods;11-rpm) |
VersionId | Integer | 制品版本ID |
PackageVersion | String | 制品版本 |
Hash | String | 制品hash |
Size | Float | 制品代销 |
Description | String | 制品描述 |
DownloadCount | String | 下载次数 |
ReleaseStatus | Integer | 发布状态(1=未发布,2=已发布) |
CreatedAt | Integer | 推送时间 |
Example 1
成功示例
1{
2 "PageNumber": 1,
3 "PageSize": 10,
4 "Rule": {
5 "ArtifactType": [
6 1
7 ],
8 "ProjectName": [
9 "test"
10 ],
11 "Repository": [
12 "g1"
13 ],
14 "Package": [
15 {
16 "Algorithm": "EQUAL",
17 "Value": "1"
18 },
19 {
20 "Algorithm": "REGEX",
21 "Value": "\\d+"
22 }
23 ],
24 "PackageVersion": [
25 {
26 "Algorithm": "EQUAL",
27 "Value": "latest"
28 },
29 {
30 "Algorithm": "REGEX",
31 "Value": "\\d+"
32 }
33 ]
34 }
35}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Data": {
5 "InstanceSet": [
6 {
7 "ProjectId": 453,
8 "ProjectName": "test",
9 "RepoId": 3,
10 "Repository": "g1",
11 "PkgId": 22,
12 "Package": "1",
13 "ArtifactType": 1,
14 "VersionId": 29,
15 "PackageVersion": "1",
16 "Hash": "12ce92814df58fdc16863d65a8dee59c0a7ccf10",
17 "Size": 1.430511474609375e-05,
18 "Description": "",
19 "DownloadCount": 0,
20 "ReleaseStatus": 2,
21 "CreatedAt": "1629873218"
22 }
23 ],
24 "PageNumber": 1,
25 "PageSize": 10,
26 "TotalCount": 1
27 }
28 }
29}
创建测试用例
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateTestCase。 |
ProjectName | 是 | String | 项目名称 |
TemplateType | 是 | String | 用例类型,可选值:STEPS(步骤用例),TEXT(文本用例) |
SectionId | 是 | Integer | 分组ID |
Title | 是 | String | 用例标题 |
Priority | 否 | Integer | 优先级,默认2(中),可选值:0(紧急),1(高),2(中),3(低) |
Preconds | 否 | String | 前置步骤 |
Steps | 否 | String | 文本描述(适用于文本用例) |
Expected | 否 | String | 预期结果 (适用于文本用例) |
CustomSteps.N | 否 | Array of [CustomStep] | 自定义步骤(步骤用例必填) |
AttachmentIds.N | 否 | Array of Integer | 附件 ID 数组:来自“生成附件预上传信息”接口 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | Case | 测试用例信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Case
测试用例
被如下接口引用:DescribeRequirementTestCaseList, DescribeTest, DescribeTestCase, DescribeTestCaseList, ModifyTestCase。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级 注意:此字段可能返回 null,表示取不到有效值。 |
Title | String | 标题 注意:此字段可能返回 null,表示取不到有效值。 |
TemplateType | String | 用例类型,可选值:STEPS,TEXT 注意:此字段可能返回 null,表示取不到有效值。 |
Preconds | String | 前置步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Steps | String | 文本描述(适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Expected | String | 预期结果 (适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Sort | Integer | 排序值 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | String | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
CustomSteps | Array of CustomStep | 自定义步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Attachments | Array of Attachment | 附件列表(非用例详情时本值为null) 注意:此字段可能返回 null,表示取不到有效值。 |
CustomStep
自定义步骤(步骤用例必填)
被如下接口引用:CreateTestCase, DescribeRequirementTestCaseList, DescribeTest, DescribeTestCase, DescribeTestCaseList, ModifyTestCase。
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Content | String | 是 | 步骤 |
Expected | String | 是 | 预期 |
Attachment
附件预上传信息
被如下接口引用:DescribeReport, DescribeRequirementTestCaseList, DescribeTest, DescribeTestCase, DescribeTestCaseList, ModifyTestCase。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 附件 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 附件文件名 注意:此字段可能返回 null,表示取不到有效值。 |
Url | String | 文件访问路径(有效期10分钟) 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "CreateTestCase",
3 "CustomSteps": [
4 {
5 "Content": "expected",
6 "Expected": "steps"
7 },
8 {
9 "Content": "expected",
10 "Expected": "steps"
11 }
12 ],
13 "Expected": "expected",
14 "Preconds": "preconds",
15 "Priority": 1,
16 "ProjectName": "2",
17 "SectionId": 1,
18 "Steps": "Steps",
19 "TemplateType": "STEPS",
20 "Title": "helel"
21}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Case": {
5 "CreatedAt": "2020-09-15 16:34:21",
6 "CreatedBy": "1",
7 "CustomSteps": [
8 {
9 "Content": "expected",
10 "Expected": "steps"
11 },
12 {
13 "Content": "expected",
14 "Expected": "steps"
15 }
16 ],
17 "Expected": "expected",
18 "Id": 65,
19 "Preconds": "preconds",
20 "Priority": 2,
21 "SectionId": 1,
22 "Sort": 15,
23 "Steps": "setps",
24 "TemplateType": "STEPS",
25 "Title": "helel",
26 "UpdatedAt": "2020-09-15 16:34:21"
27 }
28 },
29 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a0"
30 }
31}
修改测试用例
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyTestCase。 |
CaseId | 是 | Integer | 用例 ID |
ProjectName | 是 | String | 项目名称 |
TemplateType | 是 | String | 用例类型,可选值:STEPS(步骤用例),TEXT(文本用例) |
SectionId | 是 | Integer | 分组ID |
Title | 是 | String | 用例标题 |
Priority | 否 | Integer | 优先级,默认2(中),可选值:0(紧急),1(高),2(中),3(低) |
Preconds | 否 | String | 前置步骤 |
Steps | 否 | String | 文本描述(适用于文本用例) |
Expected | 否 | String | 预期结果(适用于文本用例) |
CustomSteps.N | 否 | Array of [CustomStep] | 自定义步骤(步骤用例必填) |
AttachmentIds.N | 否 | Array of Integer | 附件 ID 数组:来自“生成附件预上传信息”接口 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Case] | 测试用例信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Case
测试用例
被如下接口引用:DescribeRequirementTestCaseList, DescribeTest, DescribeTestCase, DescribeTestCaseList, ModifyTestCase。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级 注意:此字段可能返回 null,表示取不到有效值。 |
Title | String | 标题 注意:此字段可能返回 null,表示取不到有效值。 |
TemplateType | String | 用例类型,可选值:STEPS,TEXT 注意:此字段可能返回 null,表示取不到有效值。 |
Preconds | String | 前置步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Steps | String | 文本描述(适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Expected | String | 预期结果 (适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Sort | Integer | 排序值 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | String | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
CustomSteps | Array of CustomStep | 自定义步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Attachments | Array of Attachment | 附件列表(非用例详情时本值为null) 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "ModifyTestCase",
3 "CaseId": 1,
4 "CustomSteps": [
5 {
6 "Content": "expected",
7 "Expected": "steps"
8 },
9 {
10 "Content": "expected",
11 "Expected": "steps"
12 }
13 ],
14 "Expected": "expected",
15 "Preconds": "preconds",
16 "Priority": 1,
17 "ProjectName": "2",
18 "SectionId": 1,
19 "Steps": "Steps",
20 "TemplateType": "STEPS",
21 "Title": "helel"
22}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Case": {
5 "CreatedAt": "2020-09-15 16:34:21",
6 "CreatedBy": 1,
7 "CustomSteps": [
8 {
9 "Content": "expected",
10 "Expected": "steps"
11 },
12 {
13 "Content": "expected",
14 "Expected": "steps"
15 }
16 ],
17 "Expected": "expected",
18 "Id": 65,
19 "Preconds": "preconds",
20 "Priority": 2,
21 "SectionId": 1,
22 "Sort": 15,
23 "Steps": "setps",
24 "TemplateType": "STEPS",
25 "Title": "helel",
26 "UpdatedAt": "2020-09-15 16:34:21"
27 }
28 },
29 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a0"
30 }
31}
删除测试用例
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteTestCase。 |
CaseId | 是 | Integer | 用例 ID |
ProjectName | 是 | String | 项目名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteTestCase",
3 "CaseId": 1,
4 "ProjectName": "2"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a0"
4 }
5}
测试用例详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTestCase。 |
CaseId | 是 | Integer | 用例 ID |
ProjectName | 是 | String | 项目名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Case] | 测试用例信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Case
测试用例
被如下接口引用:DescribeRequirementTestCaseList, DescribeTest, DescribeTestCase, DescribeTestCaseList, ModifyTestCase。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级 注意:此字段可能返回 null,表示取不到有效值。 |
Title | String | 标题 注意:此字段可能返回 null,表示取不到有效值。 |
TemplateType | String | 用例类型,可选值:STEPS,TEXT 注意:此字段可能返回 null,表示取不到有效值。 |
Preconds | String | 前置步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Steps | String | 文本描述(适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Expected | String | 预期结果 (适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Sort | Integer | 排序值 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | String | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
CustomSteps | Array of CustomStep | 自定义步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Attachments | Array of Attachment | 附件列表(非用例详情时本值为null) 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeTestCase",
3 "CaseId": 1,
4 "ProjectName": "2"
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Case": {
5 "CreatedAt": "2020-09-15 16:34:21",
6 "CreatedBy": 1,
7 "CustomSteps": [
8 {
9 "Content": "expected",
10 "Expected": "steps"
11 },
12 {
13 "Content": "expected",
14 "Expected": "steps"
15 }
16 ],
17 "Expected": "expected",
18 "Id": 65,
19 "Preconds": "preconds",
20 "Priority": 2,
21 "SectionId": 1,
22 "Sort": 15,
23 "Steps": "setps",
24 "TemplateType": "STEPS",
25 "Title": "helel",
26 "UpdatedAt": "2020-09-15 16:34:21"
27 }
28 },
29 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a0"
30 }
31}
测试用例列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTestCaseList。 |
ProjectName | 是 | String | 项目名称 |
Keyword | 否 | String | 关键字搜索 |
SectionId | 否 | Integer | 分组 ID |
TemplateType | 否 | String | 用例类型,可选值:STEPS(步骤用例),TEXT(文本用例) |
Priority | 否 | Integer | 优先级,默认2(中),可选值:0(紧急),1(高),2(中),3(低) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Cases] | 测试用例列表 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Case
测试用例
被如下接口引用:DescribeRequirementTestCaseList, DescribeTest, DescribeTestCase, DescribeTestCaseList, ModifyTestCase。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级 注意:此字段可能返回 null,表示取不到有效值。 |
Title | String | 标题 注意:此字段可能返回 null,表示取不到有效值。 |
TemplateType | String | 用例类型,可选值:STEPS,TEXT 注意:此字段可能返回 null,表示取不到有效值。 |
Preconds | String | 前置步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Steps | String | 文本描述(适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Expected | String | 预期结果 (适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Sort | Integer | 排序值 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | String | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
CustomSteps | Array of CustomStep | 自定义步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Attachments | Array of Attachment | 附件列表(非用例详情时本值为null) 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeTestCaseList",
3 "Keyword": "xx",
4 "Priority": 1,
5 "ProjectName": "xx",
6 "SectionId": 1,
7 "TemplateType": "xx"
8}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Cases": [
5 {
6 "CreatedAt": "2020-09-15 15:32:59",
7 "CreatedBy": 1,
8 "CustomSteps": [
9 {
10 "Content": "expected",
11 "Expected": "steps"
12 },
13 {
14 "Content": "11",
15 "Expected": "11"
16 }
17 ],
18 "Expected": null,
19 "Id": 53,
20 "Preconds": "preconds",
21 "Priority": 2,
22 "SectionId": 1,
23 "Sort": 3,
24 "Steps": null,
25 "TemplateType": "STEPS",
26 "Title": "helel22",
27 "UpdatedAt": "2020-09-15 15:35:28"
28 }
29 ]
30 },
31 "RequestId": "b18a050b-7530-a56b-cb37-98831ef3cf6c"
32 }
33}
创建测试用例分组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateTestCaseSection。 |
ProjectName | 是 | String | 项目名称 |
Name | 是 | String | 分组名称 |
ParentId | 否 | Integer | 父级 ID,默认 0 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Section] | 分组信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Section
分组信息
被如下接口引用:CreateTestCaseSection, DescribeTestCaseSectionList, ModifyTestCaseSection。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 分组ID |
Name | String | 名称 |
ParentId | Integer | 父级 ID |
Sort | Integer | 排序值 |
Example 1
成功示例
1{
2 "Action": "CreateTestCaseSection",
3 "Name": "分组名称",
4 "ParentId": 1,
5 "ProjectName": "项目名称"
6}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Section": {
5 "Id": 4,
6 "Name": "2211",
7 "ParentId": 0,
8 "Sort": 4
9 }
10 },
11 "RequestId": "fe82d911-5911-33f4-26f0-b2287bb8ce4c"
12 }
13}
修改测试用例分组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyTestCaseSection。 |
ProjectName | 是 | String | 项目名称 |
SectionId | 是 | Integer | 分组 ID |
Name | 是 | String | 分组名称 |
ParentId | 否 | Integer | 父级 ID,默认 0 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Section] | 分组信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Section
分组信息
被如下接口引用:CreateTestCaseSection, DescribeTestCaseSectionList, ModifyTestCaseSection。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 分组ID |
Name | String | 名称 |
ParentId | Integer | 父级 ID |
Sort | Integer | 排序值 |
Example 1
成功示例
1{
2 "Action": "ModifyTestCaseSection",
3 "Name": "分组名称",
4 "ParentId": 1,
5 "ProjectName": "项目名称",
6 "SectionId": 1
7}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Section": {
5 "Id": 4,
6 "Name": "2211",
7 "ParentId": 0,
8 "Sort": 4
9 }
10 },
11 "RequestId": "fe82d911-5911-33f4-26f0-b2287bb8ce4c"
12 }
13}
删除测试用例分组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteTestCaseSection。 |
ProjectName | 是 | String | 项目名称 |
SectionId | 是 | Integer | 分组 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteTestCaseSection",
3 "ProjectName": "2",
4 "SectionId": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a1"
4 }
5}
测试用例分组列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTestCaseSectionList。 |
ProjectName | 是 | String | 项目名称 |
ParentId | 否 | Integer | 父级 ID,默认 0 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Sections] | 分组信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Section
分组信息
被如下接口引用:CreateTestCaseSection, DescribeTestCaseSectionList, ModifyTestCaseSection。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 分组ID |
Name | String | 名称 |
ParentId | Integer | 父级 ID |
Sort | Integer | 排序值 |
Example 1
成功示例
1{
2 "Action": "DescribeTestCaseSectionList",
3 "ParentId": 1,
4 "ProjectName": "项目名称"
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Sections": [
5 {
6 "Id": 1,
7 "Name": "1",
8 "ParentId": 0,
9 "Sort": 1
10 },
11 {
12 "Id": 2,
13 "Name": "22",
14 "ParentId": 0,
15 "Sort": 2
16 },
17 {
18 "Id": 3,
19 "Name": "22",
20 "ParentId": 0,
21 "Sort": 3
22 },
23 {
24 "Id": 4,
25 "Name": "2211",
26 "ParentId": 0,
27 "Sort": 4
28 }
29 ]
30 },
31 "RequestId": "62741944-506c-3c11-e77b-47f23fb79086"
32 }
33}
创建测试计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateTestRun。 |
ProjectName | 是 | String | 项目名称 |
Name | 是 | String | 标题 |
IncludeAll | 是 | Boolean | 是否包含全部用例 |
Cases.N | 否 | Array of Integer | 包含的用例 ID 列表(非共享用例库使用,共享用例库请使用 CasesMap 参数) |
CasesMap | 否 | Object | 键为用例库 ID,值为用例 ID 列表。Cases.N 存在则此参数失效。默认用例库 ID 为 0。例如:{"0":[10,11],"1":[13]} |
AssignedToId | 否 | Integer | 处理人 ID |
Description | 否 | String | 描述 |
ExecuteType | 否 | Integer | 执行类型:1-手动执行 2-自动化流水线执行 |
SectionId | 否 | Integer | 分组 ID |
ConfigEnvironmentId | 否 | Integer | 环境标识 |
GitDepotId | 否 | Integer | 项目代码库 ID |
GitReleaseId | 否 | Integer | 发布版本 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Run] | 测试计划信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Run
测试计划详情
被如下接口引用:ArchiveTestRun, CreateTestRun, DescribeTestRun, DescribeTestRunList, ModifyTestRun。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
IterationId | Integer | 所属迭代 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
IncludeAll | Boolean | 是否包含全部用例 注意:此字段可能返回 null,表示取不到有效值。 |
IsCompleted | Boolean | 是否归档 注意:此字段可能返回 null,表示取不到有效值。 |
CompletedAt | String | 归档时间 注意:此字段可能返回 null,表示取不到有效值。 |
PassedCount | Integer | 计划内通过测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
RetestCount | Integer | 计划内重新测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
FailedCount | Integer | 计划内失败测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
UntestedCount | Integer | 计划内未测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
BlockedCount | Integer | 计划内阻塞测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedToId | Integer | 处理人ID 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
SectionName | String | 分组名 注意:此字段可能返回 null,表示取不到有效值。 |
State | Integer | 状态: 0-未开始 1-进行中 2-已测完 注意:此字段可能返回 null,表示取不到有效值。 |
Days | Integer | 持续天数 注意:此字段可能返回 null,表示取不到有效值。 |
ConfigEnvironmentId | Integer | 环境标识 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotId | Integer | 代码仓库 ID 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotName | String | 代码仓库名名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseId | Integer | 发布版本 ID(资源 ID) 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseName | String | 发布版本名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseState | Integer | 发布版本名称状态:0-未发布 1-已发布 注意:此字段可能返回 null,表示取不到有效值。 |
ExecuteType | Integer | 执行方式: 1-手动执行 2-自动化流水线执行 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 迭代名称 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "CreateTestRun",
3 "Cases": [
4 1,
5 2
6 ],
7 "IncludeAll": false,
8 "Name": "run demo",
9 "ProjectName": "project name"
10}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Run": {
5 "AssignedToId": 0,
6 "BlockedCount": 0,
7 "CompletedAt": null,
8 "ConfigEnvironmentId": 2,
9 "CreatedAt": "2020-09-16 15:10:08",
10 "CreatedBy": 1,
11 "Days": 0,
12 "Description": "",
13 "ExecuteType": 1,
14 "FailedCount": 0,
15 "GitDepotId": 1,
16 "GitDepotName": "git-test",
17 "GitReleaseId": 1580,
18 "GitReleaseName": "20210621.1",
19 "GitReleaseState": 0,
20 "Id": 89,
21 "IncludeAll": true,
22 "IsCompleted": false,
23 "IterationId": null,
24 "IterationName": null,
25 "Name": "run demo",
26 "PassedCount": 0,
27 "RetestCount": 0,
28 "SectionId": -1,
29 "SectionName": null,
30 "State": null,
31 "UntestedCount": 18
32 }
33 },
34 "RequestId": "daba6d8a-0a62-e6fd-f502-a4594888561a"
35 }
36}
修改测试计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyTestRun。 |
ProjectName | 是 | String | 项目名称 |
RunId | 是 | Integer | 计划 ID |
Name | 否 | String | 标题 |
IncludeAll | 否 | Boolean | 是否包含全部用例 |
Cases.N | 否 | Array of Integer | 包含的用例 ID 列表(非共享用例库使用,共享用例库请使用 CasesMap 参数) |
CasesMap | 否 | Object | 键为用例库 ID,值为用例 ID 列表。Cases.N 存在则此参数失效。默认用例库 ID 为 0。例如:{"0":[10,11],"1":[13]} |
AssignedToId | 否 | Integer | 处理人 ID |
Description | 否 | String | 描述 |
ExecuteType | 否 | Integer | 执行类型:1-手动执行 2-自动化流水线执行 |
SectionId | 否 | Integer | 分组 ID |
ConfigEnvironmentId | 否 | Integer | 环境标识 |
GitDepotId | 否 | Integer | 项目代码库 ID |
GitReleaseId | 否 | Integer | 发布版本 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Run] | 测试计划信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Run
测试计划详情
被如下接口引用:ArchiveTestRun, CreateTestRun, DescribeTestRun, DescribeTestRunList, ModifyTestRun。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
IterationId | Integer | 所属迭代 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
IncludeAll | Boolean | 是否包含全部用例 注意:此字段可能返回 null,表示取不到有效值。 |
IsCompleted | Boolean | 是否归档 注意:此字段可能返回 null,表示取不到有效值。 |
CompletedAt | String | 归档时间 注意:此字段可能返回 null,表示取不到有效值。 |
PassedCount | Integer | 计划内通过测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
RetestCount | Integer | 计划内重新测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
FailedCount | Integer | 计划内失败测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
UntestedCount | Integer | 计划内未测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
BlockedCount | Integer | 计划内阻塞测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedToId | Integer | 处理人ID 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
SectionName | String | 分组名 注意:此字段可能返回 null,表示取不到有效值。 |
State | Integer | 状态: 0-未开始 1-进行中 2-已测完 注意:此字段可能返回 null,表示取不到有效值。 |
Days | Integer | 持续天数 注意:此字段可能返回 null,表示取不到有效值。 |
ConfigEnvironmentId | Integer | 环境标识 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotId | Integer | 代码仓库 ID 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotName | String | 代码仓库名名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseId | Integer | 发布版本 ID(资源 ID) 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseName | String | 发布版本名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseState | Integer | 发布版本名称状态:0-未发布 1-已发布 注意:此字段可能返回 null,表示取不到有效值。 |
ExecuteType | Integer | 执行方式: 1-手动执行 2-自动化流水线执行 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 迭代名称 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "ModifyTestRun",
3 "Cases": [
4 1,
5 2
6 ],
7 "IncludeAll": false,
8 "Name": "run demo",
9 "ProjectName": "project name",
10 "RunId": 1
11}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Run": {
5 "AssignedToId": 0,
6 "BlockedCount": 0,
7 "CompletedAt": null,
8 "ConfigEnvironmentId": 2,
9 "CreatedAt": "2020-09-16 15:10:08",
10 "CreatedBy": 1,
11 "Days": 0,
12 "Description": "",
13 "ExecuteType": 1,
14 "FailedCount": 0,
15 "GitDepotId": 1,
16 "GitDepotName": "git-test",
17 "GitReleaseId": 1580,
18 "GitReleaseName": "20210621.1",
19 "GitReleaseState": 0,
20 "Id": 89,
21 "IncludeAll": true,
22 "IsCompleted": false,
23 "IterationId": null,
24 "IterationName": null,
25 "Name": "run demo",
26 "PassedCount": 0,
27 "RetestCount": 0,
28 "SectionId": -1,
29 "SectionName": null,
30 "State": null,
31 "UntestedCount": 18
32 }
33 },
34 "RequestId": "daba6d8a-0a62-e6fd-f502-a4594888561a"
35 }
36}
删除测试计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteTestRun。 |
ProjectName | 是 | String | 项目名称 |
RunId | 是 | Integer | 计划 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteTestRun",
3 "ProjectName": "project name",
4 "RunId": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "daba6d8a-0a62-e6fd-f502-a4594888561a"
4 }
5}
归档测试计划
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ArchiveTestRun。 |
ProjectName | 是 | String | 项目名称 |
RunId | 是 | Integer | 计划 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Run] | 测试计划信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Run
测试计划详情
被如下接口引用:ArchiveTestRun, CreateTestRun, DescribeTestRun, DescribeTestRunList, ModifyTestRun。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
IterationId | Integer | 所属迭代 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
IncludeAll | Boolean | 是否包含全部用例 注意:此字段可能返回 null,表示取不到有效值。 |
IsCompleted | Boolean | 是否归档 注意:此字段可能返回 null,表示取不到有效值。 |
CompletedAt | String | 归档时间 注意:此字段可能返回 null,表示取不到有效值。 |
PassedCount | Integer | 计划内通过测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
RetestCount | Integer | 计划内重新测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
FailedCount | Integer | 计划内失败测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
UntestedCount | Integer | 计划内未测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
BlockedCount | Integer | 计划内阻塞测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedToId | Integer | 处理人ID 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
SectionName | String | 分组名 注意:此字段可能返回 null,表示取不到有效值。 |
State | Integer | 状态: 0-未开始 1-进行中 2-已测完 注意:此字段可能返回 null,表示取不到有效值。 |
Days | Integer | 持续天数 注意:此字段可能返回 null,表示取不到有效值。 |
ConfigEnvironmentId | Integer | 环境标识 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotId | Integer | 代码仓库 ID 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotName | String | 代码仓库名名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseId | Integer | 发布版本 ID(资源 ID) 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseName | String | 发布版本名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseState | Integer | 发布版本名称状态:0-未发布 1-已发布 注意:此字段可能返回 null,表示取不到有效值。 |
ExecuteType | Integer | 执行方式: 1-手动执行 2-自动化流水线执行 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 迭代名称 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "ArchiveTestRun",
3 "ProjectName": "project name",
4 "RunId": 1
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Run": {
5 "AssignedToId": 0,
6 "BlockedCount": 0,
7 "CompletedAt": null,
8 "CreatedAt": "2020-09-16 15:10:08",
9 "CreatedBy": 1,
10 "Description": "",
11 "FailedCount": 0,
12 "Id": 89,
13 "IncludeAll": true,
14 "IsCompleted": false,
15 "IterationId": null,
16 "Name": "run demo",
17 "PassedCount": 0,
18 "RetestCount": 0,
19 "UntestedCount": 18
20 }
21 },
22 "RequestId": "daba6d8a-0a62-e6fd-f502-a4594888561a"
23 }
24}
测试计划详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTestRun。 |
ProjectName | 是 | String | 项目名称 |
RunId | 是 | Integer | 计划 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Run] | 测试计划信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Run
测试计划详情
被如下接口引用:ArchiveTestRun, CreateTestRun, DescribeTestRun, DescribeTestRunList, ModifyTestRun。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
IterationId | Integer | 所属迭代 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
IncludeAll | Boolean | 是否包含全部用例 注意:此字段可能返回 null,表示取不到有效值。 |
IsCompleted | Boolean | 是否归档 注意:此字段可能返回 null,表示取不到有效值。 |
CompletedAt | String | 归档时间 注意:此字段可能返回 null,表示取不到有效值。 |
PassedCount | Integer | 计划内通过测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
RetestCount | Integer | 计划内重新测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
FailedCount | Integer | 计划内失败测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
UntestedCount | Integer | 计划内未测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
BlockedCount | Integer | 计划内阻塞测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedToId | Integer | 处理人ID 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
SectionName | String | 分组名 注意:此字段可能返回 null,表示取不到有效值。 |
State | Integer | 状态: 0-未开始 1-进行中 2-已测完 注意:此字段可能返回 null,表示取不到有效值。 |
Days | Integer | 持续天数 注意:此字段可能返回 null,表示取不到有效值。 |
ConfigEnvironmentId | Integer | 环境标识 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotId | Integer | 代码仓库 ID 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotName | String | 代码仓库名名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseId | Integer | 发布版本 ID(资源 ID) 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseName | String | 发布版本名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseState | Integer | 发布版本名称状态:0-未发布 1-已发布 注意:此字段可能返回 null,表示取不到有效值。 |
ExecuteType | Integer | 执行方式: 1-手动执行 2-自动化流水线执行 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 迭代名称 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeTestRun",
3 "ProjectName": "project name",
4 "RunId": 1
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Run": {
5 "AssignedToId": 0,
6 "BlockedCount": 0,
7 "CompletedAt": null,
8 "ConfigEnvironmentId": 1,
9 "CreatedAt": "2021-06-17 17:32:52",
10 "CreatedBy": 1,
11 "Days": 19,
12 "Description": "",
13 "ExecuteType": 1,
14 "FailedCount": 0,
15 "GitDepotId": 1,
16 "GitDepotName": "git-test",
17 "GitReleaseId": 1549,
18 "GitReleaseName": "20210617.1",
19 "GitReleaseState": 0,
20 "Id": 1550,
21 "IncludeAll": false,
22 "IsCompleted": false,
23 "IterationId": null,
24 "IterationName": null,
25 "Name": "测试计划",
26 "PassedCount": 0,
27 "RetestCount": 0,
28 "SectionId": -1,
29 "SectionName": null,
30 "State": 0,
31 "UntestedCount": 2
32 }
33 },
34 "RequestId": "daba6d8a-0a62-e6fd-f502-a4594888561a"
35 }
36}
测试计划列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTestRunList。 |
ProjectName | 是 | String | 项目名称 |
IsCompleted | 否 | Boolean | 是否已经归档 |
IterationId.N | 否 | Array of Integer | 迭代 ID(与参数IterationStatus、GitReleaseState、SectionId互斥) |
State | 否 | Integer | 状态: 0-未开始 1-进行中 2-已测完 |
ExecuteType | 否 | Integer | 执行方式: 1-手动执行 2-自动化流水线执行 |
Keyword | 否 | String | 计划名称 |
IterationStatus.N | 否 | Array of String | 迭代状态: WAIT_PROCESS、PROCESSING、COMPLETED(与参数IterationId、GitReleaseState、SectionId互斥) |
GitReleaseState | 否 | Integer | 发布版本状态:0-未发布 1-已发布(与参数IterationId、IterationStatus、SectionId互斥) |
SectionId | 否 | Integer | 分组 ID(与参数IterationId、IterationStatus、GitReleaseState互斥) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Runs] | 测试计划列表 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Run
测试计划详情
被如下接口引用:ArchiveTestRun, CreateTestRun, DescribeTestRun, DescribeTestRunList, ModifyTestRun。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
IterationId | Integer | 所属迭代 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
IncludeAll | Boolean | 是否包含全部用例 注意:此字段可能返回 null,表示取不到有效值。 |
IsCompleted | Boolean | 是否归档 注意:此字段可能返回 null,表示取不到有效值。 |
CompletedAt | String | 归档时间 注意:此字段可能返回 null,表示取不到有效值。 |
PassedCount | Integer | 计划内通过测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
RetestCount | Integer | 计划内重新测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
FailedCount | Integer | 计划内失败测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
UntestedCount | Integer | 计划内未测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
BlockedCount | Integer | 计划内阻塞测试数量 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedToId | Integer | 处理人ID 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
SectionName | String | 分组名 注意:此字段可能返回 null,表示取不到有效值。 |
State | Integer | 状态: 0-未开始 1-进行中 2-已测完 注意:此字段可能返回 null,表示取不到有效值。 |
Days | Integer | 持续天数 注意:此字段可能返回 null,表示取不到有效值。 |
ConfigEnvironmentId | Integer | 环境标识 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotId | Integer | 代码仓库 ID 注意:此字段可能返回 null,表示取不到有效值。 |
GitDepotName | String | 代码仓库名名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseId | Integer | 发布版本 ID(资源 ID) 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseName | String | 发布版本名称 注意:此字段可能返回 null,表示取不到有效值。 |
GitReleaseState | Integer | 发布版本名称状态:0-未发布 1-已发布 注意:此字段可能返回 null,表示取不到有效值。 |
ExecuteType | Integer | 执行方式: 1-手动执行 2-自动化流水线执行 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 迭代名称 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeTestRunList",
3 "ProjectName": "project name"
4}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Runs": [
5 {
6 "AssignedToId": 0,
7 "BlockedCount": 0,
8 "CompletedAt": null,
9 "ConfigEnvironmentId": 2,
10 "CreatedAt": "2021-06-28 11:44:02",
11 "CreatedBy": 1,
12 "Days": 9,
13 "Description": "描述",
14 "ExecuteType": 1,
15 "FailedCount": 0,
16 "GitDepotId": 1,
17 "GitDepotName": "git-test",
18 "GitReleaseId": 1580,
19 "GitReleaseName": "20210621.1",
20 "GitReleaseState": 0,
21 "Id": 1747,
22 "IncludeAll": false,
23 "IsCompleted": false,
24 "IterationId": null,
25 "IterationName": null,
26 "Name": "有个计划",
27 "PassedCount": 0,
28 "RetestCount": 0,
29 "SectionId": -1,
30 "SectionName": null,
31 "State": 0,
32 "UntestedCount": 2
33 }
34 ]
35 },
36 "RequestId": "5ad95c11-a31e-db3e-76ca-59a7bce92958"
37 }
38}
测试任务详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTest。 |
ProjectName | 是 | String | 项目名称 |
TestId | 是 | Integer | 测试任务 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [TestFull] | 测试任务详情 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
TestFull
测试任务详细信息
被如下接口引用:DescribeTest。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 测试任务 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Title | String | 标题 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级 注意:此字段可能返回 null,表示取不到有效值。 |
CaseId | Integer | 用例 ID 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Status | String | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
IsCompleted | Boolean | 是否归档 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedToId | Integer | 处理人 ID 注意:此字段可能返回 null,表示取不到有效值。 |
TestedAt | String | 测试时间 注意:此字段可能返回 null,表示取不到有效值。 |
Sort | Integer | 排序 注意:此字段可能返回 null,表示取不到有效值。 |
TestedBy | Integer | 测试人 ID 注意:此字段可能返回 null,表示取不到有效值。 |
SectionPath | Array of String | 用例所属分组(按层级由上到下排序) 注意:此字段可能返回 null,表示取不到有效值。 |
Case | Case | 用例详细信息 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeTest",
3 "ProjectName": "xx",
4 "TestId": 1
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Test": {
5 "AssignedToId": 0,
6 "Case": {
7 "Attachments": [
8 {
9 "CreatedAt": "2021-07-09 11:04:19",
10 "Id": 14,
11 "Name": "filename",
12 "Url": "https://coding.com"
13 }
14 ],
15 "CreatedAt": "2021-05-24 15:08:58",
16 "CreatedBy": 1,
17 "CustomSteps": [],
18 "Expected": "提示密码不能为空",
19 "Id": 1,
20 "Preconds": "用户手机号,验证码和密码",
21 "Priority": 2,
22 "SectionId": 2,
23 "Sort": 1,
24 "Steps": "输入手机号和验证码",
25 "TemplateType": "TEXT",
26 "Title": "手机注册",
27 "UpdatedAt": "2021-07-09 11:04:21"
28 },
29 "CaseId": 1,
30 "Id": 1533,
31 "IsCompleted": false,
32 "Priority": 2,
33 "SectionId": 2,
34 "SectionPath": [
35 "分组一级",
36 "分组二级"
37 ],
38 "Sort": 1,
39 "Status": "PASSED",
40 "TestedAt": "2021-07-09 11:39:24",
41 "TestedBy": 1,
42 "Title": "手机注册"
43 }
44 },
45 "RequestId": "2efcd378-f6cf-83c0-b705-86896740b45e"
46 }
47}
测试任务列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTestList。 |
ProjectName | 是 | String | 项目名称 |
Priority | 否 | Integer | 优先级 |
Status | 否 | String | 测试状态,UNTESTED:未测试,PASSED:通过,BLOCKED:阻塞,RETEST:重测,FAILED:失败 |
RunId | 否 | Integer | 测试计划 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Tests] | 测试任务列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Test
测试任务信息
被如下接口引用:DescribeTestList。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 测试任务 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Title | String | 标题 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级 注意:此字段可能返回 null,表示取不到有效值。 |
CaseId | Integer | 用例 ID 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Status | String | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
IsCompleted | Boolean | 是否归档 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedToId | Integer | 处理人 ID 注意:此字段可能返回 null,表示取不到有效值。 |
TestedAt | String | 测试时间 注意:此字段可能返回 null,表示取不到有效值。 |
Sort | Integer | 排序 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeTestList",
3 "Priority": 1,
4 "ProjectName": "xx",
5 "RunId": 1,
6 "Status": "xx"
7}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Tests": [
5 {
6 "AssignedToId": 0,
7 "CaseId": 52,
8 "Id": 71,
9 "IsCompleted": true,
10 "Priority": 2,
11 "SectionId": 5,
12 "Sort": 2,
13 "Status": "UNTESTED",
14 "TestedAt": "xx",
15 "Title": "helel"
16 }
17 ]
18 },
19 "RequestId": "2efcd378-f6cf-83c0-b705-86896740b45e"
20 }
21}
测试任务关联缺陷
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateTestDefect。 |
ProjectName | 是 | String | 项目名称 |
TestId | 是 | Integer | 测试任务 ID |
DefectId | 是 | Integer | 缺陷 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateTestDefect",
3 "DefectId": 1,
4 "ProjectName": "xx",
5 "TestId": 1
6}
成功示例
1{
2 "Response": {
3 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a1"
4 }
5}
测试用例添加测试结果
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCaseResult。 |
ProjectName | 是 | String | 项目名称 |
RunId | 是 | Integer | 测试计划 ID |
CaseId | 是 | Integer | 测试用例 ID |
CaseDepotId | 否 | Integer | 测试用例库 ID,不填默认为默认用例库 |
Status | 是 | String | 该任务的测试结果,可选值:UNTESTED:未测试,PASSED:通过,BLOCKED:阻塞,RETEST:重测,FAILED:失败 |
CustomStepStatus.N | 否 | Array of String | 每一步的测试结果(步骤用例时需要本参数) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateCaseResult",
3 "CaseId": 110,
4 "CustomStepStatus": [
5 "PASSED"
6 ],
7 "ProjectName": "project-demo",
8 "RunId": 110,
9 "Status": "PASSED"
10}
成功示例
1{
2 "Response": {
3 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a1"
4 }
5}
测试任务添加测试结果
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateTestResult。 |
ProjectName | 是 | String | 项目名称 |
TestId | 是 | Integer | 测试任务 ID |
Status | 是 | String | 该任务的测试结果,可选值:UNTESTED:未测试,PASSED:通过,BLOCKED:阻塞,RETEST:重测,FAILED:失败 |
CustomStepStatus.N | 否 | Array of String | 每一步的测试结果(步骤用例时需要本参数) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateTestResult",
3 "CustomStepStatus": [
4 "PASSED"
5 ],
6 "ProjectName": "project-demo",
7 "Status": "PASSED",
8 "TestId": 110
9}
成功示例
1{
2 "Response": {
3 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a1"
4 }
5}
测试任务状态批量更新
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateTestResults。 |
ProjectName | 是 | String | 项目名称 |
RunId | 是 | Integer | 测试计划 ID |
CaseIds.N | 是 | Array of Integer | 测试用例 ID 数组 |
Status | 是 | String | 测试状态:UNTESTED:未测试,PASSED:通过,BLOCKED:阻塞,RETEST:重测,FAILED:失败 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateTestResults",
3 "CaseIds": [
4 1
5 ],
6 "ProjectName": "xx",
7 "RunId": 1,
8 "Status": "xx"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "980cbd88-caac-626a-8c8d-8019acf41bb4"
4 }
5}
测试任务单独添加某步骤的测试结果
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateTestStepResult。 |
ProjectName | 是 | String | 项目名称 |
TestId | 是 | Integer | 测试任务 ID |
StepIndex | 是 | Integer | 步骤的索引顺序,起始值为 1 |
StepStatus | 是 | String | 该步骤的测试结果,可选值:PASSED:通过,FAILED:失败 |
Actual | 否 | String | 该步骤的实际测试结果 |
Status | 否 | String | 该任务的测试结果,可选值:UNTESTED:未测试,PASSED:通过,BLOCKED:阻塞,RETEST:重测,FAILED:失败 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateTestStepResult",
3 "Actual": "Actual",
4 "ProjectName": "demo-project",
5 "Status": "PASSED",
6 "StepIndex": 2,
7 "StepStatus": "FAILED",
8 "TestId": 2
9}
成功示例
1{
2 "Response": {
3 "RequestId": "7a671ad6-42f6-1d9d-5c0c-f0723933e9a1"
4 }
5}
需求关联的测试用例列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeRequirementTestCaseList。 |
ProjectName | 是 | String | 项目名称 |
IssueId | 是 | Integer | 需求 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Cases] | 测试用例列表 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Case
测试用例
被如下接口引用:DescribeRequirementTestCaseList, DescribeTest, DescribeTestCase, DescribeTestCaseList, ModifyTestCase。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
SectionId | Integer | 分组 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级 注意:此字段可能返回 null,表示取不到有效值。 |
Title | String | 标题 注意:此字段可能返回 null,表示取不到有效值。 |
TemplateType | String | 用例类型,可选值:STEPS,TEXT 注意:此字段可能返回 null,表示取不到有效值。 |
Preconds | String | 前置步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Steps | String | 文本描述(适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Expected | String | 预期结果 (适用于文本用例) 注意:此字段可能返回 null,表示取不到有效值。 |
Sort | Integer | 排序值 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人ID 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | String | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
CustomSteps | Array of CustomStep | 自定义步骤 注意:此字段可能返回 null,表示取不到有效值。 |
Attachments | Array of Attachment | 附件列表(非用例详情时本值为null) 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeRequirementTestCaseList",
3 "IssueId": 1,
4 "ProjectName": "xx"
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Cases": [
5 {
6 "CreatedAt": "2020-09-15 15:32:59",
7 "CreatedBy": 1,
8 "CustomSteps": [
9 {
10 "Content": "expected",
11 "Expected": "steps"
12 },
13 {
14 "Content": "11",
15 "Expected": "11"
16 }
17 ],
18 "Expected": null,
19 "Id": 53,
20 "Preconds": "preconds",
21 "Priority": 2,
22 "SectionId": 1,
23 "Sort": 3,
24 "Steps": null,
25 "TemplateType": "STEPS",
26 "Title": "helel22",
27 "UpdatedAt": "2020-09-15 15:35:28"
28 }
29 ]
30 },
31 "RequestId": "b18a050b-7530-a56b-cb37-98831ef3cf6c"
32 }
33}
测试任务关联的缺陷列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTestDefectList。 |
ProjectName | 是 | String | 项目名称 |
TestId | 否 | Integer | 测试任务 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [TestDefects] | 测试任务关联的缺陷列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
TestDefect
测试任务的缺陷信息
被如下接口引用:DescribeTestDefectList。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 缺陷 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 标题 注意:此字段可能返回 null,表示取不到有效值。 |
StatusName | String | 状态名称 注意:此字段可能返回 null,表示取不到有效值。 |
Status | String | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedTo | String | 处理人 注意:此字段可能返回 null,表示取不到有效值。 |
Author | String | 创建人 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeTestDefectList",
3 "ProjectName": "xx",
4 "TestId": 1
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Defects": [
5 {
6 "AssignedTo": "",
7 "Author": "coding",
8 "CreatedAt": "2021-07-09 15:13:46",
9 "Description": "",
10 "Id": 1973,
11 "Name": "一个缺陷",
12 "Status": "TODO",
13 "StatusName": "待处理"
14 }
15 ]
16 },
17 "RequestId": "2efcd378-f6cf-83c0-b705-86896740b45e"
18 }
19}
创建测试报告
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateReport。 |
ProjectName | 是 | String | 项目名称 |
Name | 是 | String | 测试报告标题 |
RunIds.N | 是 | Array of Integer | 测试计划 ID 数组 |
AttachmentIds.N | 否 | Array of Integer | 附件 ID 数组:来自“生成附件预上传信息”接口 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [ReportLittle] | 测试报告信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ReportLittle
测试报告信息-简单
被如下接口引用:CreateReport, DescribeReportList。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 报告名称 注意:此字段可能返回 null,表示取不到有效值。 |
Summary | String | 报告总结 注意:此字段可能返回 null,表示取不到有效值。 |
Status | String | 报告状态:CREATING 创建中,AVAILABLE 可用,UNAVAILABLE 不可用 注意:此字段可能返回 null,表示取不到有效值。 |
StatisticsStartTime | String | 数据统计开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
StatisticsEndTime | String | 数据统计结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "CreateReport",
3 "Name": "run demo",
4 "ProjectName": "project name",
5 "RunIds": [
6 1,
7 2
8 ]
9}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Report": {
5 "CreatedAt": "2021-06-28 15:33:42",
6 "Id": 1750,
7 "Name": "报告2",
8 "StatisticsEndTime": "2021-06-28 15:33:42",
9 "StatisticsStartTime": "2021-06-16 10:44:26",
10 "Status": "UNAVAILABLE",
11 "Summary": null
12 }
13 },
14 "RequestId": "980cbd88-caac-626a-8c8d-8019acf41bb4"
15 }
16}
删除测试报告
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteReport。 |
ProjectName | 是 | String | 项目名称 |
ReportId | 是 | Integer | 测试报告 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteReport",
3 "ProjectName": "project name",
4 "ReportId": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "980cbd88-caac-626a-8c8d-8019acf41bb4"
4 }
5}
测试报告详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeReport。 |
ProjectName | 是 | String | 项目名称 |
ReportId | 是 | Integer | 测试报告 ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [Report] | 测试报告信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Report
测试报告信息
被如下接口引用:DescribeReport。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 报告名称 注意:此字段可能返回 null,表示取不到有效值。 |
Summary | String | 报告总结 注意:此字段可能返回 null,表示取不到有效值。 |
Status | String | 报告状态:CREATING 创建中,AVAILABLE 可用,UNAVAILABLE 不可用 注意:此字段可能返回 null,表示取不到有效值。 |
StatisticsStartTime | String | 数据统计开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
StatisticsEndTime | String | 数据统计结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
TemplateId | Integer | 模板 ID 注意:此字段可能返回 null,表示取不到有效值。 |
ProjectName | String | 项目名称 注意:此字段可能返回 null,表示取不到有效值。 |
IterationId | String | 迭代 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 迭代名称 注意:此字段可能返回 null,表示取不到有效值。 |
RunIds | Array of String | 测试计划 ID 注意:此字段可能返回 null,表示取不到有效值。 |
RunNames | Array of String | 测试计划名称 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedBy | Integer | 创建人 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
ReportOverview | ReportOverview | 报告概览 注意:此字段可能返回 null,表示取不到有效值。 |
Attachments | Array of Attachment | 附件列表 注意:此字段可能返回 null,表示取不到有效值。 |
ReportOverview | ReportOverview | 报告概览 注意:此字段可能返回 null,表示取不到有效值。 |
Runs | ReportRuns | 测试计划列表 注意:此字段可能返回 null,表示取不到有效值。 |
Requirements | ReportRequirements | 需求列表 注意:此字段可能返回 null,表示取不到有效值。 |
Defects | ReportDefects | 缺陷列表 注意:此字段可能返回 null,表示取不到有效值。 |
Cases | ReportCases | 用例列表 注意:此字段可能返回 null,表示取不到有效值。 |
Assigned | ReportAssigned | 执行人列表 注意:此字段可能返回 null,表示取不到有效值。 |
ReportOverview
测试报告概览
被如下接口引用:DescribeReport。
名称 | 类型 | 描述 |
---|---|---|
CaseSum | Integer | 用例总数 注意:此字段可能返回 null,表示取不到有效值。 |
AutomationPercent | Integer | 自动化覆盖率:百分比 注意:此字段可能返回 null,表示取不到有效值。 |
ExecPercent | Integer | 执行率:百分比 注意:此字段可能返回 null,表示取不到有效值。 |
PassPercent | Integer | 通过率:百分比 注意:此字段可能返回 null,表示取不到有效值。 |
RequirementCoverPercent | Integer | 需求覆盖率:百分比 注意:此字段可能返回 null,表示取不到有效值。 |
IssuesSum | Integer | 需求总数 注意:此字段可能返回 null,表示取不到有效值。 |
CompletedSum | Integer | 已完成数量 注意:此字段可能返回 null,表示取不到有效值。 |
ProcessingSum | Integer | 处理中数量 注意:此字段可能返回 null,表示取不到有效值。 |
TodoSum | Integer | 未开始数量 注意:此字段可能返回 null,表示取不到有效值。 |
DefectSum | Integer | 缺陷总数 注意:此字段可能返回 null,表示取不到有效值。 |
DefectFixPercent | Integer | 缺陷修复率:百分比 注意:此字段可能返回 null,表示取不到有效值。 |
DefectReopenPercent | Integer | 重新激活率:百分比 注意:此字段可能返回 null,表示取不到有效值。 |
AvgClosedSeconds | Integer | 平均关闭时长 注意:此字段可能返回 null,表示取不到有效值。 |
DurationFixed | Integer | 85%解决时长 注意:此字段可能返回 null,表示取不到有效值。 |
ReportRuns
测试计划列表
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用例编号 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 用例名称 注意:此字段可能返回 null,表示取不到有效值。 |
CaseSum | Integer | 用例数量 注意:此字段可能返回 null,表示取不到有效值。 |
BeginAt | String | 计划开始日期 注意:此字段可能返回 null,表示取不到有效值。 |
EndAt | String | 计划结束日期 注意:此字段可能返回 null,表示取不到有效值。 |
ExecPercent | Integer | 执行率 注意:此字段可能返回 null,表示取不到有效值。 |
PassPercent | Integer | 通过率 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 所属迭代/版本名称 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedName | String | 执行人 注意:此字段可能返回 null,表示取不到有效值。 |
ReportRequirements
需求列表
名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 需求编号 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 需求名称 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级。0-低、1-中、2-高、3-紧急、null-未指定 注意:此字段可能返回 null,表示取不到有效值。 |
StatusName | String | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 所属迭代/版本名称 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedName | String | 执行人 注意:此字段可能返回 null,表示取不到有效值。 |
CaseSum | Integer | 关联用例数 注意:此字段可能返回 null,表示取不到有效值。 |
ExecPercent | Integer | 执行率 注意:此字段可能返回 null,表示取不到有效值。 |
PassPercent | Integer | 通过率 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
ReportDefects
缺陷列表
名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 需求编号 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 需求名称 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级。0-低、1-中、2-高、3-紧急、null-未指定 注意:此字段可能返回 null,表示取不到有效值。 |
StatusName | String | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
IterationName | String | 所属迭代/版本名称 注意:此字段可能返回 null,表示取不到有效值。 |
Author | String | 创建人 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedName | String | 处理人 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
CompletedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
Cases | ReportCases | 用例列表:仅包含 用例编号 和 标题 注意:此字段可能返回 null,表示取不到有效值。 |
ReportCases
用例列表
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用例编号 注意:此字段可能返回 null,表示取不到有效值。 |
Title | String | 用例名称 注意:此字段可能返回 null,表示取不到有效值。 |
Priority | Integer | 优先级。0-紧急、1-高、2-中、3-低 注意:此字段可能返回 null,表示取不到有效值。 |
Status | String | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedToId | Integer | 执行人ID 注意:此字段可能返回 null,表示取不到有效值。 |
AssignedName | String | 执行人名称 注意:此字段可能返回 null,表示取不到有效值。 |
TestCount | Integer | 测试次数 注意:此字段可能返回 null,表示取不到有效值。 |
RequirementCode | Integer | 需求code 注意:此字段可能返回 null,表示取不到有效值。 |
RequirementName | String | 需求名称 注意:此字段可能返回 null,表示取不到有效值。 |
ReportAssigned
用例执行人列表
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 执行人ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 执行人名称 注意:此字段可能返回 null,表示取不到有效值。 |
Total | Integer | 总数 注意:此字段可能返回 null,表示取不到有效值。 |
Passed | Integer | 通过数 注意:此字段可能返回 null,表示取不到有效值。 |
Failed | Integer | 失败数 注意:此字段可能返回 null,表示取不到有效值。 |
Blocked | Integer | 阻塞数 注意:此字段可能返回 null,表示取不到有效值。 |
Retest | Integer | 重测数 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeReport",
3 "ProjectName": "project name",
4 "ReportId": 1
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Report": {
5 "CreatedAt": "2021-06-23 17:10:51",
6 "CreatedBy": 1,
7 "Id": 1595,
8 "IterationIds": "1",
9 "IterationNames": "Sprint-1",
10 "Name": "报告",
11 "ProjectName": "Project Name",
12 "ReportOverview": {
13 "AutomationPercent": 0,
14 "AvgClosedSeconds": -1,
15 "CaseSum": 3,
16 "CompletedSum": 0,
17 "DefectFixPercent": 0,
18 "DefectReopenPercent": 0,
19 "DefectSum": 0,
20 "DurationFixed": -1,
21 "ExecPercent": 100,
22 "IssuesSum": 4,
23 "PassPercent": 0,
24 "ProcessingSum": 0,
25 "RequirementCoverPercent": 50,
26 "TodoSum": 4
27 },
28 "RunIds": [
29 "20"
30 ],
31 "RunNames": [
32 "计划"
33 ],
34 "StatisticsEndTime": "2021-06-23",
35 "StatisticsStartTime": "2021-06-22",
36 "Status": "AVAILABLE",
37 "Summary": null,
38 "TemplateId": null,
39 "Runs": [
40 {
41 "Id": 20,
42 "Name": "计划",
43 "CaseSum": 5132,
44 "BeginAt": "2023-08-29",
45 "EndAt": "2023-09-09",
46 "ExecutePercent": 100,
47 "PassPercent": 24,
48 "IterationName": "Sprint-1",
49 "AssignedName": "coding"
50 }
51 ],
52 "Requirements": [
53 {
54 "Code": 96,
55 "Name": "需求1",
56 "Priority": 1,
57 "StatusName": "未开始",
58 "IterationName": "Sprint-1",
59 "AssignedName": null,
60 "CaseSum": 1,
61 "ExecutePercent": 100,
62 "PassPercent": 100,
63 "CreatedAt": "2023-08-17 17:42:11"
64 },
65 {
66 "Code": 97,
67 "Name": "需求2",
68 "Priority": 1,
69 "StatusName": "未开始",
70 "IterationName": "Sprint-1",
71 "AssignedName": "coding",
72 "CaseSum": 6,
73 "ExecutePercent": 100,
74 "PassPercent": 16,
75 "CreatedAt": "2023-08-17 17:42:15"
76 }
77 ],
78 "Defects": [
79 {
80 "Code": 119,
81 "Name": "缺陷1",
82 "Priority": 1,
83 "StatusName": "待处理",
84 "IterationName": "Sprint-1",
85 "Author": "coding",
86 "AssignedName": null,
87 "CreatedAt": "2023-08-24 10:39:57",
88 "CompletedAt": null,
89 "Cases": [
90 {
91 "Id": "102",
92 "Title": "用例1"
93 },
94 {
95 "Id": "39",
96 "Title": "用例2"
97 }
98 ]
99 },
100 {
101 "Code": 120,
102 "Name": "缺陷2",
103 "Priority": 1,
104 "StatusName": "待处理",
105 "IterationName": "Sprint-1",
106 "Author": "coding",
107 "AssignedName": null,
108 "CreatedAt": "2023-08-24 10:40:08",
109 "CompletedAt": null,
110 "Cases": []
111 }
112 ],
113 "Cases": [
114 {
115 "Id": 100,
116 "Title": "用例3",
117 "Priority": "2",
118 "Status": "PASSED",
119 "AssignedToId": 2,
120 "AssignedName": "coding",
121 "TestCount": 5,
122 "RequirementCode": 95,
123 "RequirementName": "需求1"
124 },
125 {
126 "Id": 99,
127 "Title": "用例2",
128 "Priority": "2",
129 "Status": "RETEST",
130 "AssignedToId": 2,
131 "AssignedName": "coding",
132 "TestCount": 6,
133 "RequirementCode": 95,
134 "RequirementName": "需求1"
135 }
136 ],
137 "Assigned": [
138 {
139 "Id": 2,
140 "Name": "coding",
141 "Total": 6,
142 "Passed": 3,
143 "Failed": 1,
144 "Blocked": 0,
145 "Retest": 2
146 }
147 ]
148 }
149 },
150 "RequestId": "980cbd88-caac-626a-8c8d-8019acf41bb4"
151 }
152}
测试报告列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeReportList。 |
ProjectName | 是 | String | 项目名称 |
StartAt | 否 | String | 创建时间 |
EndAt | 否 | String | 创建时间 |
Keyword | 否 | String | 报告名称关键词 |
Status | 否 | String | 报告状态:CREATING 创建中,AVAILABLE 可用,UNAVAILABLE 不可用 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [ReportsLittle] | 测试报告信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ReportLittle
测试报告信息-简单
被如下接口引用:CreateReport, DescribeReportList。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | ID 主键 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 报告名称 注意:此字段可能返回 null,表示取不到有效值。 |
Summary | String | 报告总结 注意:此字段可能返回 null,表示取不到有效值。 |
Status | String | 报告状态:CREATING 创建中,AVAILABLE 可用,UNAVAILABLE 不可用 注意:此字段可能返回 null,表示取不到有效值。 |
StatisticsStartTime | String | 数据统计开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
StatisticsEndTime | String | 数据统计结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeReportList",
3 "ProjectName": "project name"
4}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Reports": [
5 {
6 "CreatedAt": "2021-06-28 15:33:42",
7 "CreatedBy": 1,
8 "Id": 1750,
9 "Name": "报告2",
10 "StatisticsEndTime": "2021-06-28 15:33:42",
11 "StatisticsStartTime": "2021-06-16 10:44:26",
12 "Status": "UNAVAILABLE",
13 "Summary": null
14 },
15 {
16 "CreatedAt": "2021-06-23 17:10:51",
17 "CreatedBy": 1,
18 "Id": 1595,
19 "Name": "报告1",
20 "StatisticsEndTime": "2021-06-23 17:10:51",
21 "StatisticsStartTime": "2021-06-22 16:12:25",
22 "Status": "AVAILABLE",
23 "Summary": null
24 }
25 ]
26 },
27 "RequestId": "980cbd88-caac-626a-8c8d-8019acf41bb4"
28 }
29}
生成附件预上传信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateAttachmentPrepareSignUrl。 |
ProjectName | 是 | String | 项目名称 |
FileName | 是 | String | 带文件后缀的文件名 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | AttachmentPrepare | 附件预上传信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
AttachmentPrepare
附件预上传信息
被如下接口引用:CreateAttachmentPrepareSignUrl。
名称 | 类型 | 描述 |
---|---|---|
AttachmentId | Integer | 附件 ID 注意:此字段可能返回 null,表示取不到有效值。 |
PrepareSignUrl | String | 用于附件上传的URL。有效期30秒。 注意:此字段可能返回 null,表示取不到有效值。 |
Attachment
附件信息
被如下接口引用:DescribeReport, DescribeRequirementTestCaseList, DescribeTest, DescribeTestCase, DescribeTestCaseList, ModifyTestCase。
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 附件 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 附件文件名 注意:此字段可能返回 null,表示取不到有效值。 |
Url | String | 文件访问路径(有效期10分钟) 注意:此字段可能返回 null,表示取不到有效值。 |
CreatedAt | String | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "CreateAttachmentPrepareSignUrl",
3 "FileName": "xx",
4 "ProjectName": "project name"
5}
成功示例
1{
2 "Response": {
3 "Data": {
4 "AttachmentPrepare": {
5 "AttachmentId": 1750,
6 "PrepareSignUrl": "http://www.coding.net/xxxx"
7 }
8 },
9 "RequestId": "980cbd88-caac-626a-8c8d-8019acf41bb4"
10 }
11}
附件上传
重要介绍
本接口和文档中的其他接口不一样。本接口使用“生成附件预上传信息”接口返回的Data.AttachmentPrepare.PrepareSignUrl参数值来作为接口地址,用户需要调用该接口来完成文件上传。
输入参数
直接提交文件,完成上传。
输出参数
接口状态 | 参数名称 | 类型 | 描述 |
---|---|---|---|
成功 | 无 | 无 | 上传文件成功时无返回值 |
失败 | ErrorData | XML | 上传文件失败时返回的XML格式的数据 |
ErrorData
参数名称 | 类型 | 描述 |
---|---|---|
Code | String | 错误码 |
Message | String | 错误信息 |
Example 1
成功示例
1File
成功示例
1<?xml version="1.0" ?>
2<Error>
3 <Code>AccessDenied</Code>
4 <Message>Request has expired</Message>
5</Error>
创建 Wiki
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateWiki |
ProjectName | 是 | String | 项目名称 |
Title | 是 | String | 标题 |
Content | 是 | String | 内容 |
ParentIid | 是 | Integer | 父级 Iid |
Msg | 否 | String | 标志 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | Wiki | wiki 的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
Example 1
成功示例
1{
2 "Action": "CreateWiki",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "Title": "Title",
6 "Content": "内容",
7 "ParentIid": 0,
8 "Msg": "提交说明"
9}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Title": "WIKI-TEST",
5 "Content": "WIKI",
6 "Html": "WIKI",
7 "Editor": {
8 "Status": 1,
9 "Name": "coding",
10 "Id": 1,
11 "Phone": "133131313",
12 "TeamId": 1,
13 "GlobalKey": "coding",
14 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
15 "Email": "coding.com",
16 "TeamGlobalKey": "coding"
17 },
18 "Msg": "TEST",
19 "ParentIid": 7,
20 "HistoriesCount": 1,
21 "Iid": 10,
22 "Path": "2091",
23 "ParentVisibleRange": "PUBLIC",
24 "VisibleRange": "INHERIT",
25 "UpdatedAt": "2020-09-22 00:00:00",
26 "CreatedAt": "2020-09-22 00:00:00",
27 "CurrentVersion": 1,
28 "CanRead": true,
29 "Order": 0,
30 "LastVersion": 1,
31 "CanMaintain": true,
32 "Creator": {
33 "Status": 1,
34 "Name": "coding",
35 "Id": 1,
36 "Phone": "133131313",
37 "TeamId": 1,
38 "GlobalKey": "coding",
39 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40 "Email": "coding.com",
41 "TeamGlobalKey": "coding"
42 },
43 "HistoryId": 13,
44 "ParentShared": true,
45 "Id": 10
46 },
47 "RequestId": "1111111111"
48 }
49}
删除 Wiki
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteWiki |
ProjectName | 是 | String | 项目名称 |
Iid | 是 | Integer | wiki Iid |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
Wiki
具体信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | wikiId |
Title | String | 标题 |
Content | String | 内容 |
Msg | Integer | 提交说明 |
Iid | Integer | Iid |
Html | String | 内容转成的 html |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
ParentIid | Integer | 父级 IiD |
Order | Double | 所处顺序位置 |
CreatorId | Integer | 创建者的 Id |
EditorId | Integer | 编辑者的 Id |
HistoryId | Integer | wiki 历史 Id |
CurrentUserRoleId | Integer | 用户权限 Id |
HistoriesCount | Integer | 修改次数 |
LastVersion | Integer | 最早 versionId |
CurrentVersion | Integer | 当前 versionId |
Path | String | 路径 |
ParentShared | Boolean | 是否父级分享 |
VisibleRange | String | 可见范围 |
ParentVisibleRange | String | 父级可见范围 |
CanMaintain | Boolean | 是否为维护者 |
CanRead | Boolean | 是否可以阅读 |
Editor | User | 修改者 |
Creator | User | 创建者 |
Example 1
成功示例
1{
2 "Action": "DeleteWiki",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "Iid": 1
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
更新 Wiki
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyWiki |
ProjectName | 是 | String | 项目名称 |
Title | 是 | String | 标题 |
Content | 是 | String | 内容 |
Iid | 是 | Integer | wiki Iid |
Msg | 否 | String | 标志 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | Wiki | wiki 的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
Wiki
wiki 的具体信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | wikiId |
Title | String | 标题 |
Content | String | 内容 |
Msg | Integer | 提交说明 |
Iid | Integer | Iid |
Html | String | 内容转成的 html |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
ParentIid | Integer | 父级 IiD |
Order | Double | 所处顺序位置 |
CreatorId | Integer | 创建者的 Id |
EditorId | Integer | 编辑者的 Id |
HistoryId | Integer | wiki 历史 Id |
CurrentUserRoleId | Integer | 用户权限 Id |
HistoriesCount | Integer | 修改次数 |
LastVersion | Integer | 最早 versionId |
CurrentVersion | Integer | 当前 versionId |
Path | String | 路径 |
ParentShared | Boolean | 是否父级分享 |
VisibleRange | String | 可见范围 |
ParentVisibleRange | String | 父级可见范围 |
CanMaintain | Boolean | 是否为维护者 |
CanRead | Boolean | 是否可以阅读 |
Editor | User | 修改者 |
Creator | User | 创建者 |
Example 1
成功示例
1{
2 "Action": "ModifyWiki",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "Title": "Title",
6 "Content": "内容",
7 "Iid": 1,
8 "Msg": "提交说明"
9}
成功示例
1{
2 "Response": {
3 "Data": {
4 "Title": "WIKI-TEST",
5 "Content": "WIKI",
6 "Html": "WIKI",
7 "Editor": {
8 "Status": 1,
9 "Name": "coding",
10 "Id": 1,
11 "Phone": "133131313",
12 "TeamId": 1,
13 "GlobalKey": "coding",
14 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
15 "Email": "coding.com",
16 "TeamGlobalKey": "coding"
17 },
18 "Msg": "TEST",
19 "ParentIid": 7,
20 "HistoriesCount": 1,
21 "Iid": 10,
22 "Path": "2091",
23 "ParentVisibleRange": "PUBLIC",
24 "VisibleRange": "INHERIT",
25 "UpdatedAt": "2020-09-22 00:00:00",
26 "CreatedAt": "2020-09-22 00:00:00",
27 "CurrentVersion": 1,
28 "CanRead": true,
29 "Order": 0,
30 "LastVersion": 1,
31 "CanMaintain": true,
32 "Creator": {
33 "Status": 1,
34 "Name": "coding",
35 "Id": 1,
36 "Phone": "133131313",
37 "TeamId": 1,
38 "GlobalKey": "coding",
39 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40 "Email": "coding.com",
41 "TeamGlobalKey": "coding"
42 },
43 "HistoryId": 13,
44 "ParentShared": true,
45 "Id": 10
46 },
47 "RequestId": "1111111111"
48 }
49}
获取详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeWiki |
ProjectName | 是 | String | 项目名称 |
Iid | 是 | Integer | wiki Iid |
VersionId | 是 | Integer | 版本号 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | Wiki | wiki 的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Wiki
具体信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | wikiId |
Title | String | 标题 |
Content | String | 内容 |
Msg | Integer | 提交说明 |
Iid | Integer | Iid |
Html | String | 内容转成的 html |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
ParentIid | Integer | 父级 IiD |
Order | Double | 所处顺序位置 |
CreatorId | Integer | 创建者的 Id |
EditorId | Integer | 编辑者的 Id |
HistoryId | Integer | wiki 历史 Id |
CurrentUserRoleId | Integer | 用户权限 Id |
HistoriesCount | Integer | 修改次数 |
LastVersion | Integer | 最早 versionId |
CurrentVersion | Integer | 当前 versionId |
Path | String | 路径 |
ParentShared | Boolean | 是否父级分享 |
VisibleRange | String | 可见范围 |
ParentVisibleRange | String | 父级可见范围 |
CanMaintain | Boolean | 是否为维护者 |
CanRead | Boolean | 是否可以阅读 |
Editor | User | 修改者 |
Creator | User | 创建者 |
Example 1
成功示例
1{
2 "Action": "DescribeWiki",
3 "ProjectName": "demo-project",
4 "Iid": 7,
5 "VersionId": 1
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "data": {
5 "id": 10,
6 "creator": {
7 "avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
8 "global_key": "coding",
9 "name": "coding",
10 "status": 1,
11 "phone": 0,
12 "id": 1,
13 "email": "1111@coding.com",
14 "teamId": 0
15 },
16 "editor": {
17 "avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
18 "global_key": "coding",
19 "name": "coding",
20 "status": 1,
21 "phone": 0,
22 "id": 1,
23 "email": "1111@coding.com",
24 "teamId": 0
25 },
26 "title": "不卡了",
27 "content": "",
28 "msg": "",
29 "historyId": 13,
30 "currentUserRoleId": 100,
31 "iid": 10,
32 "html": "",
33 "createdAt": 1578378234037,
34 "updatedAt": 1578378234041,
35 "historiesCount": 1,
36 "lastVersion": 1,
37 "currentVersion": 1,
38 "parentIid": 7,
39 "path": "1/2/7/10",
40 "order": 3,
41 "reminded": false
42 }
43 }
44}
任务状态查询
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeImportJobStatus |
ProjectName | 是 | String | 项目名称 |
JobId | 是 | String | 任务 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
Status | String | 状态 WAIT_PROCESS,PROCESSING,SUCCEEDED,FAILED |
JobId | String | 任务 id |
Example 1
成功示例
1{
2 "Action": "DescribeImportJobStatus",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "JobId": "asdaqweqsdaddsdsadsa"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "JobId": "5b3848e2dfa921e183a071df84aa",
5 "Status": "WAIT_PROCESS"
6 }
7}
获取列表详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeWikiList |
ProjectName | 是 | String | 项目名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | WikiList | wiki 的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
WikiList
wiki 列表的具体信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | wikiId |
Title | String | 标题 |
Iid | Integer | Iid |
ParentIid | Integer | 父级 IiD |
Order | Double | 所处顺序位置 |
IsShared | Boolean | 是否分享 |
IsTreeShared | Boolean | 是否父级分享 |
VisibleRange | String | 可见范围 |
CanMaintain | Boolean | 是否为维护者 |
CanRead | Boolean | 是否可以阅读 |
Editor | User | 修改者 |
Creator | User | 创建者 |
Children | WikiList | 创建者 |
Example 1
成功示例
1{
2 "Action": "DescribeWikiList",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "data": [
5 {
6 "id": 359411,
7 "iid": 24,
8 "title": null,
9 "parentIid": 0,
10 "visibleRange": "HIDDEN",
11 "canMaintain": false,
12 "canRead": false,
13 "isShared": false,
14 "isTreeShared": true,
15 "children": [
16 {
17 "id": 359413,
18 "iid": 25,
19 "title": "产品文档",
20 "parentIid": 24,
21 "visibleRange": "READ_ONLY",
22 "canMaintain": true,
23 "canRead": false,
24 "isShared": false,
25 "isTreeShared": false,
26 "creator": {
27 "id": 38981,
28 "status": 1,
29 "globalKey": "wangjiajun",
30 "avatar": "https://dn-coding-net-production-static.codehub.cn/d466b293-5637-48e7-b485-e979d125d7a6.jpg?imageMogr2/auto-orient/format/jpeg/crop/!639x639a0a0",
31 "name": "王佳骏",
32 "email": "wangjiajun@coding.net"
33 },
34 "editor": {
35 "id": 39018,
36 "status": 1,
37 "globalKey": "caiyuezhang",
38 "avatar": "https://dn-coding-net-production-static.codehub.cn/86e98800-d835-41d8-8142-b7fca0550bf7.jpg?imageMogr2/auto-orient/format/jpeg/crop/!410x410a0a0",
39 "name": "蔡悦彰",
40 "email": "caiyuezhang@coding.net"
41 },
42 "createdAt": 1578036875000,
43 "updatedAt": 1586787643000,
44 "children": [
45 {
46 "id": 359414,
47 "iid": 26,
48 "title": "Wiki 产品",
49 "parentIid": 25,
50 "visibleRange": "INHERIT",
51 "canMaintain": true,
52 "canRead": false,
53 "isShared": false,
54 "isTreeShared": false,
55 "creator": {
56 "id": 38981,
57 "status": 1,
58 "globalKey": "wangjiajun",
59 "avatar": "https://dn-coding-net-production-static.codehub.cn/d466b293-5637-48e7-b485-e979d125d7a6.jpg?imageMogr2/auto-orient/format/jpeg/crop/!639x639a0a0",
60 "name": "王佳骏",
61 "email": "wangjiajun@coding.net"
62 },
63 "editor": {
64 "id": 39018,
65 "status": 1,
66 "globalKey": "caiyuezhang",
67 "avatar": "https://dn-coding-net-production-static.codehub.cn/86e98800-d835-41d8-8142-b7fca0550bf7.jpg?imageMogr2/auto-orient/format/jpeg/crop/!410x410a0a0",
68 "name": "蔡悦彰",
69 "email": "caiyuezhang@coding.net"
70 },
71 "createdAt": 1578036875000,
72 "updatedAt": 1586787643000,
73 "children": [],
74 "order": 1
75 }
76 ],
77 "order": 1
78 }
79 ],
80 "order": 1
81 }
82 ]
83 }
84}
修改父级顺序
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyWikiOrder |
ProjectName | 是 | String | 项目名称 |
Iid | 是 | Integer | wiki Iid |
ParentIid | 是 | Integer | 父级 Iid |
Forced | 否 | Boolean | 是否检查权限 |
Before | 否 | Integer | 在第几层级之前 |
After | 否 | Integer | 在第几层级之后 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
Example 1
成功示例
1{
2 "Action": "ModifyWikiOrder",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "Iid": 1
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
获取上传文件的 Token
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateUploadToken |
ProjectName | 是 | String | 项目名称 |
FileName | 是 | String | 文件名 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Token | Token | 上传文件至 cos 的 token |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Token
Token 的具体信息
名称 | 类型 | 描述 |
---|---|---|
authToken | String | 验证文件的 Token(用于导入 wiki zip 使用) |
provide | String | cos 存储对象 |
secretId | String | cos 上传的 Id |
secretKey | String | cos 上传的 key (用于导入 wiki zip 使用) |
uploadLink | String | 上传地址 |
upToken | String | 上传文件的 Token |
time | Long | 获取 token 的时间(用于导入 wiki zip 使用) |
Example 1
成功示例
1{
2 "Action": "CreateUploadToken",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "FileName": "filename.zip",
6 "Time": 1605247760074
7}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Token": {
5 "upToken": "bBoXiOuPiCeuXaeiyxAOK2qfsbSJJv5a393b958ff8094b",
6 "authToken": "5b3848e2dfa921e183a071df84aa513d2018031b4df6786dfa7a214a9db855b1",
7 "time": "1605247760074",
8 "secretId": "AKIDOeYe7WatwJ5Hr4-wIW25kxH007lVmjK",
9 "secretKey": "ggBkOApOtx8p0cw+dhfo8nU31oj7xX39gkpl",
10 "uploadLink": "https://coding-net-production-file-1257242599.cos.ap-shanghai.myqcloud.com",
11 "provider": "TENCENT"
12 }
13 }
14}
通过 ZIP 包上传
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateWikiByZip |
ProjectName | 是 | String | 项目名称 |
FileName | 是 | String | 文件名 |
Key | 是 | String | 上传文件的 uuid 名称 b5d0d8e0-3aca-11eb-8673-a9b6d94ca755.png |
Time | 是 | Long | 获取 token 的时间 |
AuthToken | 是 | String | 验证文件的 token |
ParentIid | 是 | Integer | 父级 Iid |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
JobId | String | 任务 id |
Example 1
成功示例
1{
2 "Action": "CreateWikiByZip",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "FileName": "filename.zip",
6 "Key": "9fc310d0-3837-11eb-bca5-bd71c937c060.zip",
7 "Time": 1605247760074,
8 "AuthToken": "5b3848e2dfa921e183a071df84aa513d2018031b4df6786dfa7a214a9db855b1",
9 "ParentIid": 0
10}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "JobId": "5b3848e2dfa921e183a07"
5 }
6}
通过 ZIP 包更新任务状态查询
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeUpdateJobStatus |
ProjectName | 是 | String | 项目名称 |
JobId | 是 | String | 任务 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
Status | String | 状态 WAIT_PROCESS,PROCESSING,SUCCEEDED,FAILED |
JobId | String | 任务 id |
Example 1
成功示例
1{
2 "Action": "DescribeUpdateJobStatus",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "JobId": "asdaqweqsdaddsdsadsa"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "JobId": "5b3848e2dfa921e183a071df84aa",
5 "Status": "WAIT_PROCESS"
6 }
7}
通过 ZIP 包更新 Wiki
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyWikiByZip |
ProjectName | 是 | String | 项目名称 |
FileName | 是 | String | 文件名 |
Key | 是 | String | 上传文件的 uuid 名称 b5d0d8e0-3aca-11eb-8673-a9b6d94ca755.png |
Time | 是 | Long | 获取 token 的时间 |
AuthToken | 是 | String | 验证文件的 token |
Iid | 是 | Integer | wiki 的 Iid |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId |
JobId | String | 任务 id |
Example 1
成功示例
1{
2 "Action": "ModifyWikiByZip",
3 "Authorization": "8c044154bd5c7cadb5720944c733b018d0984b3",
4 "ProjectName": "demo-project",
5 "FileName": "filename.zip",
6 "Key": "9fc310d0-3837-11eb-bca5-bd71c937c060.zip",
7 "Time": 1605247760074,
8 "AuthToken": "5b3848e2dfa921e183a071df84aa513d2018031b4df6786dfa7a214a9db855b1",
9 "Iid": 11
10}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "JobId": "5b3848e2dfa921e183a071df84aa"
5 }
6}
获取项目协同配置方案
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeConfigTemplateList。 |
ProjectName | 是 | String | 项目名称 |
TemplateType | 否 | String | 配置方案类型,全局配置方案取值 GLOBAL ,项目配置方案取值 PROJECT,不填默认为 GLOBAL |
PageNumber | 是 | Integer | 页数 |
PageSize | 是 | Integer | 每页条数 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ConfigTemplateList | Array of ConfigTemplate | 配置方案列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ConfigTemplate
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 配置方案ID |
Code | Integer | 配置方案Code |
CooperateMode | String | 配置方案协作类型,包括 SCRUM 和 CLASSIC |
Description | String | 配置方案描述 |
Name | String | 配置方案名字 |
NameType | String | 配置方案名字,取值和CooperateMode字段一样 |
IsDraft | Boolean | 是否是草稿配置方案 |
IsSystem | Boolean | 是否是系统配置方案 |
RelatedProjects | Integer | 关联项目id |
Scope | String | 配置方案类型,和入参的TemplateType取值一样 |
TeamId | Integer | 团队ID |
CreatedAt | Timestamp | 创建时间戳 |
UpdatedAt | Timestamp | 更新时间戳 |
Example 1
成功示例
1{
2 "Action": "DescribeConfigTemplateList",
3 "ProjectName": "test",
4 "TemplateType": "GLOBAL",
5 "PageNumber": 1,
6 "PageSize": 20
7}
成功示例
1{
2 "Response": {
3 "RequestId": "f0e4dac8-01b9-4845-813b-1e9c34771e59",
4 "ConfigTemplateList": [
5 {
6 "Id": 36,
7 "Code": 2,
8 "CooperateMode": "CLASSIC",
9 "Description": "管理开发计划、需求和任务,用于基于时间或基于交付的项目。",
10 "Name": "经典项目",
11 "NameType": "CLASSIC",
12 "IsDraft": false,
13 "IsSystem": true,
14 "RelatedProjects": 36,
15 "Scope": "GLOBAL",
16 "TeamId": 5,
17 "CreatedAt": 1671003260000,
18 "UpdatedAt": 1671003260000
19 },
20 {
21 "Id": 35,
22 "Code": 1,
23 "CooperateMode": "SCRUM",
24 "Description": "管理需求池、规划并跟进迭代,适用于定期迭代并交付的团队。",
25 "Name": "敏捷项目",
26 "NameType": "SCRUM",
27 "IsDraft": false,
28 "IsSystem": true,
29 "RelatedProjects": 35,
30 "Scope": "GLOBAL",
31 "TeamId": 5,
32 "CreatedAt": 1671003259000,
33 "UpdatedAt": 1671003259000
34 }
35 ]
36 }
37}
初始化项目协同
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:InitProjectTemplate。 |
ProjectName | 是 | String | 项目名称 |
TemplateType | 否 | String | 模板类型,取值包括 SCRUM,CLASSIC,PROJECT |
Sync | 否 | Boolean | 是否同步配置方案,取值 true 或者 false,不填默认为 false |
TemplateId | 是 | Integer | 模板id,为DescribeConfigTemplateList接口返回的,如果这里TemplateType选PROJECT,则TemplateId参数有效,否则无效。 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ERROR | JSON | 错误信息,包含 message 和 code |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "InitProjectTemplate",
3 "ProjectName": "test",
4 "TemplateType": "SCRUM",
5 "Sync": false,
6 "TemplateId": 0
7}
成功示例
1{
2 "Response": {
3 "RequestId": "a474f0f-3e3b-4123-ad40-cedb64d1898b",
4 "Error": {
5 "Message": "code: 22014, key: project_agile_already _init,msg:项目协同已经初始化过",
6 "Code": "InvalidParameterValue"
7 }
8 }
9}
创建项目集
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateProgram。 |
Name | 是 | String | 项目集名称 |
DisplayName | 是 | String | 项目集展示名称 |
StartDate | 否 | String | 开始时间 |
EndDate | 否 | String | 结束时间 |
Description | 否 | String | 描述信息 |
WorkflowProgramId | 否 | String | 已存在的工作流项目集Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Data | ProgramData | 创建的项目集信息 |
ProgramData参数
参数名称 | 类型 | 描述 |
---|---|---|
Id | Long | 项目集id |
Name | String | 项目集Name |
DisplayName | String | 项目集展示名 |
NamePinyin | String | 项目集拼音 |
Description | String | 描述信息 |
Icon | String | 项目集头像 |
StartDate | Long | 开始时间 |
EndDate | Long | 结束时间 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 更新时间 |
Example 1
成功示例
1{
2 "Action": "CreateProgram",
3 "Name": "test001",
4 "DisplayName": "测试项目集001",
5 "StartDate": "1989-02-27",
6 "EndDate": "2003-05-04",
7 "Description": "test",
8 "WorkflowProgramId": ""
9}
成功示例
1{
2 "Response": {
3 "RequestId": "a474f0f-3e3b-4123-ad40-cedb64d1898b",
4 "Data": {
5 "Id": 12345,
6 "Name": "test001",
7 "DisplayName": "测试项目集001",
8 "NamePinyin": "csxmj001|ceshixiangmuji001",
9 "Description": "test",
10 "Icon": "http://e.coding.net/static/project_icon/scenery-version-2-1.svg",
11 "StartDate": 604512000,
12 "EndDate": 1051977600,
13 "CreatedAt": 1691403033000,
14 "UpdatedAt": 1691403033000
15 }
16 }
17}
项目集工作项分解到项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyWorkItemSplitIssues。 |
ProgramName | 是 | String | 项目集名称 |
WorkItemCode | 是 | Integer | 页面上工作项ID |
ProjectName | 是 | String | 目标项目名称 |
IssueCode | 是 | Integer | 目标项目中的事项ID |
Split | 是 | Boolean | true 表示分解, false 表示取消分解(和页面上功能对应) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyWorkItemSplitIssues",
3 "ProgramName": "xiangmuji1",
4 "WorkItemCode": 4,
5 "ProjectName": "xjx-agile-2",
6 "IssueCode": 12,
7 "Split": true
8}
成功示例
1{
2 "Response": {
3 "RequestId": "a474f0f-3e3b-4123-ad40-cedb64d1898b"
4 }
5}
获取项目中事项关联的项目集工作项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueRelatedWorkItemList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
WorkItemList | Array of IssueDetail | 事项关联的项目集工作项信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueDetail
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型: DEFECT - 缺陷, REQUIREMENT - 需求, MISSION - 任务, EPIC - 史诗, SUB_TASK - 子工作项 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
Assignee | UserSimple | 处理人,Assignee.Id 等于 0 时表示未指定。 |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
Creator | UserSimple | 创建人 |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
ProjectModule | ProjectModule | 项目模块,ProjectModule.Id 等于 0 时表示未指定。 |
Watchers | Array of UserSimple | 关注人 |
Labels | Array of Label | 标签列表 |
Files | Array of ProjectFile | 附件列表 |
RequirementType | 需求类型 | |
DefectType | DefectType | 缺陷类型 |
CustomFields | Array of CustomField | 自定义字段列表 |
ThirdLinks | Array of ThirdLink | 第三方链接列表 |
SubTasks | Array of SubTask | 子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList) |
Parent | IssueSimple | 父事项 |
Epic | Epic | 所属史诗 |
Iteration | IterationSimple | 所属迭代 |
UserSimple
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Status | Integer | 用户状态 |
Avatar | String | 头像地址 |
Name | String | 姓名 |
String | 邮箱 |
ProjectModule
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 模块名称 |
Label
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 名称 |
Color | String | 颜色 |
ProjectFile
参数名称 | 类型 | 描述 |
---|---|---|
FileId | Integer | 文件 Id |
Name | String | 文件名称 |
Type | Integer | 类型 0 - 文件夹 1 - 文本 2 - 图片 3 - 二进制 4 - SVG |
Size | Long | 大小(比特) |
Url | String | 下载地址 |
CustomField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 自定义属性 Id |
ValueString | String | 自定义属性值,JSON 字符串 根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组 另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象 |
ThirdLink
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 第三方链接 Id |
ThirdType | Integer | 第三方链接类型,MODAO - 墨刀 |
Link | String | 链接地址 |
Title | String | 名称 |
IssueSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
Epic
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
SubTask
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
IterationSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 迭代代码 |
Name | String | 迭代名称 |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueRelatedWorkItemList",
3 "ProjectName": "xjx-agile-2",
4 "IssueCode": 12
5}
成功示例
1{
2 "Response": {
3 "RequestId": "a474f0f-3e3b-4123-ad40-cedb64d1898b",
4 "WorkItemList": [
5 {
6 "Epic": {
7 "Code": 0,
8 "Type": "",
9 "Name": "",
10 "IssueStatusId": 0,
11 "IssueStatusName": "",
12 "Priority": "",
13 "Assignee": {
14 "Id": 0,
15 "Status": 0,
16 "Avatar": "",
17 "Name": "",
18 "Email": "",
19 "TeamId": 0,
20 "Phone": "",
21 "GlobalKey": "",
22 "TeamGlobalKey": ""
23 }
24 },
25 "ParentType": "WORK_ITEM",
26 "Code": 1,
27 "Type": "WORK_ITEM",
28 "Name": "工作项001",
29 "Description": "\n啊撒大声地\n",
30 "IterationId": 0,
31 "IssueStatusId": 44318117,
32 "IssueStatusName": "未开始",
33 "IssueStatusType": "TODO",
34 "Priority": "1",
35 "Assignee": {
36 "Id": 0,
37 "Status": 0,
38 "Avatar": "",
39 "Name": "",
40 "Email": "",
41 "TeamId": 0,
42 "Phone": "",
43 "GlobalKey": "",
44 "TeamGlobalKey": ""
45 },
46 "StartDate": 0,
47 "DueDate": 0,
48 "WorkingHours": 0.0,
49 "Creator": {
50 "Id": 8732006,
51 "Status": 1,
52 "Avatar": "https://coding-net-production-static-ci.codehub.cn/be0458f7-2a49-4d08-9d79-73f2767a1687.png?imageView2/1/w/0/h/0",
53 "Name": "kingxinhu",
54 "Email": "",
55 "TeamId": 0,
56 "Phone": "",
57 "GlobalKey": "",
58 "TeamGlobalKey": ""
59 },
60 "StoryPoint": "",
61 "CreatedAt": 1693882622000,
62 "UpdatedAt": 1693882622000,
63 "CompletedAt": 0,
64 "ProjectModule": {
65 "Id": 0,
66 "Name": ""
67 },
68 "Watchers": [
69 {
70 "Id": 8732006,
71 "Status": 1,
72 "Avatar": "https://coding-net-production-static-ci.codehub.cn/be0458f7-2a49-4d08-9d79-73f2767a1687.png?imageView2/1/w/0/h/0",
73 "Name": "kingxinhu",
74 "Email": "",
75 "TeamId": 0,
76 "Phone": "",
77 "GlobalKey": "",
78 "TeamGlobalKey": ""
79 }
80 ],
81 "Labels": [],
82 "Files": [],
83 "RequirementType": {
84 "Id": 0,
85 "Name": ""
86 },
87 "DefectType": {
88 "Id": 0,
89 "Name": "",
90 "IconUrl": ""
91 },
92 "CustomFields": [],
93 "ThirdLinks": [],
94 "SubTasks": [],
95 "Parent": {
96 "Code": 0,
97 "Type": "",
98 "Name": "",
99 "IssueStatusId": 0,
100 "IssueStatusName": "",
101 "Priority": "",
102 "Assignee": {
103 "Id": 0,
104 "Status": 0,
105 "Avatar": "",
106 "Name": "",
107 "Email": "",
108 "TeamId": 0,
109 "Phone": "",
110 "GlobalKey": "",
111 "TeamGlobalKey": ""
112 },
113 "IssueStatusType": "",
114 "IssueTypeDetail": {
115 "Id": 0,
116 "Name": "",
117 "IssueType": "",
118 "Description": "",
119 "IsSystem": false
120 }
121 },
122 "Iteration": {
123 "Code": 0,
124 "Name": "",
125 "Status": "",
126 "Id": 0
127 },
128 "IssueTypeDetail": {
129 "Id": 8500461,
130 "Name": "工作项",
131 "IssueType": "WORK_ITEM",
132 "Description": "工作项表示在项目集中需要完成的需求或任务。",
133 "IsSystem": true
134 },
135 "IssueTypeId": 8500461
136 }
137 ]
138 }
139}
查询仓库的版本列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
PageNumber | 否 | Integer | 页数 |
PageSize | 否 | Integer | 每页条数 |
FromDate | 否 | String | 搜索条件:起始日期 |
ToDate | 否 | String | 搜索条件:终止日期 |
TagName | 否 | String | 搜索条件:标签名字 |
Status | 否 | Integer | 搜索条件:版本状态(0:全部 1:已发布 2:预发布) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ReleasePageList | ReleasePageList | 版本列表 |
ReleasePageList 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
TotalCount | Integer | 共计 |
Releases | Release[] | 版本列表 |
Release 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
DepotId | Integer | 仓库 Id |
Id | Integer | 版本 Id |
Iid | Integer | 版本序号Id |
Html | String | html内容 |
Title | String | 标题 |
Body | String | 内容 |
TagName | String | 标签名字 |
CommitSha | String | commit Sha 值 |
CreatedAt | Integer | 数据创建时间 |
UpdatedAt | Integer | 数据更新时间 |
CreatorId | Integer | 数据由谁创建 |
ProjectId | Integer | 项目 Id |
TargetCommitish | String | 目标 commit Sha 值 |
Pre | bool | 是否预发布 |
Example 1
成功示例
1{
2 "Action": "DescribeGitReleases",
3 "DepotId": 809883,
4 "PageNumber": 1,
5 "PageSize": 10,
6 "FromDate": "2021-08-31",
7 "ToDate": "2021-09-02",
8 "TagName": "TagName11",
9 "Status": 0
10}
成功示例
1{
2 "Response": {
3 "RequestId": "d88b989a-ca52-ed03-3cd6-3fea39c81f2f",
4 "ReleasePageList": {
5 "TotalCount": 1,
6 "Releases": [
7 {
8 "Id": 31586,
9 "Iid": 18,
10 "Html": "<p>4</p>",
11 "Title": "sss",
12 "Body": "4",
13 "DepotId": 809883,
14 "TagName": "TagName11",
15 "CommitSha": "6efc794f0d694fed6cd033ddc984026887af258a",
16 "CreatedAt": 1630488978000,
17 "UpdatedAt": 1630488978000,
18 "CreatorId": 1,
19 "ProjectId": 797199,
20 "TargetCommitish": "6efc794f0d694fed6cd033ddc984026887af258a",
21 "Pre": true
22 }
23 ]
24 }
25 }
26}
查询仓库的版本详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Iid | 是 | Integer | 版本序号Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Release | Release | 版本 |
Release 参数详解
参数名称 | 类型 | 描述 |
---|---|---|
DepotId | Integer | 仓库 Id |
Id | Integer | 版本 Id |
Iid | Integer | 页面显示的版本序号 |
Html | String | html内容 |
Title | String | 标题 |
Body | String | 内容 |
TagName | String | 标签名字 |
CommitSha | String | commit Sha 值 |
CreatedAt | Integer | 数据创建时间 |
UpdatedAt | Integer | 数据更新时间 |
CreatorId | Integer | 数据由谁创建 |
ProjectId | Integer | 项目 Id |
TargetCommitish | String | 目标 commit Sha 值 |
Pre | bool | 是否预发布 |
Example 1
成功示例
1{
2 "Action": "DescribeGitReleaseDetail",
3 "DepotId": 809883,
4 "Iid": 17
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1bfcce2c-6a4b-6e47-5012-cd33ccf2fbe2",
4 "Release": {
5 "Id": 31585,
6 "Iid": 17,
7 "Html": "<p>Description</p>",
8 "Title": "Title",
9 "Body": "Description",
10 "DepotId": 809883,
11 "TagName": "TagName",
12 "CommitSha": "6efc794f0d694fed6cd033ddc984026887af258a",
13 "CreatedAt": 1630487449000,
14 "UpdatedAt": 1630487449000,
15 "CreatorId": 1,
16 "ProjectId": 797199,
17 "TargetCommitish": "6efc794f0d694fed6cd033ddc984026887af258a",
18 "Pre": true
19 }
20 }
21}
创建仓库版本
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
TagName | 是 | String | 标签名称 |
CommitSha | 否 | String | Commit 的 Sha 值 |
TargetCommitish | 是 | String | 创建来源分支名 |
Title | 是 | String | 标题 |
Description | 是 | String | 描述 |
Pre | 是 | bool | 是否预发布 |
Example 1
成功示例
1{
2 "Action": "CreateGitRelease",
3 "DepotId": 809883,
4 "TagName": "TagName",
5 "CommitSha": "48ddd600f7ff5e21a283105866de6a80fda708d7",
6 "TargetCommitish": "master",
7 "Title": "Title",
8 "Description": "Description",
9 "Pre": true
10}
成功示例
1{
2 "Response": {
3 "RequestId": "ee4beb6c-92c6-df4e-c598-7cb73c2105be"
4 }
5}
修改仓库的版本信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
Iid | 是 | Integer | 版本序号Id |
Title | 是 | String | 标题 |
Description | 是 | String | 描述 |
Pre | 是 | bool | 是否预发布 |
Example 1
成功示例
1{
2 "Action": "ModifyGitRelease",
3 "DepotId": 809883,
4 "Iid": 17,
5 "Title": "ModifyReleaseTitleName",
6 "Description": "ModifyReleaseDescription",
7 "Pre": true
8}
成功示例
1{
2 "Response": {
3 "RequestId": "542449d7-c975-9fbe-9389-7d009e742d0f"
4 }
5}
删除仓库的版本息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
DepotId | 是 | Integer | 仓库 Id |
TagName | 是 | String | 标签名称 |
Example 1
成功示例
1{
2 "Action": "DeleteGitRelease",
3 "DepotId": 809883,
4 "TagName": "TagName"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "542449d7-c975-9fbe-9389-7d009e742d0f"
4 }
5}