提供一站式软件研发管理工具

CODING OPEN API

基础路径

API BASE URL

  • https://{your-team}.coding.net

CODING 提供了丰富的 API 接口,注册应用即可使用,无需审核,支持两种认证方式:OAuth 2.0 协议个人访问令牌

OAuth 认证

创建 CODING 应用

  1. 点击【个人设置】->【开放生态】->【创建应用】,填写信息。「回调地址」可填写为 http://127.0.0.1,便于本地开发。

  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

新版接口认证方式

新版接口不再使用 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"
  }
}

API REFERENCE

团队

查询团队内所有项目列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeCodingProjects。
PageNumberInteger页数
PageSizeInteger每页条数
ProjectNameString项目名称

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
DataProjectsData项目列表数据

ProjectsData

名称类型描述
PageNumberInteger第几页
PageSizeInteger每页条数
TotalCountInteger总条数
ProjectListArray of Project项目集合

Project

名称类型描述
IdInteger项目 ID
CreatedAtInteger创建时间
注意:此字段可能返回 null,表示取不到有效值。
UpdatedAtInteger更新时间
注意:此字段可能返回 null,表示取不到有效值。
StatusInteger状态
注意:此字段可能返回 null,表示取不到有效值。
TypeInteger类型
注意:此字段可能返回 null,表示取不到有效值。
NameString名称
注意:此字段可能返回 null,表示取不到有效值。
DisplayNameString显示名称
注意:此字段可能返回 null,表示取不到有效值。
DescriptionString描述
注意:此字段可能返回 null,表示取不到有效值。
IconString图标
注意:此字段可能返回 null,表示取不到有效值。
TeamIdInteger团队 ID
注意:此字段可能返回 null,表示取不到有效值。
IsDemoBoolean是否为模板项目
注意:此字段可能返回 null,表示取不到有效值。
MaxMemberInteger最大团员数
注意:此字段可能返回 null,表示取不到有效值。
UserOwnerIdInteger个人所有者 ID
注意:此字段可能返回 null,表示取不到有效值。
ArchivedBoolean是否压缩
注意:此字段可能返回 null,表示取不到有效值。
StartDateInteger项目开始时间
注意:此字段可能返回 null,表示取不到有效值。
TeamOwnerIdInteger团队所有者 ID
注意:此字段可能返回 null,表示取不到有效值。
EndDateInteger项目结束时间
注意:此字段可能返回 null,表示取不到有效值。
post/open-api?Action=DescribeCodingProjects
状态码 200

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}

查询团队成员列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeTeamMembers。
PageNumberInteger请求页数
PageSizeInteger请求条数

输出参数

参数名称类型描述
Data[TeamMemberData]团队成员分页列表信息
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

TeamMemberData

团队成员分页信息

名称类型描述
PageNumberInteger第几页
PageSizeInteger每页条数
TotalCountInteger总条数
TeamMembersArray of [UserData]成员列表信息

UserData

用户成员信息

名称类型描述
IdInteger用户Id
TeamIdInteger团队Id
NameString用户名
NamePinYinString用户名拼音
AvatarString头像
EmailString邮箱
PhoneString手机号
EmailValidationInteger邮箱是否验证 0 否 /1 是
PhoneValidationInteger手机是否验证 0 否 /1 是
StatusInteger用户状态
post/open-api?Action=DescribeTeamMembers
状态码 200

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}

项目

创建项目

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:CreateCodingProject
NameString项目标识
DisplayNameString项目名称
GitReadmeEnabledBoolean启用 README.md 文件初始化项目 true|false
VcsTypeStringgit|svn|hg
CreateSvnLayoutBoolean是否创建 SVN 仓库推荐布局 默认 false
SharedInteger0: 不公开 1:公开源代码
ProjectTemplateString项目模版 CODE_HOST 代码托管项目, PROJECT_MANAGE 项目管理项目, DEV_OPS DevOps 项目, DEMO_BEGIN 范例项目
DescriptionString项目描述
IconString项目图标
GitIgnoreStringgit ignore 文件类型

输出参数

参数名称类型描述
ProjectIdInteger项目 Id
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=CreateCodingProject
状态码 200

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}

编辑项目

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:ModifyProject
ProjectIdInteger项目 id
NameString项目标识
DisplayNameString项目名称
DescriptionString项目描述
StartDateString开始时间
EndDateString结束时间

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=ModifyProject
状态码 200

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}

删除项目

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DeleteOneProject
ProjectIdInteger项目 Id

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DeleteOneProject
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DeleteOneProject",
3  "ProjectId": 2
4}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4  }
5}

查询项目

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeOneProject
ProjectIdInteger项目 Id

输出参数

参数名称类型描述
ProjectProject项目信息
注意:此字段可能返回 null,表示取不到有效值。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

项目信息

名称类型描述
IdInteger项目 ID
CreatedAtInteger创建时间
注意:此字段可能返回 null,表示取不到有效值。
UpdatedAtInteger更新时间
注意:此字段可能返回 null,表示取不到有效值。
StatusInteger状态
注意:此字段可能返回 null,表示取不到有效值。
TypeInteger类型
注意:此字段可能返回 null,表示取不到有效值。
NameString名称
注意:此字段可能返回 null,表示取不到有效值。
DisplayNameString显示名称
注意:此字段可能返回 null,表示取不到有效值。
DescriptionString描述
注意:此字段可能返回 null,表示取不到有效值。
IconString图标
注意:此字段可能返回 null,表示取不到有效值。
TeamIdInteger团队 ID
注意:此字段可能返回 null,表示取不到有效值。
IsDemoBoolean是否为模板项目
注意:此字段可能返回 null,表示取不到有效值。
MaxMemberInteger最大团员数
注意:此字段可能返回 null,表示取不到有效值。
UserOwnerIdInteger个人所有者 ID
注意:此字段可能返回 null,表示取不到有效值。
ArchivedBoolean是否压缩
注意:此字段可能返回 null,表示取不到有效值。
StartDateInteger项目开始时间
注意:此字段可能返回 null,表示取不到有效值。
TeamOwnerIdInteger团队所有者 ID
注意:此字段可能返回 null,表示取不到有效值。
EndDateInteger项目结束时间
注意:此字段可能返回 null,表示取不到有效值。
post/open-api?Action=DescribeOneProject
状态码 200

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}

查询项目成员列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeProjectMembers。
PageNumberInteger请求页数
PageSizeInteger请求条数
ProjectIdInteger项目Id

输出参数

参数名称类型描述
Data[ProjectMemberData]项目成员分页列表信息
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

ProjectMemberData

项目成员分页信息

名称类型描述
PageNumberInteger第几页
PageSizeInteger每页条数
TotalCountInteger总条数
ProjectMembersArray of [UserData]项目成员列表信息

UserData

用户成员信息

名称类型描述
IdInteger用户Id
TeamIdInteger团队Id
NameString用户名
NamePinYinString用户名拼音
AvatarString头像
EmailString邮箱
PhoneString手机号
EmailValidationInteger邮箱是否验证 0 否 /1 是
PhoneValidationInteger手机是否验证 0 否 /1 是
StatusInteger用户状态
post/open-api?Action=DescribeProjectMembers
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DescribeProjectMembers",
3  "PageNumber": 1,
4  "PageSize": 10,
5  "ProjectId": 1
6}

成功示例

上为输入示例 / 下为输出示例
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        }
21      ]
22    }
23  }
24}

查询项目根据项目名称

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeProjectByName。
ProjectNameString项目名称

输出参数

参数名称类型描述
Project[Project]项目信息
注意:此字段可能返回 null,表示取不到有效值。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

Project

项目信息

名称类型描述
IdInteger项目 ID
CreatedAtInteger创建时间
注意:此字段可能返回 null,表示取不到有效值。
UpdatedAtInteger更新时间
注意:此字段可能返回 null,表示取不到有效值。
StatusInteger状态
注意:此字段可能返回 null,表示取不到有效值。
TypeInteger类型
注意:此字段可能返回 null,表示取不到有效值。
NameString名称
注意:此字段可能返回 null,表示取不到有效值。
DisplayNameString显示名称
注意:此字段可能返回 null,表示取不到有效值。
DescriptionString描述
注意:此字段可能返回 null,表示取不到有效值。
IconString图标
注意:此字段可能返回 null,表示取不到有效值。
TeamIdInteger团队 ID
注意:此字段可能返回 null,表示取不到有效值。
IsDemoBoolean是否为模板项目
注意:此字段可能返回 null,表示取不到有效值。
MaxMemberInteger最大团员数
注意:此字段可能返回 null,表示取不到有效值。
UserOwnerIdInteger个人所有者 ID
注意:此字段可能返回 null,表示取不到有效值。
ArchivedBoolean是否压缩
注意:此字段可能返回 null,表示取不到有效值。
StartDateInteger项目开始时间
注意:此字段可能返回 null,表示取不到有效值。
TeamOwnerIdInteger团队所有者 ID
注意:此字段可能返回 null,表示取不到有效值。
EndDateInteger项目结束时间
注意:此字段可能返回 null,表示取不到有效值。
post/open-api?Action=DescribeProjectByName
状态码 200

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}

增加项目成员

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:CreateProjectMember。
ProjectIdInteger项目Id
TypeInteger类型 |90 项目管理员|80 项目成员
UserGlobalKeyList.NArray of String用户user gk数组

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=CreateProjectMember
状态码 200

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}

项目设置

查询成员所在项目列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeUserProjects
UserIdInteger成员 Id

输出参数

参数名称类型描述
ProjectListArray of Project项目列表信息
注意:此字段可能返回 null,表示取不到有效值。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

参数信息

名称类型描述
IdInteger项目 ID
CreatedAtInteger创建时间
注意:此字段可能返回 null,表示取不到有效值。
UpdatedAtInteger更新时间
注意:此字段可能返回 null,表示取不到有效值。
StatusInteger状态
注意:此字段可能返回 null,表示取不到有效值。
TypeInteger类型
注意:此字段可能返回 null,表示取不到有效值。
NameString名称
注意:此字段可能返回 null,表示取不到有效值。
DisplayNameString显示名称
注意:此字段可能返回 null,表示取不到有效值。
DescriptionString描述
注意:此字段可能返回 null,表示取不到有效值。
IconString图标
注意:此字段可能返回 null,表示取不到有效值。
TeamIdInteger团队 ID
注意:此字段可能返回 null,表示取不到有效值。
IsDemoBoolean是否为模板项目
注意:此字段可能返回 null,表示取不到有效值。
MaxMemberInteger最大团员数
注意:此字段可能返回 null,表示取不到有效值。
UserOwnerIdInteger个人所有者 ID
注意:此字段可能返回 null,表示取不到有效值。
ArchivedBoolean是否压缩
注意:此字段可能返回 null,表示取不到有效值。
StartDateInteger项目开始时间
注意:此字段可能返回 null,表示取不到有效值。
TeamOwnerIdInteger团队所有者 ID
注意:此字段可能返回 null,表示取不到有效值。
EndDateInteger项目结束时间
注意:此字段可能返回 null,表示取不到有效值。
post/open-api?Action=DescribeUserProjects
状态码 200

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}

获取用户个人信息

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeCodingCurrentUser

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
UserUser 类型用户个人信息

参数说明

名称类型描述
IdInteger用户 ID
StatusInteger状态(新用户/已激活)
注意:此字段可能返回 null,表示取不到有效值。
EmailString邮箱
注意:此字段可能返回 null,表示取不到有效值。
GlobalKeyString用户唯一标志
注意:此字段可能返回 null,表示取不到有效值。
AvatarString头像地址
注意:此字段可能返回 null,表示取不到有效值。
NameString姓名
注意:此字段可能返回 null,表示取不到有效值。
NamePinYinString姓名拼音
注意:此字段可能返回 null,表示取不到有效值。
PhoneString联系电话
注意:此字段可能返回 null,表示取不到有效值。
PhoneValidationInteger手机是否已验证
注意:此字段可能返回 null,表示取不到有效值。
EmailValidationInteger邮箱是否已验证
注意:此字段可能返回 null,表示取不到有效值。
PhoneRegionCodeString手机号地区
注意:此字段可能返回 null,表示取不到有效值。
TeamIdInteger团队 ID
注意:此字段可能返回 null,表示取不到有效值。
post/open-api?Action=DescribeCodingCurrentUser
状态码 200

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}

配置项目成员权限

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:ModifyProjectPermission。
RoleIdInteger权限 ID
UserGKStringuser gk
ProjectIdInteger项目 Id
ActionFlagBoolean权限创建、删除

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=ModifyProjectPermission
状态码 200

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}

需求

查询需求关联事项列表

输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeRequirementDefectRelation。
ProjectNameString项目名称
RequirementCodeInteger需求 Code

输出参数

参数名称类型描述
IssuesArray of IssueSimpleData缺陷列表
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DescribeRequirementDefectRelation
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "ProjectName": "project-demo",
3  "RequirementCode": 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}

修改缺陷所属的需求

输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。

参数名称必选类型描述
ActionString公共参数,本接口取值:ModifyDefectRelatedRequirement。
ProjectNameString项目名称
DefectCodeInteger缺陷 Code
RequirementCodeInteger需求 Code

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=ModifyDefectRelatedRequirement
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "ProjectName": "project-demo",
3  "DefectCode": 2,
4  "RequirementCode": 3
5}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "1"
4  }
5}

需求关联缺陷

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:CreateRequirementDefectRelation。
ProjectNameString项目名称
RequirementCodeInteger需求 Code
DefectCodeInteger缺陷 Code

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=CreateRequirementDefectRelation
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "ProjectName": "project-demo",
3  "RequirementCode": 1,
4  "DefectCode": 2
5}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "1"
4  }
5}

事项

创建事项

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:CreateIssue
ProjectNameString项目名称
TypeString事项类型
DEFECT - 缺陷
REQUIREMENT - 需求
MISSION - 任务
EPIC - 史诗
SUB_TASK - 子任务
IssueTypeIdInteger具体事项类型 ID,参考 DescribeTeamIssueTypeList
ParentCodeInteger所属事项 Code,Type 为 SUB_TASK 时需指定
NameString事项名称
StatusIdInteger事项状态 Id
AssigneeIdInteger指派人 Id
DescriptionString描述
DueDateString截止日期
StartDateString开始日期
WorkingHoursDouble工时(小时)
ProjectModuleIdInteger项目模块 Id
WatcherIdsArray of Integer事项关注人 Id 列表
DefectTypeIdInteger项目缺陷类型 Id
RequirementTypeIdInteger项目需求类型 Id
PriorityString紧急程度
"0" - 低
"1" - 中
"2" - 高
"3" - 紧急
IterationCodeInteger迭代 Code,Type 为 EPIC 或 SUB_TASK 时,忽略该值
EpicCodeInteger史诗 Code,Type 为 EPIC 或 SUB_TASK 时,不传该值
StoryPointString故事点,例如:0.5、1
LabelIdsArray of Integer标签 Id 列表
FileIdsArray of Integer文件 Id 列表
TargetSortCodeInteger排序目标位置的事项 code
可不填,排在底位
ThirdLinksArray of CreateThirdLinkForm第三方链接列表
CustomFieldValuesArray of IssueCustomFieldForm自定义属性值列表

输出参数

参数名称类型描述
IssueIssueDetail事项信息。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

IssueDetail

参数名称类型描述
ParentTypeString父事项类型
CodeInteger事项 Code
TypeString事项类型:
DEFECT - 缺陷,
REQUIREMENT - 需求,
MISSION - 任务,
EPIC - 史诗,
SUB_TASK - 子工作项
IssueTypeDetailIssueTypeDetail事项类型具体信息
NameString名称
DescriptionString描述
IterationIdInteger迭代 Id
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
IssueStatusTypeString事项状态类型,例如:TODO
PriorityString优先级
"0" - 低
"1" - 中
"2" - 高
"3" - 紧急
"" - 未指定
AssigneeUserSimple处理人,Assignee.Id 等于 0 时表示未指定。
StartDateLong开始日期时间戳
DueDateLong截止日期时间戳
WorkingHoursDouble工时(小时)
CreatorUserSimple创建人
StoryPointString故事点,例如:"0.5"、"0"
空字符串 "" 表示未指定。
CreatedAtLong创建时间
UpdatedAtLong修改时间
CompletedAtLong完成时间
ProjectModuleProjectModule项目模块,ProjectModule.Id 等于 0 时表示未指定。
WatchersArray of UserSimple关注人
LabelsArray of Label标签列表
FilesArray of ProjectFile附件列表
RequirementType需求类型
DefectTypeDefectType缺陷类型
CustomFieldsArray of CustomField自定义字段列表
ThirdLinksArray of ThirdLink第三方链接列表
SubTasksArray of SubTask子任务列表
ParentIssueSimple父事项
EpicEpic所属史诗
IterationIterationSimple所属迭代

UserSimple

参数名称类型描述
IdInteger用户 Id
StatusInteger用户状态
AvatarString头像地址
NameString姓名
EmailString邮箱

ProjectModule

参数名称类型描述
IdInteger用户 Id
NameString模块名称

Label

参数名称类型描述
IdInteger用户 Id
NameString名称
ColorString颜色

ProjectFile

参数名称类型描述
FileIdInteger文件 Id
NameString文件名称
TypeInteger类型
0 - 文件夹
1 - 文本
2 - 图片
3 - 二进制
4 - SVG
SizeLong大小(比特)
UrlString下载地址

CustomField

参数名称类型描述
IdInteger自定义属性 Id
ValueStringString自定义属性值,JSON 字符串
根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组
另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象

ThirdLink

参数名称类型描述
IdInteger第三方链接 Id
ThirdTypeInteger第三方链接类型,MODAO - 墨刀
LinkString链接地址
TitleString名称

IssueSimple

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

Epic

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

SubTask

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

IterationSimple

参数名称类型描述
CodeInteger迭代代码
NameString迭代名称
StatusString迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED

IssueTypeDetail 事项类型具体信息

参数名称类型描述
IdInteger事项类型ID
NameString事项类型名称
IssueTypeString事项类型基础类型,比如:REQUIREMENT、MISSION
DescriptionString类型描述
IsSystemBool是否是系统内置
post/open-api?Action=CreateIssue
状态码 200

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}

成功示例

上为输入示例 / 下为输出示例
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}

删除事项

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DeleteIssue
ProjectNameString项目名称
IssueCodeInteger事项 Code
IssueTypeString事项类型,可不填

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DeleteIssue
状态码 200

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}

查询事项附件的下载地址

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssueFileUrl
ProjectNameString项目名称
FileIdInteger文件 Id

输出参数

参数名称类型描述
UrlString文件下载地址
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DescribeIssueFileUrl
状态码 200

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}

查询筛选器列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssueFilterList
ProjectNameString项目名称
IssueTypeString事项类型
ALL - 全部事项
DEFECT - 缺陷
REQUIREMENT - 需求
MISSION - 任务
EPIC - 史诗

输出参数

参数名称类型描述
DataIssueFilterListData过滤器列表,包含系统过滤器和自定义过滤器。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

IssueFilterListData

参数名称类型描述
SystemFilterListArray of IssueFilter系统过滤器列表
SystemFilterListArray of IssueFilter自定义过滤器列表

IssueFilter

参数名称类型描述
IdInteger过滤器 ID
IssueTypeString事项类型
CreatorIdInteger创建人 ID
NameString名称
IsSystemBoolean是否是团队筛选器
SharedTeamBoolean是否是系统自带
IsDefaultBoolean默认筛选器
ContentString筛选组合,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}
CreatedAtLong创建时间
UpdatedAtLong修改时间
post/open-api?Action=DescribeIssueFilterList
状态码 200

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}

查询事项列表(旧)

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssueList
ProjectNameString项目名称
IssueTypeInteger事项类型
ALL - 全部事项
DEFECT - 缺陷
REQUIREMENT - 需求
MISSION - 任务
EPIC - 史诗
OffsetInteger偏移量,默认 0
LimitInteger限制数目,默认 20
ConditionsArray of IssueCondition筛选条件列表
SortKeyString排序字段,默认: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
SortValueString排序方式
DESC - 倒序(默认值)
ASC - 正序

输出参数

参数名称类型描述
IssueListArray of IssueListData事项列表。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

IssueCondition

参数名称类型描述
KeyString筛选字段 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
ValueString筛选值,多选值用逗号隔开。
日期格式: 2020-08-01,日期时间格式: 2020-08-01 12:00:00
整数、小数、日期、日期时间类型的字段值应为一个范围,前后闭区间,范围开始值与结束值之间使用"_"连接,例如:"0.1_5.0"、"2020-08-01_2020-08-31"。
ConstValueString常量值
"UNSPECIFIC" 表示未指定,例如:处理人、需求类型、标签等字段,使用此值来筛选未指定处理人、需求类型或标签的事项。
CustomFieldIdInteger自定义字段 Id,Key 为 "CUSTOM" 时需设置该值,常规字段无需设置。

IssueListData

参数名称类型描述
ParentTypeString父事项类型
CodeInteger事项 Code
TypeString事项类型
IssueTypeIdInteger事项类型ID
NameString名称
DescriptionString描述
IterationIdInteger迭代 Id
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
IssueStatusTypeString事项状态类型,例如:TODO
PriorityString优先级
"0" - 低
"1" - 中
"2" - 高
"3" - 紧急
"" - 未指定
AssigneeIdInteger处理人 Id
StartDateLong开始日期时间戳
DueDateLong截止日期时间戳
WorkingHoursDouble工时(小时)
CreatorIdInteger创建人 Id
StoryPointString故事点,例如:"0.5"、"0"
空字符串 "" 表示未指定。
CreatedAtLong创建时间
UpdatedAtLong修改时间
CompletedAtLong完成时间
IterationIterationSimple迭代信息
IssueTypeDetailIssueTypeDetail事项类型具体信息

IssueTypeDetail 事项类型具体信息

参数名称类型描述
IdInteger事项类型ID
NameString事项类型名称
IssueTypeString事项类型基础类型,比如:REQUIREMENT、MISSION
DescriptionString类型描述
IsSystemBool是否是系统内置
post/open-api?Action=DescribeIssueList
状态码 200

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}

查询事项详情

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssue
ProjectNameString项目名称
IssueCodeInteger事项 Code

输出参数

参数名称类型描述
IssueIssueDetail事项信息。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

IssueDetail

参数名称类型描述
ParentTypeString父事项类型
CodeInteger事项 Code
TypeString事项类型:
DEFECT - 缺陷,
REQUIREMENT - 需求,
MISSION - 任务,
EPIC - 史诗,
SUB_TASK - 子工作项
NameString名称
DescriptionString描述
IterationIdInteger迭代 Id
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
IssueStatusTypeString事项状态类型,例如:TODO
PriorityString优先级
"0" - 低
"1" - 中
"2" - 高
"3" - 紧急
"" - 未指定
AssigneeUserSimple处理人,Assignee.Id 等于 0 时表示未指定。
StartDateLong开始日期时间戳
DueDateLong截止日期时间戳
WorkingHoursDouble工时(小时)
CreatorUserSimple创建人
StoryPointString故事点,例如:"0.5"、"0"
空字符串 "" 表示未指定。
CreatedAtLong创建时间
UpdatedAtLong修改时间
CompletedAtLong完成时间
ProjectModuleProjectModule项目模块,ProjectModule.Id 等于 0 时表示未指定。
WatchersArray of UserSimple关注人
LabelsArray of Label标签列表
FilesArray of ProjectFile附件列表
RequirementType需求类型
DefectTypeDefectType缺陷类型
CustomFieldsArray of CustomField自定义字段列表
ThirdLinksArray of ThirdLink第三方链接列表
SubTasksArray of SubTask子任务列表
ParentIssueSimple父事项
EpicEpic所属史诗
IterationIterationSimple所属迭代
IssueTypeDetailIssueTypeDetail事项类型具体信息

UserSimple

参数名称类型描述
IdInteger用户 Id
StatusInteger用户状态
AvatarString头像地址
NameString姓名
EmailString邮箱

ProjectModule

参数名称类型描述
IdInteger用户 Id
NameString模块名称

Label

参数名称类型描述
IdInteger用户 Id
NameString名称
ColorString颜色

ProjectFile

参数名称类型描述
FileIdInteger文件 Id
NameString文件名称
TypeInteger类型
0 - 文件夹
1 - 文本
2 - 图片
3 - 二进制
4 - SVG
SizeLong大小(比特)
UrlString下载地址

CustomField

参数名称类型描述
IdInteger自定义属性 Id
ValueStringString自定义属性值,JSON 字符串
根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组
另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象

ThirdLink

参数名称类型描述
IdInteger第三方链接 Id
ThirdTypeInteger第三方链接类型,MODAO - 墨刀
LinkString链接地址
TitleString名称

IssueSimple

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

Epic

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

SubTask

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

IterationSimple

参数名称类型描述
CodeInteger迭代代码
NameString迭代名称
StatusString迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED

IssueTypeDetail 事项类型具体信息

参数名称类型描述
IdInteger事项类型ID
NameString事项类型名称
IssueTypeString事项类型基础类型,比如:REQUIREMENT、MISSION
DescriptionString类型描述
IsSystemBool是否是系统内置
post/open-api?Action=DescribeIssue
状态码 200

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}

查询属性设置

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeProjectIssueFieldList
ProjectNameString项目名称
IssueTypeString事项类型
DEFECT - 缺陷
REQUIREMENT - 需求
MISSION - 任务
EPIC - 史诗
SUB_TASK - 子任务

输出参数

参数名称类型描述
ProjectIssueFieldListArray of ProjectIssueField项目属性列表
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

ProjectIssueField

参数名称类型描述
IssueFieldIdInteger关联属性 Id
NeedDefaultString是否有默认值
ValueStringString默认值, JSON 字符串。例如:{"type":"VARIABLE","value":"CREATOR"}
type:默认值类型,VARIABLE - 变量值(如创建者为 CREATOR) | CONSTANT - 常量值
value:默认值,根据 IssueField.ComponentType,可能为不同类型的值:数值、字符串、数组等
IssueTypeString事项类型
RequiredString是否必填
IssueFieldIssueField关联属性
CreatedAtLong创建时间
UpdatedAtLong修改时间

IssueField

参数名称类型描述
IdInteger属性 Id
NameString名称
IconUrlString图标地址
TypeString字段类型
ComponentTypeString字段空间类型
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 - 小数输入框
DescriptionString事项类型
OptionsArray of IssueFieldOption选项列表
UnitString单位
SelectableBoolean项目中属性可选
RequiredBoolean是否比天
EditableBoolean是否可修改
DeletableBoolean是否可删除
SortableBoolean是否可排序
CreatedByInteger创建者
CreatedAtLong创建时间
UpdatedAtLong修改时间

IssueFieldOption

参数名称类型描述
IconString选项图标地址
SortString排序
TitleString选项标题
ValueString选项值
post/open-api?Action=DescribeProjectIssueFieldList
状态码 200

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}

查询状态设置

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeProjectIssueStatusList
ProjectNameString项目名称
IssueTypeString事项类型
DEFECT - 缺陷
REQUIREMENT - 需求
MISSION - 任务
EPIC - 史诗
SUB_TASK - 子任务

输出参数

参数名称类型描述
ProjectIssueStatusListArray of ProjectIssueStatus项目状态列表
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

ProjectIssueStatus

参数名称类型描述
IssueTypeString事项类型
IssueStatusIdInteger事项状态 Id
IsDefaultBoolean是否是默认值
CreatedAtLong创建时间
UpdatedAtLong修改时间
SortInteger排序
IssueStatusString事项状态

IssueStatus

参数名称类型描述
IdInteger事项状态 Id
IndexInteger状态序号
NameString名称
TypeString类型,例如:TODO、PROCESSING、COMPLETED
DescriptionString描述
IsSystemBoolean是否是系统内置
CreatedAtLong创建时间
UpdatedAtLong修改时间
post/open-api?Action=DescribeProjectIssueStatusList
状态码 200

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}

修改事项

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:ModifyIssue
ProjectNameString项目名称
IssueCodeInteger事项 Code
ParentCodeInteger所属事项 Code
NameString事项名称
StatusIdInteger事项状态 Id
AssigneeIdInteger指派人 Id
DueDateString截止日期
StartDateString开始日期
WorkingHoursDouble工时(小时)
ProjectModuleIdInteger项目模块 Id
WatcherIdsArray of Integer添加的事项关注人 Id 列表
DelWatcherIdsArray of Integer删除的事项关注人 Id 列表
DefectTypeIdInteger项目缺陷类型 Id
RequirementTypeIdInteger项目需求类型 Id
PriorityString优先级
"0" - 低
"1" - 中
"2" - 高
"3" - 紧急
StoryPointString故事点,例如:0.5、1
LabelIdsArray of Integer添加的标签 Id 列表
DelLabelIdsArray of Integer删除的标签 Id 列表
FileIdsArray of Integer添加的文件 Id 列表
DelFileIdsArray of Integer删除的文件 Id 列表
CustomFieldValuesArray of IssueCustomFieldForm自定义属性值列表

输出参数

参数名称类型描述
IssueIssueDetail事项信息。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

IssueDetail

参数名称类型描述
ParentTypeString父事项类型
CodeInteger事项 Code
TypeString事项类型:
DEFECT - 缺陷,
REQUIREMENT - 需求,
MISSION - 任务,
EPIC - 史诗,
SUB_TASK - 子工作项
NameString名称
DescriptionString描述
IterationIdInteger迭代 Id
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
IssueStatusTypeString事项状态类型,例如:TODO
PriorityString优先级
"0" - 低
"1" - 中
"2" - 高
"3" - 紧急
"" - 未指定
AssigneeUserSimple处理人,Assignee.Id 等于 0 时表示未指定。
StartDateLong开始日期时间戳
DueDateLong截止日期时间戳
WorkingHoursDouble工时(小时)
CreatorUserSimple创建人
StoryPointString故事点,例如:"0.5"、"0"
空字符串 "" 表示未指定。
CreatedAtLong创建时间
UpdatedAtLong修改时间
CompletedAtLong完成时间
ProjectModuleProjectModule项目模块,ProjectModule.Id 等于 0 时表示未指定。
WatchersArray of UserSimple关注人
LabelsArray of Label标签列表
FilesArray of ProjectFile附件列表
RequirementType需求类型
DefectTypeDefectType缺陷类型
CustomFieldsArray of CustomField自定义字段列表
ThirdLinksArray of ThirdLink第三方链接列表
SubTasksArray of SubTask子任务列表
ParentIssueSimple父事项
EpicEpic所属史诗
IterationIterationSimple所属迭代
IssueTypeDetailIssueTypeDetail事项类型具体信息

UserSimple

参数名称类型描述
IdInteger用户 Id
StatusInteger用户状态
AvatarString头像地址
NameString姓名
EmailString邮箱

ProjectModule

参数名称类型描述
IdInteger用户 Id
NameString模块名称

Label

参数名称类型描述
IdInteger用户 Id
NameString名称
ColorString颜色

ProjectFile

参数名称类型描述
FileIdInteger文件 Id
NameString文件名称
TypeInteger类型
0 - 文件夹
1 - 文本
2 - 图片
3 - 二进制
4 - SVG
SizeLong大小(比特)
UrlString下载地址

CustomField

参数名称类型描述
IdInteger自定义属性 Id
ValueStringString自定义属性值,JSON 字符串
根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组
另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象

ThirdLink

参数名称类型描述
IdInteger第三方链接 Id
ThirdTypeInteger第三方链接类型,MODAO - 墨刀
LinkString链接地址
TitleString名称

IssueSimple

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

Epic

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

SubTask

参数名称类型描述
CodeInteger事项 Code
TypeString事项类型
NameString名称
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
PriorityString优先级
AssigneeUserSimple处理人

IterationSimple

参数名称类型描述
CodeInteger迭代代码
NameString迭代名称
StatusString迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED

IssueTypeDetail 事项类型具体信息

参数名称类型描述
IdInteger事项类型ID
NameString事项类型名称
IssueTypeString事项类型基础类型,比如:REQUIREMENT、MISSION
DescriptionString类型描述
IsSystemBool是否是系统内置
post/open-api?Action=ModifyIssue
状态码 200

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}

查询后置事项

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeBlockIssueList。
ProjectNameString项目名称
IssueCodeInteger事项 Code

输出参数

参数名称类型描述
IssuesArray of IssueSimpleData后置事项列表
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DescribeBlockIssueList
状态码 200

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}

查询前置事项

输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeBlockedByIssueList。
ProjectNameString项目名称
IssueCodeInteger事项 Code

输出参数

参数名称类型描述
IssuesArray of IssueSimpleData前置事项列表
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DescribeBlockedByIssueList
状态码 200

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}

查询子事项列表

输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeSubIssueList。
ProjectNameString项目名称
IssueCodeInteger事项 Code

输出参数

参数名称类型描述
SubIssueListArray of IssueListData子事项列表
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DescribeSubIssueList
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "ProjectName": "project-demo",
3  "IssueCode": 1
4}

成功示例

上为输入示例 / 下为输出示例
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}

删除前置事项

输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。

参数名称必选类型描述
ActionString公共参数,本接口取值:DeleteIssueBlock。
ProjectNameString项目名称
IssueCodeInteger事项 Code
BlockIssueCodeInteger前置事项 Code

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DeleteIssueBlock
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "ProjectName": "project-demo",
3  "IssueCode": 1,
4  "BlockIssueCode": 4
5}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "1"
4  }
5}

添加前置事项

输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。

参数名称必选类型描述
ActionString公共参数,本接口取值:CreateIssueBlock。
ProjectNameString项目名称
IssueCodeInteger事项 Code
BlockIssueCodeInteger前置事项 Code

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=CreateIssueBlock
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "ProjectName": "project-demo",
3  "IssueCode": 1,
4  "BlockIssueCode": 4
5}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "1"
4  }
5}

修改事项父需求

输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。

参数名称必选类型描述
ActionString公共参数,本接口取值:ModifyIssueParentRequirement。
ProjectNameString项目名称
IssueCodeInteger事项 Code
ParentIssueCodeInteger父事项 Code

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=ModifyIssueParentRequirement
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "ProjectName": "project-demo",
3  "IssueCode": 10,
4  "ParentIssueCode": 1
5}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "1"
4  }
5}

查询企业所有事项类型列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeTeamIssueTypeList。

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
IssueTypesArray of IssueTypeDetail事项类型列表

IssueTypeDetail 事项类型具体信息

参数名称类型描述
IdInteger事项类型ID
NameString事项类型名称
IssueTypeString事项类型基础类型,比如:REQUIREMENT、MISSION
DescriptionString类型描述
IsSystemBool是否是系统内置
post/open-api?Action=DescribeTeamIssueTypeList
状态码 200

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}

查询项目引用的事项类型列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeProjectIssueTypeList
ProjectNameString项目名称,非 ID、displayname

输出参数

参数名称类型描述
IssueTypesArray of IssueTypeDetailWithSplit项目内事项类型列表

IssueTypeDetailWithSplit

参数名称类型描述
IdInteger事项类型ID
NameString事项类型名称
IssueTypeString事项类型基础类型,比如:REQUIREMENT、MISSION
DescriptionString类型描述
IsSystemBool是否是系统内置
SplitTypeString分解类型, UNSPLITTABLE-不允许分解, SPECIFIC_TYPE-指定类型 , ALL_REQUIREMENT-全部需求类型
SplitTargetIssueTypeIdArray of Integer可以分解为哪些事项类型,值为类型 ID,SplitType=SPECIFIC_TYPE 时可用
post/open-api?Action=DescribeProjectIssueTypeList
状态码 200

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}

事项列表(新)

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssueListWithPage
ProjectNameString项目名称
IssueTypeInteger事项类型
ALL - 全部事项
DEFECT - 缺陷
REQUIREMENT - 需求
MISSION - 任务
EPIC - 史诗
PageNumberInteger分页数
PageSizeInteger每页展示数,默认 20
ConditionsArray of IssueCondition筛选条件列表
SortKeyString排序字段,默认: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
SortValueString排序方式
DESC - 倒序(默认值)
ASC - 正序

输出参数

参数名称类型描述
IssueListArray of IssueListData事项列表。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

IssueCondition

参数名称类型描述
KeyString筛选字段 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
ValueString筛选值,多选值用逗号隔开。
日期格式: 2020-08-01,日期时间格式: 2020-08-01 12:00:00
整数、小数、日期、日期时间类型的字段值应为一个范围,前后闭区间,范围开始值与结束值之间使用"_"连接,例如:"0.1_5.0"、"2020-08-01_2020-08-31"。
ConstValueString常量值
"UNSPECIFIC" 表示未指定,例如:处理人、需求类型、标签等字段,使用此值来筛选未指定处理人、需求类型或标签的事项。
CustomFieldIdInteger自定义字段 Id,Key 为 "CUSTOM" 时需设置该值,常规字段无需设置。

IssueListData

参数名称类型描述
ParentTypeString父事项类型
CodeInteger事项 Code
TypeString事项类型
IssueTypeIdInteger事项类型ID
NameString名称
DescriptionString描述
IterationIdInteger迭代 Id
IssueStatusIdInteger事项状态 Id
IssueStatusNameString事项状态名称
IssueStatusTypeString事项状态类型,例如:TODO
PriorityString优先级
"0" - 低
"1" - 中
"2" - 高
"3" - 紧急
"" - 未指定
AssigneeIdInteger处理人 Id
StartDateLong开始日期时间戳
DueDateLong截止日期时间戳
WorkingHoursDouble工时(小时)
CreatorIdInteger创建人 Id
StoryPointString故事点,例如:"0.5"、"0"
空字符串 "" 表示未指定。
CreatedAtLong创建时间
UpdatedAtLong修改时间
CompletedAtLong完成时间
IterationIterationSimple迭代信息
IssueTypeDetailIssueTypeDetail事项类型具体信息

IssueTypeDetail 事项类型具体信息

参数名称类型描述
IdInteger事项类型ID
NameString事项类型名称
IssueTypeString事项类型基础类型,比如:REQUIREMENT、MISSION
DescriptionString类型描述
IsSystemBool是否是系统内置
post/open-api?Action=DescribeIssueListWithPage
状态码 200

Example 1

成功示例

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

成功示例

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

事项关联的测试用例

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeRelatedCaseList
ProjectNameString项目名称
IssueCodeInteger事项标示code

输出参数

参数名称类型描述
CasesArray of Case用例列表。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

Case

参数名称类型描述
IdInteger用例ID
NameString标题
PriorityInteger优先级, 0 => '紧急', 1 => '高', 2 => '中', 3 => '低'
post/open-api?Action=DescribeRelatedCaseList
状态码 200

Example 1

成功示例

OK
1{
2  "Action": "DescribeRelatedCaseList",
3  "ProjectName": "my-demo",
4  "IssueCode": 1
5}

成功示例

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

创建事项评论

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:CreateIssueComment
ProjectNameString项目名称,非 ID、displayname
IssueCodeInteger事项 code
ContentString评论内容
ParentIdInteger如果回复评论传父评论ID

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=CreateIssueComment
状态码 200

Example 1

成功示例

OK
1{
2  "Action": "CreateIssueComment",
3  "ProjectName": "TestProjectDemo",
4  "IssueCode": 1,
5  "Content": "这个要配合测试",
6  "ParentId": 0
7}

修改事项评论

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:ModifyIssueComment
ProjectNameString项目名称,非 ID、displayname
IssueCodeInteger事项 code
ContentString评论内容
CommentIdInteger评论ID

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=ModifyIssueComment
状态码 200

Example 1

成功示例

OK
1{
2  "Action": "CreateIssueComment",
3  "ProjectName": "TestProjectDemo",
4  "IssueCode": 1,
5  "Content": "这个要配合测试",
6  "CommentId": 1
7}

查询事项评论列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssueCommentList
ProjectNameString项目名称,非 ID、displayname
IssueCodeInteger事项 code

输出参数

参数名称类型描述
CommentListArray of IssueComment评论列表

IssueComment

参数名称类型描述
CommentIdInteger评论ID
ParentIdInteger父级评论ID
ContentString渲染的评论内容
RawContentString用户输入的原始评论内容
CreatorIdInteger创建人ID
CreatedAtInteger创建时间戳
UpdatedAtInteger修改时间戳
post/open-api?Action=DescribeIssueCommentList
状态码 200

Example 1

成功示例

OK
1{
2  "Action": "DescribeIssueCommentList",
3  "ProjectName": "DemoProjectName",
4  "IssueCode": 1
5}

成功示例

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

迭代

创建迭代

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:CreateIteration
ProjectNameString项目名称
NameString标题
GoalString目标
AssigneeInteger处理人 ID
StartAtString开始时间,格式:2020-01-01
EndAtString结束时间,格式:2020-01-01

输出参数

参数名称类型描述
IterationIteration迭代的具体信息
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

迭代信息说明

名称类型描述
NameString标题
CodeInteger迭代编号,项目内唯一
GoalString迭代目标
StartAtInteger开始时间,时间戳,-28800000 代表没有设置
EndAtInteger结束时间,时间戳,-28800000 代表没有设置
AssigneeInteger处理人 ID ,为 0 代表没有设置
CreatorInteger创建人 ID
StarterInteger开始人 ID
CompleterInteger完成人 ID
StatusString迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED
WaitProcessCountInteger迭代中待处理事项总数
ProcessingCountInteger迭代中进行中事项总数
CompletedCountInteger迭代中完成事项总数
CompletedPercentFloat迭代中事项完成比率
CreatedAtInteger创建时间
UpdatedAtInteger修改时间
post/open-api?Action=CreateIteration
状态码 200

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}

删除迭代

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DeleteIteration
ProjectNameString项目名称
IterationCodeInteger迭代编号

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DeleteIteration
状态码 200

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}

迭代详情

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIteration
ProjectNameString项目名称
IterationCodeInteger迭代编号

输出参数

参数名称类型描述
IterationIteration迭代的具体信息
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

参数说明

名称类型描述
NameString标题
CodeInteger迭代编号,项目内唯一
GoalString迭代目标
StartAtInteger开始时间,时间戳,-28800000 代表没有设置
EndAtInteger结束时间,时间戳,-28800000 代表没有设置
AssigneeInteger处理人 ID ,为 0 代表没有设置
CreatorInteger创建人 ID
StarterInteger开始人 ID
CompleterInteger完成人 ID
StatusString迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED
WaitProcessCountInteger迭代中待处理事项总数
ProcessingCountInteger迭代中进行中事项总数
CompletedCountInteger迭代中完成事项总数
CompletedPercentFloat迭代中事项完成比率
CreatedAtInteger创建时间
UpdatedAtInteger修改时间
post/open-api?Action=DescribeIteration
状态码 200

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}

迭代列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIterationList
ProjectNameString项目名称
Statusarray of String迭代状态, WAIT_PROCESS,PROCESSING,COMPLETED
Assigneearray of Integer处理人 ID 列表
StartDateString通过开始时间过滤,时间格式:2020-12-12
EndDateString通过结束时间过滤,时间格式:2020-12-12
keywordsString通过关键字搜索
OffsetInteger偏移量,默认 0
LimitInteger每页数量,默认 20

输出参数

参数名称类型描述
DataPage of Iteration迭代的具体信息
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

参数说明

名称类型描述
NameString标题
CodeInteger迭代编号,项目内唯一
GoalString迭代目标
StartAtInteger开始时间,时间戳,-28800000 代表没有设置
EndAtInteger结束时间,时间戳,-28800000 代表没有设置
AssigneeInteger处理人 ID ,为 0 代表没有设置
CreatorInteger创建人 ID
StarterInteger开始人 ID
CompleterInteger完成人 ID
StatusString迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED
WaitProcessCountInteger迭代中待处理事项总数
ProcessingCountInteger迭代中进行中事项总数
CompletedCountInteger迭代中完成事项总数
CompletedPercentFloat迭代中事项完成比率
CreatedAtInteger创建时间
UpdatedAtInteger修改时间
post/open-api?Action=DescribeIterationList
状态码 200

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}

修改迭代

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:ModifyIteration
ProjectNameString项目名称
IterationCodeInteger迭代编号
NameString标题
GoalString目标
AssigneeInteger处理人 ID
StartAtString开始时间,格式:2020-01-01
EndAtString结束时间,格式:2020-01-01

输出参数

参数名称类型描述
IterationIteration迭代的具体信息
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

参数说明

名称类型描述
NameString标题
CodeInteger迭代编号,项目内唯一
GoalString迭代目标
StartAtInteger开始时间,时间戳,-28800000 代表没有设置
EndAtInteger结束时间,时间戳,-28800000 代表没有设置
AssigneeInteger处理人 ID ,为 0 代表没有设置
CreatorInteger创建人 ID
StarterInteger开始人 ID
CompleterInteger完成人 ID
StatusString迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED
WaitProcessCountInteger迭代中待处理事项总数
ProcessingCountInteger迭代中进行中事项总数
CompletedCountInteger迭代中完成事项总数
CompletedPercentFloat迭代中事项完成比率
CreatedAtInteger创建时间
UpdatedAtInteger修改时间
post/open-api?Action=ModifyIteration
状态码 200

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}

批量规划迭代

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:PlanIterationIssue
ProjectNameString项目名称
IterationCodeInteger迭代编号,将事项移出迭代请传 0
IssueCodearray of Integer需要规划的事项编号列表

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=PlanIterationIssue
状态码 200

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}

工时

查询工时日志列表

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssueWorkLogList。
ProjectNameString项目名称
IssueCodeInteger事项 Code

输出参数

参数名称类型描述
WorkLogsArray of IssueWorkLog工时日志列表
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DescribeIssueWorkLogList
状态码 200

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}

登记工时

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:CreateIssueWorkHours。
ProjectNameString项目名称
IssueCodeInteger事项 Code
SpendHourFloat使用工时
RemainingHourFloat剩余工时
StartAtInteger开始时间戳
WorkingDescString工作描述

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=CreateIssueWorkHours
状态码 200

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}

删除工时日志

参数名称必选类型描述
ActionString公共参数,本接口取值:DeleteIssueWorkHours。
ProjectNameString项目名称
IssueCodeInteger事项 Code
WorkHourLogIdInteger工时日志 Id
RollbackRemainingHoursBoolean是否将该工时日志的使用工时归还到剩余工时,默认:false

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DeleteIssueWorkHours
状态码 200

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}

代码托管

创建代码仓库

输入参数

参数名称必选类型描述
ProjectIdInteger项目 id
DepotNameString仓库名称
DescriptionString仓库描述

输出参数

参数名称类型描述
DepotIdInteger仓库 id
post/open-api?Action=CreateGitDepot
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "CreateGitDepot",
3  "ProjectId": 5001,
4  "DepotName": "my-demo",
5  "Description": "啦啦啦啦啦"
6}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "4cc3caaa-ed3d-e610-d274-63694db9e81d",
4    "DepotId": 1001
5  }
6}

获取代码仓库详情

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id

输出参数

参数名称类型描述
DepotDepotInfo仓库详情
post/open-api?Action=DescribeGitDepot
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DescribeGitDepot",
3  "DepotId": 8521598
4}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "92f7ae17-cb38-d8c5-5144-0a76b6a7ee7b",
4    "Depot": {
5      "Id": 8521598,
6      "Name": "demo",
7      "HttpsUrl": "https://e.coding.net/codingcorp/pual_test/demo.git",
8      "ProjectId": 8104562,
9      "SshUrl": "git@e.coding.net:codingcorp/pual_test/demo.git",
10      "WebUrl": "https://codingcorp.coding.net/p/pual_test/d/demo",
11      "VcsType": "git"
12    }
13  }
14}

删除代码仓库

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id
post/open-api?Action=DeleteGitDepot
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DeleteGitDepot",
3  "DepotId": 1759
4}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "4d7694ed-5818-3ea5-4834-a9d74cb2a594"
4  }
5}

修改仓库描述

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id
UserIdInteger用户 id
DescriptionString仓库描述
post/open-api?Action=ModifyDepotDescription
状态码 200

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}

修改仓库名称

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id
UserIdInteger用户 id
DepotNameString新仓库名
post/open-api?Action=ModifyDepotName
状态码 200

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。

参数名称必选类型描述
DepotIdInteger仓库 id
CommitShaString提交的 Sha
NoteStringNotesRef
CommitMessageString提交信息
NotesRefString注释分支 ref。建议默认不填
post/open-api?Action=CreateGitCommitNote
状态码 200

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}

查询项目下仓库信息列表

输入参数

参数名称必选类型描述
ProjectIdInteger项目 id

输出参数

参数名称类型描述
DepotDataDepotData返回信息包

DepotData 参数详情

参数名称类型描述
DepotsDepotInfo仓库信息列表

DepotInfo 参数详情

参数名称类型描述
NameString仓库名称
HttpsUrlStringhttps 的 url 路径
SshUrlStringssh 的 url 路径
IdInteger仓库 id
VcsTypeString仓库类型
post/open-api?Action=DescribeProjectDepotInfoList
状态码 200

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        },
13        {
14          "Name": "depot-2",
15          "HttpsUrl": "https://e.coding.net/demo/demo-project/depot-2.git",
16          "SshUrl": "git@e.coding.net:demo/demo-project/depot-2.git",
17          "Id": 2,
18          "VcsType": "git"
19        },
20        {
21          "Name": "depot-3",
22          "HttpsUrl": "https://e.coding.net/demo/demo-project/depot-3.git",
23          "SshUrl": "git@e.coding.net:demo/demo-project/depot-3.git",
24          "Id": 3,
25          "VcsType": "svn"
26        }
27      ]
28    }
29  }
30}

获取团队下仓库列表

接口描述

获取团队下仓库列表,仅团队所有者或团队管理员可以调用。

输入参数

参数名称必选类型描述
TeamIdInteger团队Id
UserIdInteger用户Id

输出参数

参数名称类型描述
DepotDataDepotData仓库信息详情列表
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=DescribeTeamDepotInfoList
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DescribeTeamDepotInfoList",
3  "TeamId": 1,
4  "UserId": 1
5}

成功示例

上为输入示例 / 下为输出示例
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}

修改仓库默认分支

接口描述

修改仓库默认分支

输入参数

参数名称必选类型描述
DepotIdInteger仓库Id
BranchNameString分支名
UserIdInteger用户Id

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
post/open-api?Action=ModifyDefaultBranch
状态码 200

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}

根据模板创建仓库

输入参数

参数名称必选类型描述
ProjectIdInteger项目Id
DepotNameString仓库名
TemplateString仓库模板。目前支持:Spring, Ruby on Rails,Ruby Sinatra,Node.js,Android,Python。对应模板参数分别为:SPRING,ROR,SINATRA,NODEJS,ANDROID,FLASK。
UserIdInteger用户Id
DescriptionString仓库描述

输出参数

参数名称类型描述
DepotInfoDepotInfo仓库数据
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

仓库信息:

名称类型描述
NameString仓库名称
HttpsUrlString仓库的 https 地址
SshUrlString仓库的 ssh 地址
IdInteger仓库 id
VcsTypeString仓库类型,具体值为 git 或者 svn
WebUrlString仓库 webURL
ProjectIdInteger项目 Id
post/open-api?Action=CreateDepotByTemplate
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "ProjectId": 450,
3  "DepotName": "hexo-demo-2",
4  "Description": "这是一个测试的spring仓库",
5  "Template": "SPRING",
6  "UserId": 1
7}

成功示例

上为输入示例 / 下为输出示例
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}

查询仓库目录下文件和文件夹名字

输入参数

参数名称必选类型描述
DepotIdInteger仓库 Id
RefString分支名
PathString所查询的文件夹

输出参数

参数名称类型描述
ItemsGitTreeItemgit 树对象

GitTreeItem 参数详解

参数名称类型描述
ModeString对象类型 tree:文件夹 file:文件
PathString文件或文件夹路径
NameString文件或文件夹名字
post/open-api?Action= DescribeGitFiles
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DescribeGitFiles",
3  "DepotId": 809883,
4  "Ref": "master",
5  "Path": "src"
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      },
10      {
11        "Mode": "tree",
12        "Path": "src/mm",
13        "Name": "mm"
14      }
15    ]
16  }
17}

数据结构

DepotData

仓库信息列表

名称类型描述
DepotsArray of DepotInfo仓库信息列表

DepotInfo

仓库信息

名称类型描述
NameString仓库名称
HttpsUrlString仓库的https地址
SshUrlString仓库的ssh地址
IdInteger仓库id
VcsTypeString仓库类型,具体值为 git 或者 svn
WebUrlString仓库 webURL
ProjectIdInteger项目Id
post/open-api?Action=datastructure
状态码 200

Example 1

成功示例

提交

获取提交注释

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id
CommitShaString提交的 Sha
NotesRefString注释 分支 Ref

输出参数

参数名称类型描述
CommitNoteString提交注释
post/open-api?Action=DescribeGitCommitNote
状态码 200

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}

查询提交详情

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id
ShaString提交的 Sha 值

输出参数

参数名称类型描述
GitCommitCommit提交详情
post/open-api?Action=DescribeGitCommit
状态码 200

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    }
13  }
14}

查询仓库分支下提交列表

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id
RefString分支名称
PathString查询文件路径
PageNumberInteger分页页码,默认为 1
PageSizeInteger分页页距,默认为 10
StartDateString时间过滤起始点
EndDateString时间过滤到达点

输出参数

参数名称类型描述
CommitsCommit提交详情列表
post/open-api?Action=DescribeGitCommits
状态码 200

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      },
14      {
15        "ShortMessage": "commit 2",
16        "Sha": "41f071ff685389db1d0a796dbd4770dd9c8931f0",
17        "CommitDate": 1602817003000,
18        "Commiter": {
19          "Email": "demo2@coding.com",
20          "Name": "洋葱猴"
21        }
22      }
23    ]
24  }
25}

两次提交之间的提交历史

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id
SourceString源请求 Sha 值,分支名称
TargetString目标请求 Sha 值,分支名称

输出参数

参数名称类型描述
DifferentOfCommitInfoDifferentOfCommitInfo差异信息

参数详解

参数名称类型描述
ShortMessageString提交的消息
ShaString提交的 Sha
CommitDateInteger提交的时间戳,单位毫秒
PathString文件路径
DeletionsInteger删除的行数
InsertionsInteger新增的行数
NameString提交名称
UpdateFileNumInteger修改的文件数
post/open-api?Action=DescribeCommitsBetween2Commit
状态码 200

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        }
15      ],
16      "DifferentOfCommits": [
17        {
18          "Path": "dada",
19          "Deletions": 0,
20          "Insertions": 1,
21          "Name": "dada"
22        }
23      ],
24      "Deletions": 0,
25      "Insertions": 1,
26      "UpdateFileNum": 1
27    }
28  }
29}

两次提交之间的文件差异

输入参数

参数名称必选类型描述
DepotIdInteger仓库 id
SourceString源请求 Sha 值,分支名称
TargetString目标请求 Sha 值,分支名称
PathString文件位置

输出参数

参数名称类型描述
DiffFileInfoDiffFileInfo文件差异信息

参数详解

参数名称类型描述
IndexInteger排序号,由小到大递增
LeftNoInteger操作起始行号
PrefixInteger操作方式:"+"表示新增,"-"表示删除," "表示不变
RightNoInteger操作结束行号
TextString文本
DeletionsInteger总删除行数
InsertionsInteger总新增行数
post/open-api?Action=DescribeDifferentBetween2Commits
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{