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

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

若提示错误,请在 -H 参数前添加 --header 'Content-Type: application/json' 参数。

新版接口认证方式

新版接口不再使用 RESTFul,而使用 POST 和统一链接。

统一链接:https://e.coding.net/open-api

Accept: application/json

OAuth2:Authorization: Bearer at58a21646f43699196c42a30d77at

个人令牌:

Authorization: token f5d7a1e1dabb116335b648c5fd9a1c868e4f31d3

输入示例:

{
    "Action":"DescribeOneProject",
    "ProjectId":2
}    

输出示例:

{
  "Response": {
    "Project": {
      "Name": "coding-demo",
      "Id": 2,
    },
    "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
  }
}

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
RoleIdInteger用户组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用户状态

Role

用户组

名称类型描述
RoleIdInteger用户组Id
RoleTypeString用户组类型
RoleTypeNameString用户组类型名称
post/open-api?Action=DescribeProjectMembers
状态码 200

Example 1

成功示例

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

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "de0438d0-1e5e-098f-872a-c96863ed3510",
4    "Data": {
5      "PageNumber": 1,
6      "PageSize": 1,
7      "TotalCount": 6,
8      "ProjectMembers": [
9        {
10          "Id": 6,
11          "TeamId": 1,
12          "Name": "blockuser",
13          "NamePinYin": "blockuser",
14          "Avatar": "http://e.coding.net/static/fruit_avatar/Fruit-4.png",
15          "Email": "blockuser@gmail.com",
16          "Phone": "13800138006",
17          "EmailValidation": 1,
18          "PhoneValidation": 1,
19          "Status": -1,
20          "GlobalKey": "GK",
21          "Roles": [
22            {
23              "RoleType": "ProjectMember",
24              "RoleId": 1,
25              "RoleTypeName": "开发"
26            }
27          ]
28        }
29      ]
30    }
31  }
32}

查询项目根据项目名称

输入参数

参数名称必选类型描述
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公共参数,本接口取值:DescribeProjectRoles。
ProjectIdInteger项目Id

输出参数

参数名称类型描述
RolesArray of [Role]用户组
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

Role

用户组

名称类型描述
RoleIdInteger用户组Id
RoleTypeString用户组类型
RoleTypeNameString用户组类型名称
post/open-api?Action=DescribeProjectRoles
状态码 200

Example 1

成功示例

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

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "de0438d0-1e5e-098f-872a-c96863ed3510",
4    "Roles": [
5      {
6        "RoleType": "ProjectMember",
7        "RoleId": 1,
8        "RoleTypeName": "开发"
9      }
10    ]
11  }
12}

需求

查询需求关联事项列表

输入参数

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

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

输出参数

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

Example 1

成功示例

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

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "Issues": [
4      {
5        "Code": 27,
6        "Type": "REQUIREMENT",
7        "Name": "xxx",
8        "IssueStatusId": 4,
9        "IssueStatusName": "未开始",
10        "IssueStatusType": "TODO",
11        "Priority": "3",
12        "Assignee": {
13          "Status": 1,
14          "Name": "xxx",
15          "Id": 1,
16          "Phone": "111",
17          "TeamId": 1,
18          "GlobalKey": "coding",
19          "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20          "Email": "coding.com",
21          "TeamGlobalKey": "coding"
22        }
23      },
24      {
25        "Code": 25,
26        "Type": "REQUIREMENT",
27        "Name": "xxx",
28        "IssueStatusId": 4,
29        "IssueStatusName": "未开始",
30        "IssueStatusType": "TODO",
31        "Priority": "3",
32        "Assignee": {
33          "Status": 1,
34          "Name": "xxx",
35          "Id": 1,
36          "Phone": "111",
37          "TeamId": 1,
38          "GlobalKey": "coding",
39          "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40          "Email": "coding.com",
41          "TeamGlobalKey": "coding"
42        }
43      }
44    ],
45    "RequestId": "1"
46  }
47}

修改缺陷所属的需求

输入参数

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

参数名称必选类型描述
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 - 缺陷
STORY - 用户故事
REQUIREMENT - 需求
MISSION - 任务
EPIC - 史诗
SUB_TASK - 子工作项
RISK - 风险
WORK_ITEM - 工作项(项目集使用)
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 时,忽略该值
ReleaseCodesArray of Integer版本 Code 列表
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子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList)
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      "Id": 34929409,
14      "Content": "1,2,3(多选字段)"
15    }
16  ]
17}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "c2e8cdce-9d9f-be99-e209-3dae07b690ac",
4    "Issue": {
5      "ParentType": "REQUIREMENT",
6      "Code": 27,
7      "Type": "REQUIREMENT",
8      "Name": "test-20200826-1",
9      "Description": "",
10      "IterationId": 0,
11      "IssueStatusId": 4,
12      "IssueStatusName": "未开始",
13      "IssueStatusType": "TODO",
14      "Priority": "0",
15      "Assignee": {
16        "Id": 0,
17        "Status": 0,
18        "GlobalKey": "",
19        "Avatar": "",
20        "Media": "",
21        "Name": "",
22        "Email": ""
23      },
24      "StartDate": 0,
25      "DueDate": 0,
26      "WorkingHours": 0,
27      "Creator": {
28        "Id": 1,
29        "Status": 2,
30        "GlobalKey": "coding",
31        "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
32        "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
33        "Name": "coding",
34        "Email": ""
35      },
36      "StoryPoint": "",
37      "CreatedAt": 1598843625826,
38      "UpdatedAt": 1598843625826,
39      "CompletedAt": 0,
40      "ProjectModule": {
41        "Id": 0,
42        "Name": ""
43      },
44      "Watchers": [
45        {
46          "Id": 1,
47          "Status": 2,
48          "GlobalKey": "coding",
49          "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
50          "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
51          "Name": "coding",
52          "Email": ""
53        }
54      ],
55      "Labels": [],
56      "Files": [],
57      "RequirementType": {
58        "Id": 0,
59        "Name": ""
60      },
61      "DefectType": {
62        "Id": 0,
63        "Name": "",
64        "IconUrl": ""
65      },
66      "CustomFields": [],
67      "ThirdLinks": [],
68      "SubTasks": [],
69      "Parent": {
70        "Code": 0,
71        "Type": "",
72        "Name": "",
73        "IssueStatusId": 0,
74        "IssueStatusName": "",
75        "Priority": "",
76        "Assignee": {
77          "Id": 0,
78          "Status": 0,
79          "GlobalKey": "",
80          "Avatar": "",
81          "Media": "",
82          "Name": "",
83          "Email": ""
84        }
85      },
86      "Epic": {
87        "Code": 0,
88        "Type": "",
89        "Name": "",
90        "IssueStatusId": 0,
91        "IssueStatusName": "",
92        "Priority": "",
93        "Assignee": {
94          "Id": 0,
95          "Status": 0,
96          "GlobalKey": "",
97          "Avatar": "",
98          "Media": "",
99          "Name": "",
100          "Email": ""
101        }
102      },
103      "IssueTypeDetail": {
104        "Id": 1,
105        "Name": "用户故事",
106        "IssueType": "REQUIREMENT",
107        "Description": "",
108        "IsSystem": false
109      }
110    }
111  }
112}

删除事项

输入参数

参数名称必选类型描述
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子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList)
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项目名称
IssueTypeIdInteger事项类型ID(IssueTypeId 和 IssueType 必须提供一个 )
IssueTypeString事项类型,没有设置 IssueTypeId 参数则查询默认该默认类型
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项目名称
IssueTypeIdInteger事项类型ID(IssueTypeId 和 IssueType 必须设置一个)
IssueTypeString事项类型,如果未设置 IssueTypeId 则查询默认类型
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开始日期
ProgressDouble进度,示例:10 代表 10%
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子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList)
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公共参数,本接口取值:ModifyIssueDescription
ProjectNameString项目名称
IssueCodeInteger事项 Code
DescriptionString事项描述,支持 MD 语法
post/open-api?Action=ModifyIssueDescription
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "ModifyIssueDescription",
3  "ProjectName": "shashajingdianxiangmu2",
4  "Description": "**description**",
5  "IssueCode": 17
6}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "15c9d55a-79b3-4a72-1f31-f101ae9c0ddf",
4    "IssueDescription": {
5      "Description": "<p><strong>this description</strong></p>"
6    }
7  }
8}

查询后置事项

输入参数

参数名称必选类型描述
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  "Action": "DescribeSubIssueList",
3  "ProjectName": "project-demo",
4  "IssueCode": 1
5}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "SubIssueList": [
4      {
5        "ParentType": "REQUIREMENT",
6        "Code": 27,
7        "Type": "REQUIREMENT",
8        "Name": "xxx",
9        "Description": "",
10        "IterationId": 0,
11        "IssueStatusId": 4,
12        "IssueStatusName": "未开始",
13        "IssueStatusType": "TODO",
14        "Priority": "3",
15        "AssigneeId": 0,
16        "StartDate": 0,
17        "DueDate": 0,
18        "WorkingHours": 0,
19        "CreatorId": 1,
20        "StoryPoint": "0.5",
21        "CreatedAt": 1598843625000,
22        "UpdatedAt": 1598922564000,
23        "CompletedAt": 0
24      },
25      {
26        "ParentType": "REQUIREMENT",
27        "Code": 25,
28        "Type": "REQUIREMENT",
29        "Name": "xxx",
30        "Description": "",
31        "IterationId": 0,
32        "IssueStatusId": 4,
33        "IssueStatusName": "未开始",
34        "IssueStatusType": "TODO",
35        "Priority": "3",
36        "AssigneeId": 0,
37        "StartDate": 0,
38        "DueDate": 0,
39        "WorkingHours": 0,
40        "CreatorId": 1,
41        "StoryPoint": "2.0",
42        "CreatedAt": 1598517062000,
43        "UpdatedAt": 1598851550000,
44        "CompletedAt": 0
45      }
46    ],
47    "RequestId": "1"
48  }
49}

删除前置事项

输入参数

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

参数名称必选类型描述
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 ,最大值 500
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 - 正序
ShowSubIssuesBoolean是否显示子事项,对应页面上平铺视图“显示子事项”开关,取值 true 或者 false,不填为 false。true 表示显示,false 表示不显示
ExcludeSubTaskBoolean是否排除子工作项(subtask),只有当 ShowSubIssues=true 时这个参数才有效,取值 true 或者 false,不填为 false。true 表示排除子工作项,false 表示不排除

输出参数

参数名称类型描述
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公共参数,本接口取值:DescribeIssueStatusChangeLogList
ProjectNameString项目名称
IssueCodeArray of Integer事项 code,支持多选

输出参数

参数名称类型描述
Logslist of Log具体的变更日志
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

Log

Log 的具体信息

名称类型描述
IssueCodeInteger事项 code
StatusIdInteger状态对象 ID
StatusNameString状态名称(当时的名称快照)
CreatedAtString生成时间 (流转到改状态的时间)
IssueStatus.IdInteger状态对象 ID
IssueStatus.NameString状态对象名称(最新)
IssueStatus.TypeString状态类型,TODO、PROCESSING、COMPLETE
IssueStatus.IsSystemBool是否是系统状态
post/open-api?Action=DescribeIssueStatusChangeLogList
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DescribeIssueStatusChangeLogList",
3  "ProjectName": "my-demo",
4  "IssueCode": [
5    380,
6    2
7  ]
8}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "570322d0-b7bf-28d6-ca17-f8ab645da",
4    "Logs": {
5      "List": [
6        {
7          "IssueCode": 380,
8          "StatusId": 244,
9          "IssueStatus": {
10            "Id": 244,
11            "Index": 6,
12            "Name": "未评估",
13            "Type": "TODO",
14            "Description": "",
15            "IsSystem": true,
16            "CreatedAt": 1551937083000,
17            "UpdatedAt": 1551937083000
18          },
19          "StatusName": "未评估",
20          "CreatedAt": 1617095165000
21        },
22        {
23          "IssueCode": 380,
24          "StatusId": 10537,
25          "IssueStatus": {
26            "Id": 10537,
27            "Index": 14,
28            "Name": "已评估",
29            "Type": "TODO",
30            "Description": "",
31            "IsSystem": false,
32            "CreatedAt": 1555661502000,
33            "UpdatedAt": 1555661502000
34          },
35          "StatusName": "已评估",
36          "CreatedAt": 1621406657000
37        },
38        {
39          "IssueCode": 380,
40          "StatusId": 244,
41          "IssueStatus": {
42            "Id": 244,
43            "Index": 6,
44            "Name": "未评估",
45            "Type": "TODO",
46            "Description": "",
47            "IsSystem": true,
48            "CreatedAt": 1551937083000,
49            "UpdatedAt": 1551937083000
50          },
51          "StatusName": "未评估",
52          "CreatedAt": 1621411647000
53        }
54      ]
55    }
56  }
57}

获取工作台个人代办事项

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeWorkbenchIssueList
ProjectIdInteger项目id,不填或者填0则查询团队内参与的所有项目
TypeString事项类型,取值如“REQUIREMENT”、“DEFECT”等
KeywordString关键字
PageNumberInteger分页查询的分页数,不填的话从第一页开始查询
PageSizeInteger每页展示数,默认 20 ,最大值 500

输出参数

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

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DescribeWorkbenchIssueList",
3  "ProjectId": 0,
4  "Type": "DEFECT",
5  "Keyword": "",
6  "PageNumber": 1,
7  "PageSize": 200
8}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "80610858-c4a3-4028-ad52-9b051e23e37c",
4    "Data": {
5      "PageNumber": 1,
6      "PageSize": 200,
7      "TotalPage": 1,
8      "TotalCount": 2,
9      "IssueList": [
10        {
11          "Code": 10,
12          "Type": "DEFECT",
13          "IssueType": {
14            "Id": 5,
15            "Name": "缺陷",
16            "IssueType": "DEFECT",
17            "Description": "",
18            "IsSystem": false
19          },
20          "Name": "缺陷1",
21          "ParentCode": 0,
22          "Description": false,
23          "Priority": "1",
24          "DueDate": 253370736000000,
25          "ProjectId": 3,
26          "ParentIssue": {
27            "Code": 0,
28            "Type": "",
29            "Name": "",
30            "IssueStatusId": 0,
31            "IssueStatusName": "",
32            "Priority": "",
33            "Assignee": {
34              "Id": 0,
35              "Status": 0,
36              "Avatar": "",
37              "Name": "",
38              "Email": "",
39              "TeamId": 0,
40              "Phone": "",
41              "GlobalKey": "",
42              "TeamGlobalKey": ""
43            },
44            "IssueStatusType": "",
45            "IssueTypeDetail": {
46              "Id": 0,
47              "Name": "",
48              "IssueType": "",
49              "Description": "",
50              "IsSystem": false
51            }
52          },
53          "Project": {
54            "Id": 3,
55            "CreatedAt": 0,
56            "UpdatedAt": 0,
57            "Status": 0,
58            "Type": 0,
59            "MaxMember": 0,
60            "Name": "xjx-classic",
61            "DisplayName": "经典项目",
62            "Description": "",
63            "Icon": "/static/project_icon/scenery-version-2-3.svg",
64            "TeamOwnerId": 0,
65            "UserOwnerId": 0,
66            "StartDate": 0,
67            "EndDate": 0,
68            "TeamId": 0,
69            "IsDemo": false,
70            "Archived": false,
71            "ProgramIds": []
72          },
73          "IssueStatus": {
74            "Id": 1,
75            "Index": 0,
76            "Name": "待处理",
77            "Type": "TODO",
78            "Description": "",
79            "IsSystem": false,
80            "CreatedAt": 0,
81            "UpdatedAt": 0
82          },
83          "Epic": {
84            "Code": 0,
85            "Type": "",
86            "Name": "",
87            "IssueStatusId": 0,
88            "IssueStatusName": "",
89            "Priority": "",
90            "Assignee": {
91              "Id": 0,
92              "Status": 0,
93              "Avatar": "",
94              "Name": "",
95              "Email": "",
96              "TeamId": 0,
97              "Phone": "",
98              "GlobalKey": "",
99              "TeamGlobalKey": ""
100            }
101          },
102          "SubTasks": [],
103          "Assignee": {
104            "Id": 2,
105            "Status": 1,
106            "Avatar": "/static/fruit_avatar/Fruit-20.png",
107            "Name": "coding",
108            "Email": "",
109            "TeamId": 0,
110            "Phone": "",
111            "GlobalKey": "coding-coding",
112            "TeamGlobalKey": ""
113          },
114          "ChildCount": 0,
115          "ChildCompletedCount": 0,
116          "Creator": {
117            "Id": 0,
118            "Status": 0,
119            "Avatar": "",
120            "Name": "",
121            "Email": "",
122            "TeamId": 0,
123            "Phone": "",
124            "GlobalKey": "",
125            "TeamGlobalKey": ""
126          },
127          "CreatedAt": 1675151965000,
128          "UpdatedAt": 1675151972000,
129          "Iteration": {
130            "Code": 0,
131            "Name": "",
132            "Status": "",
133            "Id": 0
134          }
135        },
136        {
137          "Code": 3,
138          "Type": "DEFECT",
139          "IssueType": {
140            "Id": 5,
141            "Name": "缺陷",
142            "IssueType": "DEFECT",
143            "Description": "",
144            "IsSystem": false
145          },
146          "Name": "缺陷2",
147          "ParentCode": 0,
148          "Description": false,
149          "Priority": "1",
150          "DueDate": 253370736000000,
151          "ProjectId": 3,
152          "ParentIssue": {
153            "Code": 0,
154            "Type": "",
155            "Name": "",
156            "IssueStatusId": 0,
157            "IssueStatusName": "",
158            "Priority": "",
159            "Assignee": {
160              "Id": 0,
161              "Status": 0,
162              "Avatar": "",
163              "Name": "",
164              "Email": "",
165              "TeamId": 0,
166              "Phone": "",
167              "GlobalKey": "",
168              "TeamGlobalKey": ""
169            },
170            "IssueStatusType": "",
171            "IssueTypeDetail": {
172              "Id": 0,
173              "Name": "",
174              "IssueType": "",
175              "Description": "",
176              "IsSystem": false
177            }
178          },
179          "Project": {
180            "Id": 3,
181            "CreatedAt": 0,
182            "UpdatedAt": 0,
183            "Status": 0,
184            "Type": 0,
185            "MaxMember": 0,
186            "Name": "xjx-classic",
187            "DisplayName": "经典项目",
188            "Description": "",
189            "Icon": "/static/project_icon/scenery-version-2-3.svg",
190            "TeamOwnerId": 0,
191            "UserOwnerId": 0,
192            "StartDate": 0,
193            "EndDate": 0,
194            "TeamId": 0,
195            "IsDemo": false,
196            "Archived": false,
197            "ProgramIds": []
198          },
199          "IssueStatus": {
200            "Id": 1,
201            "Index": 0,
202            "Name": "待处理",
203            "Type": "TODO",
204            "Description": "",
205            "IsSystem": false,
206            "CreatedAt": 0,
207            "UpdatedAt": 0
208          },
209          "Epic": {
210            "Code": 0,
211            "Type": "",
212            "Name": "",
213            "IssueStatusId": 0,
214            "IssueStatusName": "",
215            "Priority": "",
216            "Assignee": {
217              "Id": 0,
218              "Status": 0,
219              "Avatar": "",
220              "Name": "",
221              "Email": "",
222              "TeamId": 0,
223              "Phone": "",
224              "GlobalKey": "",
225              "TeamGlobalKey": ""
226            }
227          },
228          "SubTasks": [],
229          "Assignee": {
230            "Id": 2,
231            "Status": 1,
232            "Avatar": "/static/fruit_avatar/Fruit-20.png",
233            "Name": "coding",
234            "Email": "",
235            "TeamId": 0,
236            "Phone": "",
237            "GlobalKey": "coding-coding",
238            "TeamGlobalKey": ""
239          },
240          "ChildCount": 0,
241          "ChildCompletedCount": 0,
242          "Creator": {
243            "Id": 0,
244            "Status": 0,
245            "Avatar": "",
246            "Name": "",
247            "Email": "",
248            "TeamId": 0,
249            "Phone": "",
250            "GlobalKey": "",
251            "TeamGlobalKey": ""
252          },
253          "CreatedAt": 1673609695000,
254          "UpdatedAt": 1675151976000,
255          "Iteration": {
256            "Code": 0,
257            "Name": "",
258            "Status": "",
259            "Id": 0
260          }
261        }
262      ]
263    }
264  }
265}

获取事项活动日志

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssueLogList
ProjectNameString项目名称
IssueCodeInteger事项 code,即页面上看到的事项ID
ActionTypeString动作类型,取值包括如下:
ADD
CHANGE_PARENT
CREATE
DELETE
REMOVE
UPDATE
要获取更新处理人的日志,用UPDATE+ASSIGNEE,要获取更新迭代的日志,用UPDATE+ITERATION,要获取创建事项的日志,用CREATE+SELF,以此类推。
TargetString操作对象,取值包括如下:
ASSIGNEE // 处理人
ATTACHMENT // 附件
CHILD_ISSUE // 子事项
CUSTOM_FIELD // 自定义属性
DEFECT_TYPE //缺陷类型
DESCRIPTION //描述
DUE_DATE //截止日期
EPIC_ISSUE //所属史诗
ISSUE_EPIC_CHANGED
ISSUE_PROGRAM_RELATION
ISSUE_RELATION
ITERATION //迭代
LABEL //标签
MODULE //模块
NAME //名字
PARENT_ISSUE //父事项
PRIORITY //优先级
PROGRESS //进度
RELATE_DEFECT
RELATE_REQUIREMENT
REQUIREMENT_TYPE
RESOURCE
SELF
START_DATE
STATUS //状态
STORY_POINT //故事点
THIRD_LINK //第三方链接
WATCHER //关注人
WORKING_HOURS //工时

输出参数

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

IssueLog

参数名称类型描述
IssueIdInteger事项id(不是页面上的ID,是数据库中的唯一ID)
ActionTypeString动作类型(和输入一致)
TargetString操作对象(和输入一致)
TargetNameString操作对象名
ContentJSON字符串内容,为转义后的JSON字符串
CreateAtInteger创建时间戳
UpdatedAtInteger更新时间戳
CreatorInteger创建人ID
post/open-api?Action=DescribeIssueLogList
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DescribeIssueLogList",
3  "ProjectName": "test",
4  "IssueCode": 1,
5  "ActionType": "UPDATE",
6  "Target": "ASSIGNEE"
7}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "98262208-e56f-4f8f-a336-177d85c466a0",
4    "issueLogList": [
5      {
6        "IssueId": 104,
7        "ActionType": "UPDATE",
8        "Target": "ASSIGNEE",
9        "TargetName": "处理人",
10        "Content": "{\"id\":0,\"global_key\":\"\",\"avatar\":\"\",\"name\":\"无\"}",
11        "CreateAt": 1675152576000,
12        "UpdatedAt": 1675152576000,
13        "Creator": 2
14      },
15      {
16        "IssueId": 104,
17        "ActionType": "UPDATE",
18        "Target": "ASSIGNEE",
19        "TargetName": "处理人",
20        "Content": "{\"id\":2,\"global_key\":\"coding-coding\",\"avatar\":\"/static/fruit_avatar/Fruit-20.png\",\"name\":\"coding\"}",
21        "CreateAt": 1675152572000,
22        "UpdatedAt": 1675152572000,
23        "Creator": 2
24      }
25    ]
26  }
27}

获取自定义属性变更历史

输入参数

参数名称必选类型描述
ActionString公共参数,本接口取值:DescribeIssueCustomFieldLogList
ProjectNameString项目名称
IssueCodeString事项 code,即页面上看到的事项ID
FieldNameString自定义属性名(和页面上看到的一样)

输出参数

参数名称类型描述
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
FieldChangeLogListList of CustomFieldChangeLog自定义属性日志列表。

CustomFieldChangeLog

参数名称类型描述
IssueIdInteger事项id(不是页面上的ID,是数据库中的唯一ID)
ActionTypeString动作类型
FieldTypeString自定义属性类型
FieldNameString自定义属性名字
FieldIdInteger自定义属性ID
FieldValueString自定义属性的值
UpdatedAtInteger更新时间戳
CreatorInteger创建人ID
post/open-api?Action=DescribeIssueCustomFieldLogList
状态码 200

Example 1

成功示例

上为输入示例 / 下为输出示例
1{
2  "Action": "DescribeIssueCustomFieldLogList",
3  "ProjectName": "xjx-agile-2",
4  "IssueCode": 12,
5  "FieldName": "小数1"
6}

成功示例

上为输入示例 / 下为输出示例
1{
2  "Response": {
3    "RequestId": "6a079ad4-1013-4e0b-849c-41ee1b1529d1",
4    "FieldChangeLogList": [
5      {
6        "IssueId": 85,
7        "ActionType": "UPDATE",
8        "FieldType": "TEXT_DECIMAL",
9        "FieldName": "小数1",
10        "FieldId": 208,
11        "FieldValue": "无",
12        "UpdatedAt": 1675152868000,
13        "Creator": 2
14      },
15      {
16        "IssueId": 85,
17        "ActionType": "UPDATE",
18        "FieldType": "TEXT_DECIMAL",
19        "FieldName": "小数1",
20        "FieldId": 208,
21        "FieldValue": "2",
22        "UpdatedAt": 1675152863000,
23        "Creator": 2
24      },
25      {
26        "IssueId": 85,
27        "ActionType": "UPDATE",
28        "FieldType": "TEXT_DECIMAL",
29        "FieldName": "小数1",
30        "FieldId": 88,
31        "FieldValue": "10",
32        "UpdatedAt": 1673773878000,
33        "Creator": 2
34      }
35    ]
36  }
37}

迭代

创建迭代

输入参数

参数名称必选类型描述
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}