CODING OPEN API
基础路径
API BASE URL
- https://{your-team}.coding.net
CODING 提供了丰富的 API 接口,注册应用即可使用,无需审核,支持两种认证方式:OAuth 2.0 协议、个人访问令牌。
OAuth 认证
创建 CODING 应用
- 点击【个人设置】->【开放生态】->【创建应用】,填写信息。「回调地址」可填写为
http://127.0.0.1
,便于本地开发。
- 创建完成会获得 Client ID 和 Client Secret。
用户授权
浏览器访问以下链接,进入到授权登录页面:
GET https://{your-team}.coding.net/oauth_authorize.html
参数说明:
- your-team:团队域名前缀;
- client_id:应用详情页的 Client ID;
- redirect_uri:应用详情页填写的回调地址;
- response_type:返回类型,固定为 code;
- scope:授权范围,以逗号分隔,包括:
scope 名称 | 授权 | 说明 |
---|---|---|
user | 读 | 获取用户信息(名称、头像等 ) |
user:email | 读 | 读取用户的 email |
notification | 读/写 | 读取用户通知信息 |
project | 读 | 授权项目信息、项目列表,仓库信息,公钥列表、成员 |
project:api_doc | 发布 | 授权发布 API 文档 |
project:artifacts | 读/写 | 授权推送、拉取制品库 |
project:depot | 读/写 | 完整的仓库控制权限 |
project:file | 读/写 | 授权读取与操作文件 |
project:issue | 读/写 | 授权读取与操作项目协同模块 |
project:key | 读/写 | 授权读取与操作部署公钥和个人公钥 |
project:members | 读/写 | 授权项目管理者读取与操作成员 |
project:notice | 读/写 | 授权发布、删除、查询项目公告接口 |
登录授权后,浏览器将带着授权码(code)参数跳转到回调地址,如:
http://127.0.0.1:9002/api/oauth/callback?code=7923f69445119400c12e1a70b027a97a
获取 access_token
获取授权码(code)后,开发者的后端程序向 CODING 发送请求,获取 access_token。
请求链接:
POST https://{your-team}.coding.net/api/oauth/access_token
参数说明:
- your-team:团队域名前缀;
- client_id:应用详情页的 Client ID;
- client_secret:应用详情页的 Client Secret;
- code:上一步获取的授权码;
- grant_type:授权类型,固定为 authorization_code;
返回值:
{
"access_token": "8883405e6c14856a1e2b3c4e2d2f2666",
"refresh_token": "6663211fda1a41f5a1c1fa320d819aaa",
"team": "anywhere",
"expires_in": "780260",
"token_type":"bearer"
}
获取当前用户信息
请求链接:
GET https://{your-team}.coding.net/api/me
参数说明:
- access_token:上一步获取的 access_token;
请求示例:
curl https://codes-farm.coding.net/api/me?access_token=at58a21646f43699196c42a30d77at
返回值:
{
"avatar": "https://coding-net-production-static-ci.codehub.cn/2cb665a3-bebc-4b09-aa00-2b6df3e33edc.jpg",
"created_at": 1572178118000,
"global_key": "KMRnIKgzbV",
"name": "sink",
"name_pinyin": "sink",
"updated_at": 1598411867000,
"path": "/u/KMRnIKgzbV",
"id": 183478,
"team": "anywhere",
"email_validation": 1
}
个人令牌认证
获取个人令牌
点击右上角的【个人设置】>【访问令牌】>【新建令牌】,勾选相关权限后会生成「个人访问令牌」。若刷新页面令牌会消失,需输入账号密码后重新生成。
获取当前用户信息
请求链接:
GET https://{your-team}.coding.net/api/me
header:
Authorization: token {访问令牌}
请求示例:
curl -H 'Authorization: token t0544956253e82fa2ba780a5248750t' \
https://codes-farm.coding.net/api/me
若提示错误,请在
-H
参数前添加--header 'Content-Type: application/json'
参数。
新版接口认证方式
新版接口不再使用 RESTFul,而使用 POST 和统一链接。
统一链接:https://e.coding.net/open-api
Accept: application/json
OAuth2:Authorization: Bearer at58a21646f43699196c42a30d77at
个人令牌:
Authorization: token f5d7a1e1dabb116335b648c5fd9a1c868e4f31d3
输入示例:
{
"Action":"DescribeOneProject",
"ProjectId":2
}
输出示例:
{
"Response": {
"Project": {
"Name": "coding-demo",
"Id": 2,
},
"RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
}
}
查询团队内所有项目列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingProjects。 |
PageNumber | 是 | Integer | 页数 |
PageSize | 是 | Integer | 每页条数 |
ProjectName | 否 | String | 项目名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Data | ProjectsData | 项目列表数据 |
ProjectsData
名称 | 类型 | 描述 |
---|---|---|
PageNumber | Integer | 第几页 |
PageSize | Integer | 每页条数 |
TotalCount | Integer | 总条数 |
ProjectList | Array of Project | 项目集合 |
Project
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 项目 ID |
CreatedAt | Integer | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | Integer | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
Status | Integer | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Type | Integer | 类型 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
DisplayName | String | 显示名称 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
Icon | String | 图标 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IsDemo | Boolean | 是否为模板项目 注意:此字段可能返回 null,表示取不到有效值。 |
MaxMember | Integer | 最大团员数 注意:此字段可能返回 null,表示取不到有效值。 |
UserOwnerId | Integer | 个人所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Archived | Boolean | 是否压缩 注意:此字段可能返回 null,表示取不到有效值。 |
StartDate | Integer | 项目开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
TeamOwnerId | Integer | 团队所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
EndDate | Integer | 项目结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingProjects",
3 "ProjectName": "coding",
4 "PageNumber": 1,
5 "PageSize": 10
6}
成功示例
1{
2 "Response": {
3 "RequestId": "f41034cf-169d-4373-0514-334885a6a9db",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 1,
7 "TotalCount": 1,
8 "ProjectList": [
9 {
10 "Id": 1,
11 "CreatedAt": 1619580482000,
12 "UpdatedAt": 1619580482000,
13 "Status": 1,
14 "Type": 2,
15 "MaxMember": 0,
16 "Name": "empty",
17 "DisplayName": "empty",
18 "Description": "",
19 "Icon": "https://e.coding.net/static/project_icon/scenery-version-2-4.svg",
20 "TeamOwnerId": 1,
21 "UserOwnerId": 0,
22 "StartDate": 0,
23 "EndDate": 0,
24 "TeamId": 1,
25 "IsDemo": false,
26 "Archived": false
27 }
28 ]
29 }
30 }
31}
查询团队成员列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTeamMembers。 |
PageNumber | 是 | Integer | 请求页数 |
PageSize | 是 | Integer | 请求条数 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [TeamMemberData] | 团队成员分页列表信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
TeamMemberData
团队成员分页信息
名称 | 类型 | 描述 |
---|---|---|
PageNumber | Integer | 第几页 |
PageSize | Integer | 每页条数 |
TotalCount | Integer | 总条数 |
TeamMembers | Array of [UserData] | 成员列表信息 |
UserData
用户成员信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户Id |
TeamId | Integer | 团队Id |
Name | String | 用户名 |
NamePinYin | String | 用户名拼音 |
Avatar | String | 头像 |
String | 邮箱 | |
Phone | String | 手机号 |
EmailValidation | Integer | 邮箱是否验证 0 否 /1 是 |
PhoneValidation | Integer | 手机是否验证 0 否 /1 是 |
Status | Integer | 用户状态 |
Example 1
成功示例
1{
2 "Action": "DescribeTeamMembers",
3 "PageNumber": 1,
4 "PageSize": 10
5}
成功示例
1{
2 "Response": {
3 "RequestId": "de0438d0-1e5e-098f-872a-c96863ed3510",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 1,
7 "TotalCount": 6,
8 "TeamMembers": [
9 {
10 "Id": 6,
11 "TeamId": 1,
12 "Name": "blockuser",
13 "NamePinYin": "blockuser",
14 "Avatar": "http://e.coding.net/static/fruit_avatar/Fruit-4.png",
15 "Email": "blockuser@gmail.com",
16 "Phone": "13800138006",
17 "EmailValidation": 1,
18 "PhoneValidation": 1,
19 "Status": -1
20 }
21 ]
22 }
23 }
24}
创建项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateCodingProject |
Name | 是 | String | 项目标识 |
DisplayName | 是 | String | 项目名称 |
GitReadmeEnabled | 否 | Boolean | 启用 README.md 文件初始化项目 true|false |
VcsType | 否 | String | git|svn|hg |
CreateSvnLayout | 否 | Boolean | 是否创建 SVN 仓库推荐布局 默认 false |
Shared | 是 | Integer | 0: 不公开 1:公开源代码 |
ProjectTemplate | 是 | String | 项目模版 CODE_HOST 代码托管项目, PROJECT_MANAGE 项目管理项目, DEV_OPS DevOps 项目, DEMO_BEGIN 范例项目 |
Description | 否 | String | 项目描述 |
Icon | 否 | String | 项目图标 |
GitIgnore | 否 | String | git ignore 文件类型 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProjectId | Integer | 项目 Id |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateCodingProject",
3 "Name": "project",
4 "DisplayName": "project",
5 "Description": "project",
6 "GitReadmeEnabled": true,
7 "VcsType": "git",
8 "CreateSvnLayout": false,
9 "Shared": 1,
10 "ProjectTemplate": "DEV_OPS"
11}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a",
4 "ProjectId": 1
5 }
6}
编辑项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyProject |
ProjectId | 是 | Integer | 项目 id |
Name | 是 | String | 项目标识 |
DisplayName | 是 | String | 项目名称 |
Description | 否 | String | 项目描述 |
StartDate | 否 | String | 开始时间 |
EndDate | 否 | String | 结束时间 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyProject",
3 "ProjectId": 1,
4 "Name": "project",
5 "DisplayName": "project",
6 "Description": "project",
7 "StartDate": "2020-01-01",
8 "EndDate": "2020-01-02"
9}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
删除项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteOneProject |
ProjectId | 是 | Integer | 项目 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteOneProject",
3 "ProjectId": 2
4}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
查询项目
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeOneProject |
ProjectId | 是 | Integer | 项目 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Project | Project | 项目信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
项目信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 项目 ID |
CreatedAt | Integer | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | Integer | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
Status | Integer | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Type | Integer | 类型 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
DisplayName | String | 显示名称 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
Icon | String | 图标 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IsDemo | Boolean | 是否为模板项目 注意:此字段可能返回 null,表示取不到有效值。 |
MaxMember | Integer | 最大团员数 注意:此字段可能返回 null,表示取不到有效值。 |
UserOwnerId | Integer | 个人所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Archived | Boolean | 是否压缩 注意:此字段可能返回 null,表示取不到有效值。 |
StartDate | Integer | 项目开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
TeamOwnerId | Integer | 团队所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
EndDate | Integer | 项目结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeOneProject",
3 "ProjectId": 2
4}
成功示例
1{
2 "Response": {
3 "Project": {
4 "Name": "coding-demo",
5 "Id": 2,
6 "Type": 2,
7 "DisplayName": "示例项目",
8 "Icon": "https://codehub.cn/7971.png",
9 "Description": "CODING 示例项目",
10 "CreatedAt": 1572933083682,
11 "MaxMember": 0,
12 "TeamId": 12,
13 "UserOwnerId": 0,
14 "IsDemo": true,
15 "Archived": false,
16 "StartDate": 0,
17 "UpdatedAt": 1572933083682,
18 "TeamOwnerId": 0,
19 "EndDate": 0,
20 "Status": 1
21 },
22 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
23 }
24}
查询项目成员列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectMembers。 |
PageNumber | 是 | Integer | 请求页数 |
PageSize | 是 | Integer | 请求条数 |
ProjectId | 是 | Integer | 项目Id |
RoleId | 否 | Integer | 用户组Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | [ProjectMemberData] | 项目成员分页列表信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ProjectMemberData
项目成员分页信息
名称 | 类型 | 描述 |
---|---|---|
PageNumber | Integer | 第几页 |
PageSize | Integer | 每页条数 |
TotalCount | Integer | 总条数 |
ProjectMembers | Array of [UserData] | 项目成员列表信息 |
UserData
用户成员信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户Id |
TeamId | Integer | 团队Id |
Name | String | 用户名 |
NamePinYin | String | 用户名拼音 |
Avatar | String | 头像 |
String | 邮箱 | |
Phone | String | 手机号 |
EmailValidation | Integer | 邮箱是否验证 0 否 /1 是 |
PhoneValidation | Integer | 手机是否验证 0 否 /1 是 |
Status | Integer | 用户状态 |
Role
用户组
名称 | 类型 | 描述 |
---|---|---|
RoleId | Integer | 用户组Id |
RoleType | String | 用户组类型 |
RoleTypeName | String | 用户组类型名称 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectMembers",
3 "PageNumber": 1,
4 "PageSize": 10,
5 "ProjectId": 1,
6 "RoleId": 1
7}
成功示例
1{
2 "Response": {
3 "RequestId": "de0438d0-1e5e-098f-872a-c96863ed3510",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 1,
7 "TotalCount": 6,
8 "ProjectMembers": [
9 {
10 "Id": 6,
11 "TeamId": 1,
12 "Name": "blockuser",
13 "NamePinYin": "blockuser",
14 "Avatar": "http://e.coding.net/static/fruit_avatar/Fruit-4.png",
15 "Email": "blockuser@gmail.com",
16 "Phone": "13800138006",
17 "EmailValidation": 1,
18 "PhoneValidation": 1,
19 "Status": -1,
20 "GlobalKey": "GK",
21 "Roles": [
22 {
23 "RoleType": "ProjectMember",
24 "RoleId": 1,
25 "RoleTypeName": "开发"
26 }
27 ]
28 }
29 ]
30 }
31 }
32}
查询项目根据项目名称
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectByName。 |
ProjectName | 是 | String | 项目名称 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Project | [Project] | 项目信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Project
项目信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 项目 ID |
CreatedAt | Integer | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | Integer | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
Status | Integer | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Type | Integer | 类型 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
DisplayName | String | 显示名称 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
Icon | String | 图标 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IsDemo | Boolean | 是否为模板项目 注意:此字段可能返回 null,表示取不到有效值。 |
MaxMember | Integer | 最大团员数 注意:此字段可能返回 null,表示取不到有效值。 |
UserOwnerId | Integer | 个人所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Archived | Boolean | 是否压缩 注意:此字段可能返回 null,表示取不到有效值。 |
StartDate | Integer | 项目开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
TeamOwnerId | Integer | 团队所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
EndDate | Integer | 项目结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectByName",
3 "ProjectName": "coding"
4}
成功示例
1{
2 "Response": {
3 "Project": {
4 "Name": "coding-demo",
5 "Id": 2,
6 "Type": 2,
7 "DisplayName": "示例项目",
8 "Icon": "https://dn-coding-net-production-pp.codehub.cn/79a8bcc4-d9cc-4061-940d-5b3bb31bf571.png",
9 "Description": "CODING 示例项目",
10 "CreatedAt": 1572933083682,
11 "MaxMember": 0,
12 "TeamId": 12,
13 "UserOwnerId": 0,
14 "IsDemo": true,
15 "Archived": false,
16 "StartDate": 0,
17 "UpdatedAt": 1572933083682,
18 "TeamOwnerId": 0,
19 "EndDate": 0,
20 "Status": 1
21 },
22 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
23 }
24}
增加项目成员
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateProjectMember。 |
ProjectId | 是 | Integer | 项目Id |
Type | 是 | Integer | 类型 |90 项目管理员|80 项目成员 |
UserGlobalKeyList.N | 是 | Array of String | 用户user gk数组 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateProjectMember",
3 "ProjectId": 1,
4 "Type": 1,
5 "UserGlobalKeyList": [
6 "gk1",
7 "gk2"
8 ]
9}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
查询成员所在项目列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeUserProjects |
UserId | 是 | Integer | 成员 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProjectList | Array of Project | 项目列表信息 注意:此字段可能返回 null,表示取不到有效值。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数信息
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 项目 ID |
CreatedAt | Integer | 创建时间 注意:此字段可能返回 null,表示取不到有效值。 |
UpdatedAt | Integer | 更新时间 注意:此字段可能返回 null,表示取不到有效值。 |
Status | Integer | 状态 注意:此字段可能返回 null,表示取不到有效值。 |
Type | Integer | 类型 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 名称 注意:此字段可能返回 null,表示取不到有效值。 |
DisplayName | String | 显示名称 注意:此字段可能返回 null,表示取不到有效值。 |
Description | String | 描述 注意:此字段可能返回 null,表示取不到有效值。 |
Icon | String | 图标 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
IsDemo | Boolean | 是否为模板项目 注意:此字段可能返回 null,表示取不到有效值。 |
MaxMember | Integer | 最大团员数 注意:此字段可能返回 null,表示取不到有效值。 |
UserOwnerId | Integer | 个人所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Archived | Boolean | 是否压缩 注意:此字段可能返回 null,表示取不到有效值。 |
StartDate | Integer | 项目开始时间 注意:此字段可能返回 null,表示取不到有效值。 |
TeamOwnerId | Integer | 团队所有者 ID 注意:此字段可能返回 null,表示取不到有效值。 |
EndDate | Integer | 项目结束时间 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeUserProjects",
3 "userId": 2
4}
成功示例
1{
2 "Response": {
3 "ProjectList": [
4 {
5 "Name": "coding-demo",
6 "Id": 2,
7 "Type": 2,
8 "DisplayName": "示例项目",
9 "Icon": "https://dn-coding-net-production-pp.codehub.cn/79a8bcc4-d9cc-4061-940d-5b3bb31bf571.png",
10 "Description": "CODING 示例项目",
11 "CreatedAt": 1572933083682,
12 "MaxMember": 0,
13 "TeamId": 12,
14 "UserOwnerId": 0,
15 "IsDemo": true,
16 "Archived": false,
17 "StartDate": 0,
18 "UpdatedAt": 1572933083682,
19 "TeamOwnerId": 0,
20 "EndDate": 0,
21 "Status": 1
22 }
23 ],
24 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
25 }
26}
获取用户个人信息
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeCodingCurrentUser |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
User | User 类型 | 用户个人信息 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 ID |
Status | Integer | 状态(新用户/已激活) 注意:此字段可能返回 null,表示取不到有效值。 |
String | 邮箱 注意:此字段可能返回 null,表示取不到有效值。 | |
GlobalKey | String | 用户唯一标志 注意:此字段可能返回 null,表示取不到有效值。 |
Avatar | String | 头像地址 注意:此字段可能返回 null,表示取不到有效值。 |
Name | String | 姓名 注意:此字段可能返回 null,表示取不到有效值。 |
NamePinYin | String | 姓名拼音 注意:此字段可能返回 null,表示取不到有效值。 |
Phone | String | 联系电话 注意:此字段可能返回 null,表示取不到有效值。 |
PhoneValidation | Integer | 手机是否已验证 注意:此字段可能返回 null,表示取不到有效值。 |
EmailValidation | Integer | 邮箱是否已验证 注意:此字段可能返回 null,表示取不到有效值。 |
PhoneRegionCode | String | 手机号地区 注意:此字段可能返回 null,表示取不到有效值。 |
TeamId | Integer | 团队 ID 注意:此字段可能返回 null,表示取不到有效值。 |
Example 1
成功示例
1{
2 "Action": "DescribeCodingCurrentUser"
3}
成功示例
1{
2 "Response": {
3 "RequestId": "367bdaa8-e4c7-a070-ecf6-00fea8e6fab9",
4 "User": {
5 "Id": 150258,
6 "Status": 1,
7 "Email": "test@coding.net",
8 "GlobalKey": "EHRIORBbfF",
9 "Avatar": "https://coding-net-production-static-ci.codehub.cn/WM-TEXT-AVATAR-nfutKljCRlKcSLDTOmrv.jpg",
10 "Name": "张三",
11 "NamePinYin": "zhangsan",
12 "Phone": "13800138000",
13 "PhoneValidation": 1,
14 "EmailValidation": 1,
15 "PhoneRegionCode": "+86",
16 "TeamId": 102882
17 }
18 }
19}
配置项目成员权限
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyProjectPermission。 |
RoleId | 是 | Integer | 权限 ID |
UserGK | 是 | String | user gk |
ProjectId | 是 | Integer | 项目 Id |
ActionFlag | 是 | Boolean | 权限创建、删除 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "ModifyProjectPermission",
3 "RoleId": 120,
4 "UserGK": "TDqyhVeWYN",
5 "ProjectId": 2,
6 "ActionFlag": false
7}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
查询项目用户组
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectRoles。 |
ProjectId | 是 | Integer | 项目Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Roles | Array of [Role] | 用户组 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Role
用户组
名称 | 类型 | 描述 |
---|---|---|
RoleId | Integer | 用户组Id |
RoleType | String | 用户组类型 |
RoleTypeName | String | 用户组类型名称 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectRoles",
3 "ProjectId": "1"
4}
成功示例
1{
2 "Response": {
3 "RequestId": "de0438d0-1e5e-098f-872a-c96863ed3510",
4 "Roles": [
5 {
6 "RoleType": "ProjectMember",
7 "RoleId": 1,
8 "RoleTypeName": "开发"
9 }
10 ]
11 }
12}
查询需求关联事项列表
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeRequirementDefectRelation。 |
ProjectName | 是 | String | 项目名称 |
RequirementCode | 是 | Integer | 需求 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issues | Array of IssueSimpleData | 缺陷列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeRequirementDefectRelation",
3 "ProjectName": "project-demo",
4 "RequirementCode": 1
5}
成功示例
1{
2 "Response": {
3 "Issues": [
4 {
5 "Code": 27,
6 "Type": "REQUIREMENT",
7 "Name": "xxx",
8 "IssueStatusId": 4,
9 "IssueStatusName": "未开始",
10 "IssueStatusType": "TODO",
11 "Priority": "3",
12 "Assignee": {
13 "Status": 1,
14 "Name": "xxx",
15 "Id": 1,
16 "Phone": "111",
17 "TeamId": 1,
18 "GlobalKey": "coding",
19 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20 "Email": "coding.com",
21 "TeamGlobalKey": "coding"
22 }
23 },
24 {
25 "Code": 25,
26 "Type": "REQUIREMENT",
27 "Name": "xxx",
28 "IssueStatusId": 4,
29 "IssueStatusName": "未开始",
30 "IssueStatusType": "TODO",
31 "Priority": "3",
32 "Assignee": {
33 "Status": 1,
34 "Name": "xxx",
35 "Id": 1,
36 "Phone": "111",
37 "TeamId": 1,
38 "GlobalKey": "coding",
39 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40 "Email": "coding.com",
41 "TeamGlobalKey": "coding"
42 }
43 }
44 ],
45 "RequestId": "1"
46 }
47}
修改缺陷所属的需求
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyDefectRelatedRequirement。 |
ProjectName | 是 | String | 项目名称 |
DefectCode | 是 | Integer | 缺陷 Code |
RequirementCode | 是 | Integer | 需求 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "DefectCode": 2,
4 "RequirementCode": 3
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
需求关联缺陷
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateRequirementDefectRelation。 |
ProjectName | 是 | String | 项目名称 |
RequirementCode | 是 | Integer | 需求 Code |
DefectCode | 是 | Integer | 缺陷 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "RequirementCode": 1,
4 "DefectCode": 2
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
创建事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIssue |
ProjectName | 是 | String | 项目名称 |
Type | 是 | String | 事项类型 DEFECT - 缺陷 STORY - 用户故事 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 SUB_TASK - 子工作项 RISK - 风险 WORK_ITEM - 工作项(项目集使用) |
IssueTypeId | 否 | Integer | 具体事项类型 ID,参考 DescribeTeamIssueTypeList |
ParentCode | 否 | Integer | 所属事项 Code,Type 为 SUB_TASK 时需指定 |
Name | 是 | String | 事项名称 |
StatusId | 否 | Integer | 事项状态 Id |
AssigneeId | 否 | Integer | 指派人 Id |
Description | 否 | String | 描述 |
DueDate | 否 | String | 截止日期 |
StartDate | 否 | String | 开始日期 |
WorkingHours | 否 | Double | 工时(小时) |
ProjectModuleId | 否 | Integer | 项目模块 Id |
WatcherIds | 否 | Array of Integer | 事项关注人 Id 列表 |
DefectTypeId | 否 | Integer | 项目缺陷类型 Id |
RequirementTypeId | 否 | Integer | 项目需求类型 Id |
Priority | 是 | String | 紧急程度 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 |
IterationCode | 否 | Integer | 迭代 Code,Type 为 EPIC 或 SUB_TASK 时,忽略该值 |
ReleaseCodes | 否 | Array of Integer | 版本 Code 列表 |
EpicCode | 否 | Integer | 史诗 Code,Type 为 EPIC 或 SUB_TASK 时,不传该值 |
StoryPoint | 否 | String | 故事点,例如:0.5、1 |
LabelIds | 否 | Array of Integer | 标签 Id 列表 |
FileIds | 否 | Array of Integer | 文件 Id 列表 |
TargetSortCode | 否 | Integer | 排序目标位置的事项 code 可不填,排在底位 |
ThirdLinks | 否 | Array of CreateThirdLinkForm | 第三方链接列表 |
CustomFieldValues | 否 | Array of IssueCustomFieldForm | 自定义属性值列表,具体见创建示例 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issue | IssueDetail | 事项信息。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueDetail
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型: DEFECT - 缺陷, REQUIREMENT - 需求, MISSION - 任务, EPIC - 史诗, SUB_TASK - 子工作项 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
Assignee | UserSimple | 处理人,Assignee.Id 等于 0 时表示未指定。 |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
Creator | UserSimple | 创建人 |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
ProjectModule | ProjectModule | 项目模块,ProjectModule.Id 等于 0 时表示未指定。 |
Watchers | Array of UserSimple | 关注人 |
Labels | Array of Label | 标签列表 |
Files | Array of ProjectFile | 附件列表 |
RequirementType | 需求类型 | |
DefectType | DefectType | 缺陷类型 |
CustomFields | Array of CustomField | 自定义字段列表 |
ThirdLinks | Array of ThirdLink | 第三方链接列表 |
SubTasks | Array of SubTask | 子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList) |
Parent | IssueSimple | 父事项 |
Epic | Epic | 所属史诗 |
Iteration | IterationSimple | 所属迭代 |
UserSimple
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Status | Integer | 用户状态 |
Avatar | String | 头像地址 |
Name | String | 姓名 |
String | 邮箱 |
ProjectModule
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 模块名称 |
Label
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 名称 |
Color | String | 颜色 |
ProjectFile
参数名称 | 类型 | 描述 |
---|---|---|
FileId | Integer | 文件 Id |
Name | String | 文件名称 |
Type | Integer | 类型 0 - 文件夹 1 - 文本 2 - 图片 3 - 二进制 4 - SVG |
Size | Long | 大小(比特) |
Url | String | 下载地址 |
CustomField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 自定义属性 Id |
ValueString | String | 自定义属性值,JSON 字符串 根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组 另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象 |
ThirdLink
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 第三方链接 Id |
ThirdType | Integer | 第三方链接类型,MODAO - 墨刀 |
Link | String | 链接地址 |
Title | String | 名称 |
IssueSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
Epic
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
SubTask
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
IterationSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 迭代代码 |
Name | String | 迭代名称 |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "CreateIssue",
3 "ProjectName": "demo-project",
4 "Type": "REQUIREMENT",
5 "Name": "一个需求",
6 "Priority": "0",
7 "CustomFieldValues": [
8 {
9 "Id": 34929409,
10 "Content": "1(普通字段)"
11 },
12 {
13 "Id": 34929409,
14 "Content": "1,2,3(多选字段)"
15 }
16 ]
17}
成功示例
1{
2 "Response": {
3 "RequestId": "c2e8cdce-9d9f-be99-e209-3dae07b690ac",
4 "Issue": {
5 "ParentType": "REQUIREMENT",
6 "Code": 27,
7 "Type": "REQUIREMENT",
8 "Name": "test-20200826-1",
9 "Description": "",
10 "IterationId": 0,
11 "IssueStatusId": 4,
12 "IssueStatusName": "未开始",
13 "IssueStatusType": "TODO",
14 "Priority": "0",
15 "Assignee": {
16 "Id": 0,
17 "Status": 0,
18 "GlobalKey": "",
19 "Avatar": "",
20 "Media": "",
21 "Name": "",
22 "Email": ""
23 },
24 "StartDate": 0,
25 "DueDate": 0,
26 "WorkingHours": 0,
27 "Creator": {
28 "Id": 1,
29 "Status": 2,
30 "GlobalKey": "coding",
31 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
32 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
33 "Name": "coding",
34 "Email": ""
35 },
36 "StoryPoint": "",
37 "CreatedAt": 1598843625826,
38 "UpdatedAt": 1598843625826,
39 "CompletedAt": 0,
40 "ProjectModule": {
41 "Id": 0,
42 "Name": ""
43 },
44 "Watchers": [
45 {
46 "Id": 1,
47 "Status": 2,
48 "GlobalKey": "coding",
49 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
50 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
51 "Name": "coding",
52 "Email": ""
53 }
54 ],
55 "Labels": [],
56 "Files": [],
57 "RequirementType": {
58 "Id": 0,
59 "Name": ""
60 },
61 "DefectType": {
62 "Id": 0,
63 "Name": "",
64 "IconUrl": ""
65 },
66 "CustomFields": [],
67 "ThirdLinks": [],
68 "SubTasks": [],
69 "Parent": {
70 "Code": 0,
71 "Type": "",
72 "Name": "",
73 "IssueStatusId": 0,
74 "IssueStatusName": "",
75 "Priority": "",
76 "Assignee": {
77 "Id": 0,
78 "Status": 0,
79 "GlobalKey": "",
80 "Avatar": "",
81 "Media": "",
82 "Name": "",
83 "Email": ""
84 }
85 },
86 "Epic": {
87 "Code": 0,
88 "Type": "",
89 "Name": "",
90 "IssueStatusId": 0,
91 "IssueStatusName": "",
92 "Priority": "",
93 "Assignee": {
94 "Id": 0,
95 "Status": 0,
96 "GlobalKey": "",
97 "Avatar": "",
98 "Media": "",
99 "Name": "",
100 "Email": ""
101 }
102 },
103 "IssueTypeDetail": {
104 "Id": 1,
105 "Name": "用户故事",
106 "IssueType": "REQUIREMENT",
107 "Description": "",
108 "IsSystem": false
109 }
110 }
111 }
112}
删除事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteIssue |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
IssueType | 否 | String | 事项类型,可不填 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteIssue",
3 "ProjectName": "demo-project",
4 "IssueCode": 3
5}
成功示例
1{
2 "Response": {
3 "RequestId": "135f80f0-0577-6421-293e-ec231ff3b337"
4 }
5}
查询事项附件的下载地址
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueFileUrl |
ProjectName | 是 | String | 项目名称 |
FileId | 是 | Integer | 文件 Id |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Url | String | 文件下载地址 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueFileUrl",
3 "ProjectName": "project-demo",
4 "FileId": 7
5}
成功示例
1{
2 "Response": {
3 "RequestId": "3cdcc77c-f1a3-1695-fafe-6bb4fc71b647",
4 "Url": "http://coding-net-test-self-1257242599.cos.ap-shanghai.myqcloud.com/b6357cc0-e357-11ea-af4e-4177fbfe7a25.txt?sign=q-sign-algorithm=sha1&q-ak=AKIDUnFWaPTLQccQyIsuIdCdq04B8xd6iOK4&q-sign-time=1599013747;1599017347&q-key-time=1599013747;1599017347&q-header-list=&q-url-param-list=response-content-disposition;response-expires&q-signature=4aa5d8f991c0388561f0c43e0f15059e91ccede7&response-content-disposition=attachment;filename=testfile-20200821104044.txt&response-expires=Fri, 04 Sep 2020 14:29:07 GMT"
5 }
6}
查询筛选器列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueFilterList |
ProjectName | 是 | String | 项目名称 |
IssueType | 是 | String | 事项类型 ALL - 全部事项 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | IssueFilterListData | 过滤器列表,包含系统过滤器和自定义过滤器。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueFilterListData
参数名称 | 类型 | 描述 |
---|---|---|
SystemFilterList | Array of IssueFilter | 系统过滤器列表 |
SystemFilterList | Array of IssueFilter | 自定义过滤器列表 |
IssueFilter
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 过滤器 ID |
IssueType | String | 事项类型 |
CreatorId | Integer | 创建人 ID |
Name | String | 名称 |
IsSystem | Boolean | 是否是团队筛选器 |
SharedTeam | Boolean | 是否是系统自带 |
IsDefault | Boolean | 默认筛选器 |
Content | String | 筛选组合,JSON 字符串 例如:{"filterIssueType":"ALL","sort":{"key":"PRIORITY","value":"DESC"},"conditions": [{"value":["TODO","PROCESSING"],"key":"STATUS_TYPE","fixed":true,"filterIssueType":"ALL","projectId":1},{"value":[],"key":"ASSIGNEE","fixed":true,"constValue":["UNSPECIFIC"] ,"filterIssueType":"ALL","projectId":1} |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueFilterList",
3 "ProjectName": "demo-project",
4 "IssueType": "REQUIREMENT"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "146e1c15-b712-a7b6-851b-16267a079fad",
4 "Data": {
5 "SystemFilterList": [
6 {
7 "Id": 1,
8 "IssueType": "REQUIREMENT",
9 "CreatorId": 1,
10 "Name": "我未完成的",
11 "IsSystem": true,
12 "SharedTeam": false,
13 "IsDefault": false,
14 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"STATUS_TYPE\",\"Fixed\":true,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[\"TODO\",\"PROCESSING\"],\"TeamView\":false},{\"Key\":\"ASSIGNEE\",\"Fixed\":true,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[1],\"ValueChanged\":null,\"ValidInfo\":null,\"Status\":null,\"TeamView\":false}]}",
15 "CreatedAt": 1597908832000,
16 "UpdatedAt": 1597908832000
17 },
18 {
19 "Id": 2,
20 "IssueType": "REQUIREMENT",
21 "CreatorId": 1,
22 "Name": "分配给我的",
23 "IsSystem": true,
24 "SharedTeam": false,
25 "IsDefault": false,
26 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"ASSIGNEE\",\"Fixed\":true,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[1],\"ValueChanged\":null,\"ValidInfo\":null,\"Status\":null,\"TeamView\":false}]}",
27 "CreatedAt": 1597908833000,
28 "UpdatedAt": 1597908833000
29 },
30 {
31 "Id": 3,
32 "IssueType": "REQUIREMENT",
33 "CreatorId": 1,
34 "Name": "我创建的",
35 "IsSystem": true,
36 "SharedTeam": false,
37 "IsDefault": false,
38 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"CREATOR\",\"Fixed\":false,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[1],\"ValueChanged\":false,\"ValidInfo\":null,\"Status\":null,\"TeamView\":false}]}",
39 "CreatedAt": 1597908833000,
40 "UpdatedAt": 1597908833000
41 },
42 {
43 "Id": 4,
44 "IssueType": "REQUIREMENT",
45 "CreatorId": 1,
46 "Name": "我关注的",
47 "IsSystem": true,
48 "SharedTeam": false,
49 "IsDefault": false,
50 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"WATCHER\",\"Fixed\":false,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[1],\"ValueChanged\":null,\"ValidInfo\":null,\"Status\":null,\"TeamView\":false}]}",
51 "CreatedAt": 1597908833000,
52 "UpdatedAt": 1597908833000
53 },
54 {
55 "Id": 5,
56 "IssueType": "REQUIREMENT",
57 "CreatorId": 1,
58 "Name": "全部打开的",
59 "IsSystem": true,
60 "SharedTeam": false,
61 "IsDefault": true,
62 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"PRIORITY\",\"Value\":\"DESC\"},\"Conditions\":[{\"Key\":\"STATUS_TYPE\",\"Fixed\":true,\"ConstValue\":null,\"FilterIssueType\":\"REQUIREMENT\",\"ProjectId\":1,\"ProjectIds\":null,\"Value\":[\"TODO\",\"PROCESSING\"],\"TeamView\":false}]}",
63 "CreatedAt": 1597908833000,
64 "UpdatedAt": 1597908833000
65 },
66 {
67 "Id": 6,
68 "IssueType": "REQUIREMENT",
69 "CreatorId": 1,
70 "Name": "全部",
71 "IsSystem": true,
72 "SharedTeam": false,
73 "IsDefault": false,
74 "Content": "{\"FilterIssueType\":\"REQUIREMENT\",\"Sort\":{\"Key\":\"CREATED_AT\",\"Value\":\"DESC\"},\"Conditions\":[]}",
75 "CreatedAt": 1597908833000,
76 "UpdatedAt": 1597908833000
77 }
78 ],
79 "CustomFilterList": []
80 }
81 }
82}
查询事项列表(旧)
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueList |
ProjectName | 是 | String | 项目名称 |
IssueType | 是 | Integer | 事项类型 ALL - 全部事项 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 |
Offset | 是 | Integer | 偏移量,默认 0 |
Limit | 是 | Integer | 限制数目,默认 20 |
Conditions | 否 | Array of IssueCondition | 筛选条件列表 |
SortKey | 否 | String | 排序字段,默认:CODE 可选值:STATUS, CREATED_AT, PRIORITY, UPDATED_AT, DUE_DATE, CODE, JOIN_ITERATION_AT, STATUS_TYPE, ASSIGNEE, PROJECT_ID, ISSUE_STATUS_ID, ISSUE_ITERATION_SORT, ISSUE_ROADMAP_SORT, PARENT_ID, COMPLETED_AT |
SortValue | 否 | String | 排序方式 DESC - 倒序(默认值) ASC - 正序 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
IssueList | Array of IssueListData | 事项列表。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueCondition
参数名称 | 类型 | 描述 |
---|---|---|
Key | String | 筛选字段 KEY,可选值如下。 ISSUE_TYPE_ID:事项类型,可以参考 DescribeTeamIssueTypeList,多选 DEFECT_TYPE:缺陷类型,多选 REQUIREMENT_TYPE:需求类型,多选 MISSION_TYPE:任务类型,多选 PRIORITY:优先级,多选 DUE_DATE:截止日期,日期范围 UPDATED_AT:更新时间,日期范围 CREATED_AT:创建时间,日期范围 START_DATE:开始日期,日期范围 ASSIGNEE:处理人ID,多选 CREATOR:创建者ID,多选 WATCHER:关注者ID,多选 MODULE:模块,多选 LABEL:标签,多选 STATUS:状态,多选 STATUS_TYPE:状态类型,多选 KEYWORD:事项名称、CODE 模糊搜索 ISSUE_TYPE:事项类型,多选 ISSUE_SUB_TYPE:事项的子项类型,多选 WORKING_HOURS:预估工时,数值范围 ITERATION:迭代,多选 PARENT:父需求,多选 CUSTOM:自定义字段,同时需指定 CustomFieldId |
Value | String | 筛选值,多选值用逗号隔开。 日期格式: 2020-08-01,日期时间格式: 2020-08-01 12:00:00 整数、小数、日期、日期时间类型的字段值应为一个范围,前后闭区间,范围开始值与结束值之间使用"_"连接,例如:"0.1_5.0"、"2020-08-01_2020-08-31"。 |
ConstValue | String | 常量值 "UNSPECIFIC" 表示未指定,例如:处理人、需求类型、标签等字段,使用此值来筛选未指定处理人、需求类型或标签的事项。 |
CustomFieldId | Integer | 自定义字段 Id,Key 为 "CUSTOM" 时需设置该值,常规字段无需设置。 |
IssueListData
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型 |
IssueTypeId | Integer | 事项类型ID |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
AssigneeId | Integer | 处理人 Id |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
CreatorId | Integer | 创建人 Id |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
Iteration | IterationSimple | 迭代信息 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueList",
3 "ProjectName": "demo-project",
4 "IssueType": "ALL",
5 "Offset": 0,
6 "Limit": 10,
7 "Conditions": [
8 {
9 "Key": "STATUS_TYPE",
10 "Value": "TODO"
11 },
12 {
13 "Key": "ISSUE_TYPE_ID",
14 "Value": "1,2"
15 },
16 {
17 "Key": "ASSIGNEE",
18 "Value": "1,2,3"
19 },
20 {
21 "Key": "CUSTOM",
22 "CustomFieldId": 1,
23 "Value": "please fill custom field value id"
24 }
25 ]
26}
成功示例
1{
2 "Response": {
3 "RequestId": "35c5b423-d311-d27f-f48c-a2ddf8b1cc59",
4 "IssueList": [
5 {
6 "ParentType": "REQUIREMENT",
7 "Code": 27,
8 "Type": "REQUIREMENT",
9 "Name": "this demo issue",
10 "Description": "",
11 "IterationId": 1,
12 "IssueStatusId": 4,
13 "IssueStatusName": "未开始",
14 "IssueStatusType": "TODO",
15 "Priority": "3",
16 "AssigneeId": 0,
17 "StartDate": 0,
18 "DueDate": 0,
19 "WorkingHours": 0,
20 "CreatorId": 1,
21 "StoryPoint": "0.5",
22 "CreatedAt": 1598843625000,
23 "UpdatedAt": 1598922564000,
24 "CompletedAt": 0,
25 "Iteration": {
26 "Code": 1,
27 "Name": "Q1 Spring1",
28 "Status": "PROCESSING"
29 },
30 "IssueTypeDetail": {
31 "Id": 1,
32 "Name": "用户故事",
33 "IssueType": "REQUIREMENT",
34 "Description": "",
35 "IsSystem": false
36 }
37 },
38 {
39 "ParentType": "REQUIREMENT",
40 "Code": 25,
41 "Type": "REQUIREMENT",
42 "Name": "test-20200826-1",
43 "Description": "",
44 "IterationId": 1,
45 "IssueStatusId": 4,
46 "IssueStatusName": "未开始",
47 "IssueStatusType": "TODO",
48 "Priority": "3",
49 "AssigneeId": 0,
50 "StartDate": 0,
51 "DueDate": 0,
52 "WorkingHours": 0,
53 "CreatorId": 1,
54 "StoryPoint": "2.0",
55 "CreatedAt": 1598517062000,
56 "UpdatedAt": 1598851550000,
57 "CompletedAt": 0,
58 "Iteration": {
59 "Code": 1,
60 "Name": "Q1 Spring1",
61 "Status": "PROCESSING"
62 },
63 "IssueTypeDetail": {
64 "Id": 1,
65 "Name": "用户故事",
66 "IssueType": "REQUIREMENT",
67 "Description": "",
68 "IsSystem": false
69 }
70 }
71 ]
72 }
73}
查询事项详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssue |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issue | IssueDetail | 事项信息。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueDetail
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型: DEFECT - 缺陷, REQUIREMENT - 需求, MISSION - 任务, EPIC - 史诗, SUB_TASK - 子工作项 |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
Assignee | UserSimple | 处理人,Assignee.Id 等于 0 时表示未指定。 |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
Creator | UserSimple | 创建人 |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
ProjectModule | ProjectModule | 项目模块,ProjectModule.Id 等于 0 时表示未指定。 |
Watchers | Array of UserSimple | 关注人 |
Labels | Array of Label | 标签列表 |
Files | Array of ProjectFile | 附件列表 |
RequirementType | 需求类型 | |
DefectType | DefectType | 缺陷类型 |
CustomFields | Array of CustomField | 自定义字段列表 |
ThirdLinks | Array of ThirdLink | 第三方链接列表 |
SubTasks | Array of SubTask | 子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList) |
Parent | IssueSimple | 父事项 |
Epic | Epic | 所属史诗 |
Iteration | IterationSimple | 所属迭代 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
UserSimple
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Status | Integer | 用户状态 |
Avatar | String | 头像地址 |
Name | String | 姓名 |
String | 邮箱 |
ProjectModule
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 模块名称 |
Label
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 名称 |
Color | String | 颜色 |
ProjectFile
参数名称 | 类型 | 描述 |
---|---|---|
FileId | Integer | 文件 Id |
Name | String | 文件名称 |
Type | Integer | 类型 0 - 文件夹 1 - 文本 2 - 图片 3 - 二进制 4 - SVG |
Size | Long | 大小(比特) |
Url | String | 下载地址 |
CustomField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 自定义属性 Id |
ValueString | String | 自定义属性值,JSON 字符串 根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组 另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象 |
ThirdLink
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 第三方链接 Id |
ThirdType | Integer | 第三方链接类型,MODAO - 墨刀 |
Link | String | 链接地址 |
Title | String | 名称 |
IssueSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
Epic
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
SubTask
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
IterationSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 迭代代码 |
Name | String | 迭代名称 |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeIssue",
3 "ProjectName": "demo-project",
4 "IssueCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "d2e3c64c-99f8-1ef2-c148-36f7d6a81cfe",
4 "Issue": {
5 "ParentType": "REQUIREMENT",
6 "Code": 1,
7 "Type": "REQUIREMENT",
8 "Name": "测试需求1",
9 "Description": "# 标题1\n\n1. 列表1\n2. 列表2\n\n# 标题2\n\n1. 啦啦\n\n# 其他\n\n\n123",
10 "IterationId": 1,
11 "IssueStatusId": 4,
12 "IssueStatusName": "未开始",
13 "IssueStatusType": "TODO",
14 "Priority": "0",
15 "Assignee": {
16 "Id": 0,
17 "Status": 0,
18 "GlobalKey": "",
19 "Avatar": "",
20 "Media": "",
21 "Name": "",
22 "Email": ""
23 },
24 "StartDate": 0,
25 "DueDate": 1596643199000,
26 "WorkingHours": 0,
27 "Creator": {
28 "Id": 1,
29 "Status": 2,
30 "GlobalKey": "coding",
31 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
32 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
33 "Name": "coding",
34 "Email": ""
35 },
36 "StoryPoint": "",
37 "CreatedAt": 1597384413000,
38 "UpdatedAt": 1599035298000,
39 "CompletedAt": 0,
40 "ProjectModule": {
41 "Id": 0,
42 "Name": ""
43 },
44 "Watchers": [],
45 "Labels": [],
46 "Files": [],
47 "RequirementType": {
48 "Id": 0,
49 "Name": ""
50 },
51 "DefectType": {
52 "Id": 0,
53 "Name": "",
54 "IconUrl": ""
55 },
56 "CustomFields": [
57 {
58 "Id": 16,
59 "ValueString": "[{\"Id\":1,\"Status\":2,\"GlobalKey\":\"coding\",\"Avatar\":\"https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0\",\"Media\":\"https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0\",\"Name\":\"coding\",\"Email\":\"coding@coding.com\",\"Name_pinyin\":\"\"}]"
60 },
61 {
62 "Id": 18,
63 "ValueString": "2020-08-06 02:02:00"
64 },
65 {
66 "Id": 19,
67 "ValueString": "123"
68 }
69 ],
70 "ThirdLinks": [
71 {
72 "Id": 1,
73 "ThirdType": "MODAO",
74 "Link": "https://modao.cc/app/7fb28d9af13827fd009f401579cbdc3cef2a456a/embed/v2",
75 "Title": "墨刀 1"
76 }
77 ],
78 "SubTasks": [],
79 "Parent": {
80 "Code": 0,
81 "Type": "",
82 "Name": "",
83 "IssueStatusId": 0,
84 "IssueStatusName": "",
85 "Priority": "",
86 "Assignee": {
87 "Id": 0,
88 "Status": 0,
89 "GlobalKey": "",
90 "Avatar": "",
91 "Media": "",
92 "Name": "",
93 "Email": ""
94 }
95 },
96 "Epic": {
97 "Code": 0,
98 "Type": "",
99 "Name": "",
100 "IssueStatusId": 0,
101 "IssueStatusName": "",
102 "Priority": "",
103 "Assignee": {
104 "Id": 0,
105 "Status": 0,
106 "GlobalKey": "",
107 "Avatar": "",
108 "Media": "",
109 "Name": "",
110 "Email": ""
111 }
112 },
113 "Iteration": {
114 "Code": 1,
115 "Name": "Q1 Spring1",
116 "Status": "PROCESSING"
117 },
118 "IssueTypeDetail": {
119 "Id": 1,
120 "Name": "用户故事",
121 "IssueType": "REQUIREMENT",
122 "Description": "",
123 "IsSystem": false
124 }
125 }
126 }
127}
查询属性设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectIssueFieldList |
ProjectName | 是 | String | 项目名称 |
IssueTypeId | 否 | Integer | 事项类型ID(IssueTypeId 和 IssueType 必须提供一个 ) |
IssueType | 否 | String | 事项类型,没有设置 IssueTypeId 参数则查询默认该默认类型 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 SUB_TASK - 子任务 WORK_ITEM - 项目集工作项 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProjectIssueFieldList | Array of ProjectIssueField | 项目属性列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ProjectIssueField
参数名称 | 类型 | 描述 |
---|---|---|
IssueFieldId | Integer | 关联属性 Id |
NeedDefault | String | 是否有默认值 |
ValueString | String | 默认值, JSON 字符串。例如:{"type":"VARIABLE","value":"CREATOR"} type:默认值类型,VARIABLE - 变量值(如创建者为 CREATOR) | CONSTANT - 常量值 value:默认值,根据 IssueField.ComponentType,可能为不同类型的值:数值、字符串、数组等 |
IssueType | String | 事项类型 |
Required | String | 是否必填 |
IssueField | IssueField | 关联属性 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
IssueField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 属性 Id |
Name | String | 名称 |
IconUrl | String | 图标地址 |
Type | String | 字段类型 |
ComponentType | String | 字段空间类型 TEXT_SINGLE_LINE - 单行文本 TEXT_MULTI_LINE - 多行文本 SELECT_SINGLE - 单选列表 SELECT_MULTI - 多选列表 RADIO - 单选框 CHECKBOX - 多选框 SELECT_MEMBER_SINGLE - 用户单选列表 SELECT_MEMBER_MULTI - 用户多选列表 TEXT_DATETIME - 日期时间选择框 TEXT_DATE - 日期选择框 TEXT_INTEGER - 整数输入框 TEXT_DECIMAL - 小数输入框 |
Description | String | 事项类型 |
Options | Array of IssueFieldOption | 选项列表 |
Unit | String | 单位 |
Selectable | Boolean | 项目中属性可选 |
Required | Boolean | 是否比天 |
Editable | Boolean | 是否可修改 |
Deletable | Boolean | 是否可删除 |
Sortable | Boolean | 是否可排序 |
CreatedBy | Integer | 创建者 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
IssueFieldOption
参数名称 | 类型 | 描述 |
---|---|---|
Icon | String | 选项图标地址 |
Sort | String | 排序 |
Title | String | 选项标题 |
Value | String | 选项值 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectIssueFieldList",
3 "ProjectName": "demo-project",
4 "IssueType": "REQUIREMENT"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "b2f77ca4-a34c-efde-29aa-389940fc8673",
4 "ProjectIssueFieldList": [
5 {
6 "IssueFieldId": 1,
7 "NeedDefault": false,
8 "ValueString": "",
9 "IssueType": "REQUIREMENT",
10 "Required": false,
11 "IssueField": {
12 "Id": 1,
13 "TeamId": 1,
14 "Name": "处理人",
15 "IconUrl": "",
16 "Type": "ASSIGNEE",
17 "ComponentType": "SELECT_MEMBER_SINGLE",
18 "Description": "",
19 "Options": [],
20 "Unit": "",
21 "Selectable": false,
22 "Required": false,
23 "Editable": false,
24 "Deletable": false,
25 "Sortable": true,
26 "CreatedBy": 0,
27 "CreatedAt": 1597283395000,
28 "UpdatedAt": 1597283395000
29 },
30 "CreatedAt": 1597283400000,
31 "UpdatedAt": 1597283400000
32 },
33 {
34 "IssueFieldId": 8,
35 "NeedDefault": true,
36 "ValueString": "{\"type\":\"VARIABLE\",\"value\":\"CREATOR\"}",
37 "IssueType": "REQUIREMENT",
38 "Required": false,
39 "IssueField": {
40 "Id": 8,
41 "TeamId": 1,
42 "Name": "关注者",
43 "IconUrl": "",
44 "Type": "WATCHER",
45 "ComponentType": "SELECT_MEMBER_MULTI",
46 "Description": "",
47 "Options": [],
48 "Unit": "",
49 "Selectable": false,
50 "Required": false,
51 "Editable": false,
52 "Deletable": false,
53 "Sortable": true,
54 "CreatedBy": 0,
55 "CreatedAt": 1597283395000,
56 "UpdatedAt": 1597283395000
57 },
58 "CreatedAt": 1597283400000,
59 "UpdatedAt": 1598513658000
60 },
61 {
62 "IssueFieldId": 11,
63 "NeedDefault": false,
64 "ValueString": "",
65 "IssueType": "REQUIREMENT",
66 "Required": false,
67 "IssueField": {
68 "Id": 11,
69 "TeamId": 1,
70 "Name": "多选菜单",
71 "IconUrl": "",
72 "Type": "CUSTOM",
73 "ComponentType": "SELECT_MULTI",
74 "Description": "我的属性描述",
75 "Options": [
76 {
77 "Icon": "",
78 "Sort": "0",
79 "Title": "选项1",
80 "Value": "1"
81 },
82 {
83 "Icon": "",
84 "Sort": "1",
85 "Title": "选项2",
86 "Value": "2"
87 }
88 ],
89 "Unit": "",
90 "Selectable": true,
91 "Required": false,
92 "Editable": true,
93 "Deletable": true,
94 "Sortable": true,
95 "CreatedBy": 1,
96 "CreatedAt": 1598254806000,
97 "UpdatedAt": 1598594036000
98 },
99 "CreatedAt": 1598254851000,
100 "UpdatedAt": 1598428656000
101 },
102 {
103 "IssueFieldId": 13,
104 "NeedDefault": false,
105 "ValueString": "",
106 "IssueType": "REQUIREMENT",
107 "Required": false,
108 "IssueField": {
109 "Id": 13,
110 "TeamId": 1,
111 "Name": "单行文本",
112 "IconUrl": "",
113 "Type": "CUSTOM",
114 "ComponentType": "TEXT_SINGLE_LINE",
115 "Description": "",
116 "Options": [],
117 "Unit": "",
118 "Selectable": true,
119 "Required": false,
120 "Editable": true,
121 "Deletable": true,
122 "Sortable": true,
123 "CreatedBy": 1,
124 "CreatedAt": 1598513276000,
125 "UpdatedAt": 1598513276000
126 },
127 "CreatedAt": 1598513658000,
128 "UpdatedAt": 1598513658000
129 }
130 ]
131 }
132}
查询状态设置
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectIssueStatusList |
ProjectName | 是 | String | 项目名称 |
IssueTypeId | 否 | Integer | 事项类型ID(IssueTypeId 和 IssueType 必须设置一个) |
IssueType | 否 | String | 事项类型,如果未设置 IssueTypeId 则查询默认类型 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 SUB_TASK - 子任务 STORY - 用户故事 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
ProjectIssueStatusList | Array of ProjectIssueStatus | 项目状态列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
ProjectIssueStatus
参数名称 | 类型 | 描述 |
---|---|---|
IssueType | String | 事项类型 |
IssueStatusId | Integer | 事项状态 Id |
IsDefault | Boolean | 是否是默认值 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
Sort | Integer | 排序 |
IssueStatus | String | 事项状态 |
IssueStatus
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项状态 Id |
Index | Integer | 状态序号 |
Name | String | 名称 |
Type | String | 类型,例如:TODO、PROCESSING、COMPLETED |
Description | String | 描述 |
IsSystem | Boolean | 是否是系统内置 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectIssueStatusList",
3 "ProjectName": "demo-project",
4 "IssueType": "REQUIREMENT"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "dc827006-32db-a74f-eeae-13bec31c8b92",
4 "ProjectIssueStatusList": [
5 {
6 "IssueType": "REQUIREMENT",
7 "IssueStatusId": 4,
8 "IsDefault": true,
9 "CreatedAt": 1597283400000,
10 "UpdatedAt": 1597283400000,
11 "Sort": 0,
12 "IssueStatus": {
13 "Id": 4,
14 "Index": 3,
15 "Name": "未开始",
16 "Type": "TODO",
17 "Description": "",
18 "IsSystem": true,
19 "CreatedAt": 1597283396000,
20 "UpdatedAt": 1597283396000
21 }
22 },
23 {
24 "IssueType": "REQUIREMENT",
25 "IssueStatusId": 9,
26 "IsDefault": false,
27 "CreatedAt": 1597283400000,
28 "UpdatedAt": 1597283400000,
29 "Sort": 0,
30 "IssueStatus": {
31 "Id": 9,
32 "Index": 8,
33 "Name": "开发中",
34 "Type": "PROCESSING",
35 "Description": "",
36 "IsSystem": true,
37 "CreatedAt": 1597283396000,
38 "UpdatedAt": 1597283396000
39 }
40 },
41 {
42 "IssueType": "REQUIREMENT",
43 "IssueStatusId": 10,
44 "IsDefault": false,
45 "CreatedAt": 1597283400000,
46 "UpdatedAt": 1597283400000,
47 "Sort": 0,
48 "IssueStatus": {
49 "Id": 10,
50 "Index": 9,
51 "Name": "测试中",
52 "Type": "PROCESSING",
53 "Description": "",
54 "IsSystem": true,
55 "CreatedAt": 1597283396000,
56 "UpdatedAt": 1597283396000
57 }
58 },
59 {
60 "IssueType": "REQUIREMENT",
61 "IssueStatusId": 13,
62 "IsDefault": false,
63 "CreatedAt": 1597283400000,
64 "UpdatedAt": 1597283400000,
65 "Sort": 0,
66 "IssueStatus": {
67 "Id": 13,
68 "Index": 12,
69 "Name": "已完成",
70 "Type": "COMPLETED",
71 "Description": "",
72 "IsSystem": true,
73 "CreatedAt": 1597283396000,
74 "UpdatedAt": 1597283396000
75 }
76 }
77 ]
78 }
79}
修改事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIssue |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
ParentCode | 否 | Integer | 所属事项 Code |
Name | 是 | String | 事项名称 |
StatusId | 否 | Integer | 事项状态 Id |
AssigneeId | 否 | Integer | 指派人 Id |
DueDate | 否 | String | 截止日期 |
StartDate | 否 | String | 开始日期 |
Progress | 否 | Double | 进度,示例:10 代表 10% |
WorkingHours | 否 | Double | 工时(小时) |
ProjectModuleId | 否 | Integer | 项目模块 Id |
WatcherIds | 否 | Array of Integer | 添加的事项关注人 Id 列表 |
DelWatcherIds | 否 | Array of Integer | 删除的事项关注人 Id 列表 |
DefectTypeId | 否 | Integer | 项目缺陷类型 Id |
RequirementTypeId | 否 | Integer | 项目需求类型 Id |
Priority | 否 | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 |
StoryPoint | 否 | String | 故事点,例如:0.5、1 |
LabelIds | 否 | Array of Integer | 添加的标签 Id 列表 |
DelLabelIds | 否 | Array of Integer | 删除的标签 Id 列表 |
FileIds | 否 | Array of Integer | 添加的文件 Id 列表 |
DelFileIds | 否 | Array of Integer | 删除的文件 Id 列表 |
CustomFieldValues | 否 | Array of IssueCustomFieldForm | 自定义属性值列表 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issue | IssueDetail | 事项信息。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueDetail
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型: DEFECT - 缺陷, REQUIREMENT - 需求, MISSION - 任务, EPIC - 史诗, SUB_TASK - 子工作项 |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
Assignee | UserSimple | 处理人,Assignee.Id 等于 0 时表示未指定。 |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
Creator | UserSimple | 创建人 |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
ProjectModule | ProjectModule | 项目模块,ProjectModule.Id 等于 0 时表示未指定。 |
Watchers | Array of UserSimple | 关注人 |
Labels | Array of Label | 标签列表 |
Files | Array of ProjectFile | 附件列表 |
RequirementType | 需求类型 | |
DefectType | DefectType | 缺陷类型 |
CustomFields | Array of CustomField | 自定义字段列表 |
ThirdLinks | Array of ThirdLink | 第三方链接列表 |
SubTasks | Array of SubTask | 子工作项列表(敏捷模式,如需访问任何类型的子项,参考:DescribeSubIssueList) |
Parent | IssueSimple | 父事项 |
Epic | Epic | 所属史诗 |
Iteration | IterationSimple | 所属迭代 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
UserSimple
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Status | Integer | 用户状态 |
Avatar | String | 头像地址 |
Name | String | 姓名 |
String | 邮箱 |
ProjectModule
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 模块名称 |
Label
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用户 Id |
Name | String | 名称 |
Color | String | 颜色 |
ProjectFile
参数名称 | 类型 | 描述 |
---|---|---|
FileId | Integer | 文件 Id |
Name | String | 文件名称 |
Type | Integer | 类型 0 - 文件夹 1 - 文本 2 - 图片 3 - 二进制 4 - SVG |
Size | Long | 大小(比特) |
Url | String | 下载地址 |
CustomField
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 自定义属性 Id |
ValueString | String | 自定义属性值,JSON 字符串 根据自定义属性的 ComponentType,返回不同类型的值,多选类型值为数组 另外:用户单选(SELECT_MEMBER_SINGLE)、用户多选(SELECT_MEMBER_MULTI)的自定义属性返回类型为 UserSimple 对象 |
ThirdLink
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 第三方链接 Id |
ThirdType | Integer | 第三方链接类型,MODAO - 墨刀 |
Link | String | 链接地址 |
Title | String | 名称 |
IssueSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
Epic
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
SubTask
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 事项 Code |
Type | String | 事项类型 |
Name | String | 名称 |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
Priority | String | 优先级 |
Assignee | UserSimple | 处理人 |
IterationSimple
参数名称 | 类型 | 描述 |
---|---|---|
Code | Integer | 迭代代码 |
Name | String | 迭代名称 |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "ModifyIssue",
3 "ProjectName": "demo-project",
4 "IssueCode": 3,
5 "Type": "REQUIREMENT",
6 "Name": "ceshi-20200817",
7 "Priority": "2",
8 "AssigneeId": 1
9}
成功示例
1{
2 "Response": {
3 "RequestId": "d68f3669-a9ee-ac91-dfec-95e80a134906",
4 "Issue": {
5 "ParentType": "REQUIREMENT",
6 "Code": 3,
7 "Type": "REQUIREMENT",
8 "Name": "ceshi-20200817",
9 "Description": "",
10 "IterationId": 1,
11 "IssueStatusId": 4,
12 "IssueStatusName": "未开始",
13 "IssueStatusType": "TODO",
14 "Priority": "2",
15 "Assignee": {
16 "Id": 1,
17 "Status": 2,
18 "GlobalKey": "coding",
19 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
21 "Name": "coding",
22 "Email": ""
23 },
24 "StartDate": 0,
25 "DueDate": 0,
26 "WorkingHours": 0,
27 "Creator": {
28 "Id": 1,
29 "Status": 2,
30 "GlobalKey": "coding",
31 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
32 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
33 "Name": "coding",
34 "Email": ""
35 },
36 "StoryPoint": "",
37 "CreatedAt": 1597895345000,
38 "UpdatedAt": 1598845197195,
39 "CompletedAt": 0,
40 "ProjectModule": {
41 "Id": 0,
42 "Name": ""
43 },
44 "Watchers": [
45 {
46 "Id": 1,
47 "Status": 2,
48 "GlobalKey": "coding",
49 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
50 "Media": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
51 "Name": "coding",
52 "Email": ""
53 }
54 ],
55 "Labels": [],
56 "Files": [],
57 "RequirementType": {
58 "Id": 0,
59 "Name": ""
60 },
61 "DefectType": {
62 "Id": 0,
63 "Name": "",
64 "IconUrl": ""
65 },
66 "CustomFields": [],
67 "ThirdLinks": [],
68 "SubTasks": [],
69 "Parent": {
70 "Code": 0,
71 "Type": "",
72 "Name": "",
73 "IssueStatusId": 0,
74 "IssueStatusName": "",
75 "Priority": "",
76 "Assignee": {
77 "Id": 0,
78 "Status": 0,
79 "GlobalKey": "",
80 "Avatar": "",
81 "Media": "",
82 "Name": "",
83 "Email": ""
84 }
85 },
86 "Epic": {
87 "Code": 0,
88 "Type": "",
89 "Name": "",
90 "IssueStatusId": 0,
91 "IssueStatusName": "",
92 "Priority": "",
93 "Assignee": {
94 "Id": 0,
95 "Status": 0,
96 "GlobalKey": "",
97 "Avatar": "",
98 "Media": "",
99 "Name": "",
100 "Email": ""
101 }
102 },
103 "IssueTypeDetail": {
104 "Id": 1,
105 "Name": "用户故事",
106 "IssueType": "REQUIREMENT",
107 "Description": "",
108 "IsSystem": false
109 }
110 }
111 }
112}
修改事项描述
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIssueDescription |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
Description | 是 | String | 事项描述,支持 MD 语法 |
Example 1
成功示例
1{
2 "Action": "ModifyIssueDescription",
3 "ProjectName": "shashajingdianxiangmu2",
4 "Description": "**description**",
5 "IssueCode": 17
6}
成功示例
1{
2 "Response": {
3 "RequestId": "15c9d55a-79b3-4a72-1f31-f101ae9c0ddf",
4 "IssueDescription": {
5 "Description": "<p><strong>this description</strong></p>"
6 }
7 }
8}
查询后置事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeBlockIssueList。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issues | Array of IssueSimpleData | 后置事项列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1
4}
成功示例
1{
2 "Response": {
3 "Issues": [
4 {
5 "Code": 27,
6 "Type": "REQUIREMENT",
7 "Name": "xxx",
8 "IssueStatusId": 4,
9 "IssueStatusName": "未开始",
10 "IssueStatusType": "TODO",
11 "Priority": "3",
12 "Assignee": {
13 "Status": 1,
14 "Name": "xxx",
15 "Id": 1,
16 "Phone": "111",
17 "TeamId": 1,
18 "GlobalKey": "coding",
19 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20 "Email": "coding.com",
21 "TeamGlobalKey": "coding"
22 }
23 },
24 {
25 "Code": 25,
26 "Type": "REQUIREMENT",
27 "Name": "xxx",
28 "IssueStatusId": 4,
29 "IssueStatusName": "未开始",
30 "IssueStatusType": "TODO",
31 "Priority": "3",
32 "Assignee": {
33 "Status": 1,
34 "Name": "xxx",
35 "Id": 1,
36 "Phone": "111",
37 "TeamId": 1,
38 "GlobalKey": "coding",
39 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40 "Email": "coding.com",
41 "TeamGlobalKey": "coding"
42 }
43 }
44 ],
45 "RequestId": "1"
46 }
47}
查询前置事项
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeBlockedByIssueList。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Issues | Array of IssueSimpleData | 前置事项列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1
4}
成功示例
1{
2 "Response": {
3 "Issues": [
4 {
5 "Code": 27,
6 "Type": "REQUIREMENT",
7 "Name": "xxx",
8 "IssueStatusId": 4,
9 "IssueStatusName": "未开始",
10 "IssueStatusType": "TODO",
11 "Priority": "3",
12 "Assignee": {
13 "Status": 1,
14 "Name": "xxx",
15 "Id": 1,
16 "Phone": "111",
17 "TeamId": 1,
18 "GlobalKey": "coding",
19 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
20 "Email": "coding.com",
21 "TeamGlobalKey": "coding"
22 }
23 },
24 {
25 "Code": 25,
26 "Type": "REQUIREMENT",
27 "Name": "xxx",
28 "IssueStatusId": 4,
29 "IssueStatusName": "未开始",
30 "IssueStatusType": "TODO",
31 "Priority": "3",
32 "Assignee": {
33 "Status": 1,
34 "Name": "xxx",
35 "Id": 1,
36 "Phone": "111",
37 "TeamId": 1,
38 "GlobalKey": "coding",
39 "Avatar": "https://dn-coding-net-production-static.codehub.cn/512b2a62-956b-4ef8-8e84-b3c66e71468f.png?imageMogr2/auto-orient/format/png/crop/!300x300a0a0",
40 "Email": "coding.com",
41 "TeamGlobalKey": "coding"
42 }
43 }
44 ],
45 "RequestId": "1"
46 }
47}
查询子事项列表
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeSubIssueList。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
SubIssueList | Array of IssueListData | 子事项列表 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DescribeSubIssueList",
3 "ProjectName": "project-demo",
4 "IssueCode": 1
5}
成功示例
1{
2 "Response": {
3 "SubIssueList": [
4 {
5 "ParentType": "REQUIREMENT",
6 "Code": 27,
7 "Type": "REQUIREMENT",
8 "Name": "xxx",
9 "Description": "",
10 "IterationId": 0,
11 "IssueStatusId": 4,
12 "IssueStatusName": "未开始",
13 "IssueStatusType": "TODO",
14 "Priority": "3",
15 "AssigneeId": 0,
16 "StartDate": 0,
17 "DueDate": 0,
18 "WorkingHours": 0,
19 "CreatorId": 1,
20 "StoryPoint": "0.5",
21 "CreatedAt": 1598843625000,
22 "UpdatedAt": 1598922564000,
23 "CompletedAt": 0
24 },
25 {
26 "ParentType": "REQUIREMENT",
27 "Code": 25,
28 "Type": "REQUIREMENT",
29 "Name": "xxx",
30 "Description": "",
31 "IterationId": 0,
32 "IssueStatusId": 4,
33 "IssueStatusName": "未开始",
34 "IssueStatusType": "TODO",
35 "Priority": "3",
36 "AssigneeId": 0,
37 "StartDate": 0,
38 "DueDate": 0,
39 "WorkingHours": 0,
40 "CreatorId": 1,
41 "StoryPoint": "2.0",
42 "CreatedAt": 1598517062000,
43 "UpdatedAt": 1598851550000,
44 "CompletedAt": 0
45 }
46 ],
47 "RequestId": "1"
48 }
49}
删除前置事项
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteIssueBlock。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
BlockIssueCode | 是 | Integer | 前置事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1,
4 "BlockIssueCode": 4
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
添加前置事项
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIssueBlock。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
BlockIssueCode | 是 | Integer | 前置事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 1,
4 "BlockIssueCode": 4
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
修改事项父需求
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIssueParentRequirement。 |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 Code |
ParentIssueCode | 是 | Integer | 父事项 Code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "ProjectName": "project-demo",
3 "IssueCode": 10,
4 "ParentIssueCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1"
4 }
5}
查询企业所有事项类型列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeTeamIssueTypeList。 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueTypes | Array of IssueTypeDetail | 事项类型列表 |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeTeamIssueTypeList"
3}
成功示例
1{
2 "IssueTypes": [
3 {
4 "Id": 1,
5 "Name": "用户故事",
6 "IssueType": "REQUIREMENT",
7 "Description": "",
8 "IsSystem": false
9 },
10 {
11 "Id": 2,
12 "Name": "风险",
13 "IssueType": "REQUIREMENT",
14 "Description": "",
15 "IsSystem": false
16 }
17 ]
18}
查询项目的事项类型列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeProjectIssueTypeList |
ProjectName | 是 | String | 项目名称,非 ID、displayname |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
IssueTypes | Array of IssueTypeDetailWithSplit | 项目内事项类型列表 |
IssueTypeDetailWithSplit
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
SplitType | String | 分解类型, UNSPLITTABLE-不允许分解, SPECIFIC_TYPE-指定类型 , ALL_REQUIREMENT-全部需求类型 |
SplitTargetIssueTypeId | Array of Integer | 可以分解为哪些事项类型,值为类型 ID,SplitType=SPECIFIC_TYPE 时可用 |
Example 1
成功示例
1{
2 "Action": "DescribeProjectIssueTypeList",
3 "ProjectName": "TestDemoProject"
4}
成功示例
1{
2 "IssueTypes": [
3 {
4 "Id": 1,
5 "Name": "用户故事",
6 "IssueType": "REQUIREMENT",
7 "Description": "",
8 "IsSystem": false,
9 "SplitType": "ALL_REQUIREMENT",
10 "SplitTargetIssueTypeId": []
11 },
12 {
13 "Id": 2,
14 "Name": "用户故事2",
15 "IssueType": "REQUIREMENT",
16 "Description": "",
17 "IsSystem": false,
18 "SplitType": "UNSPLITTABLE",
19 "SplitTargetIssueTypeId": []
20 },
21 {
22 "Id": 3,
23 "Name": "用户故事3",
24 "IssueType": "REQUIREMENT",
25 "Description": "",
26 "IsSystem": false,
27 "SplitType": "SPECIFIC_TYPE",
28 "SplitTargetIssueTypeId": [
29 1,
30 2
31 ]
32 },
33 {
34 "Id": 4,
35 "Name": "需求",
36 "IssueType": "REQUIREMENT",
37 "Description": "",
38 "IsSystem": true,
39 "SplitType": "ALL_REQUIREMENT",
40 "SplitTargetIssueTypeId": []
41 }
42 ]
43}
事项列表(新)
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueListWithPage |
ProjectName | 是 | String | 项目名称 |
IssueType | 是 | Integer | 事项类型 ALL - 全部事项 DEFECT - 缺陷 REQUIREMENT - 需求 MISSION - 任务 EPIC - 史诗 |
PageNumber | 是 | Integer | 分页数 |
PageSize | 是 | Integer | 每页展示数,默认 20 ,最大值 500 |
Conditions | 否 | Array of IssueCondition | 筛选条件列表 |
SortKey | 否 | String | 排序字段,默认:CODE 可选值:STATUS, CREATED_AT, PRIORITY, UPDATED_AT, DUE_DATE, CODE, JOIN_ITERATION_AT, STATUS_TYPE, ASSIGNEE, PROJECT_ID, ISSUE_STATUS_ID, ISSUE_ITERATION_SORT, ISSUE_ROADMAP_SORT, PARENT_ID, COMPLETED_AT |
SortValue | 否 | String | 排序方式 DESC - 倒序(默认值) ASC - 正序 |
ShowSubIssues | 否 | Boolean | 是否显示子事项,对应页面上平铺视图“显示子事项”开关,取值 true 或者 false,不填为 false。true 表示显示,false 表示不显示 |
ExcludeSubTask | 否 | Boolean | 是否排除子工作项(subtask),只有当 ShowSubIssues=true 时这个参数才有效,取值 true 或者 false,不填为 false。true 表示排除子工作项,false 表示不排除 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
IssueList | Array of IssueListData | 事项列表。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueCondition
参数名称 | 类型 | 描述 |
---|---|---|
Key | String | 筛选字段 KEY,可选值如下。 ISSUE_TYPE_ID:事项类型,可以参考 DescribeTeamIssueTypeList,多选 DEFECT_TYPE:缺陷类型,多选 REQUIREMENT_TYPE:需求类型,多选 MISSION_TYPE:任务类型,多选 PRIORITY:优先级,多选 DUE_DATE:截止日期,日期范围 UPDATED_AT:更新时间,日期范围 CREATED_AT:创建时间,日期范围 START_DATE:开始日期,日期范围 ASSIGNEE:处理人ID,多选 CREATOR:创建者ID,多选 WATCHER:关注者ID,多选 MODULE:模块,多选 LABEL:标签,多选 STATUS:状态,多选 STATUS_TYPE:状态类型,多选 KEYWORD:事项名称、CODE 模糊搜索 ISSUE_TYPE:事项类型,多选 ISSUE_SUB_TYPE:事项的子项类型,多选 WORKING_HOURS:预估工时,数值范围 ITERATION:迭代,多选 PARENT:父需求,多选 CUSTOM:自定义字段,同时需指定 CustomFieldId |
Value | String | 筛选值,多选值用逗号隔开。 日期格式: 2020-08-01,日期时间格式: 2020-08-01 12:00:00 整数、小数、日期、日期时间类型的字段值应为一个范围,前后闭区间,范围开始值与结束值之间使用"_"连接,例如:"0.1_5.0"、"2020-08-01_2020-08-31"。 |
ConstValue | String | 常量值 "UNSPECIFIC" 表示未指定,例如:处理人、需求类型、标签等字段,使用此值来筛选未指定处理人、需求类型或标签的事项。 |
CustomFieldId | Integer | 自定义字段 Id,Key 为 "CUSTOM" 时需设置该值,常规字段无需设置。 |
IssueListData
参数名称 | 类型 | 描述 |
---|---|---|
ParentType | String | 父事项类型 |
Code | Integer | 事项 Code |
Type | String | 事项类型 |
IssueTypeId | Integer | 事项类型ID |
Name | String | 名称 |
Description | String | 描述 |
IterationId | Integer | 迭代 Id |
IssueStatusId | Integer | 事项状态 Id |
IssueStatusName | String | 事项状态名称 |
IssueStatusType | String | 事项状态类型,例如:TODO |
Priority | String | 优先级 "0" - 低 "1" - 中 "2" - 高 "3" - 紧急 "" - 未指定 |
AssigneeId | Integer | 处理人 Id |
StartDate | Long | 开始日期时间戳 |
DueDate | Long | 截止日期时间戳 |
WorkingHours | Double | 工时(小时) |
CreatorId | Integer | 创建人 Id |
StoryPoint | String | 故事点,例如:"0.5"、"0" 空字符串 "" 表示未指定。 |
CreatedAt | Long | 创建时间 |
UpdatedAt | Long | 修改时间 |
CompletedAt | Long | 完成时间 |
Iteration | IterationSimple | 迭代信息 |
IssueTypeDetail | IssueTypeDetail | 事项类型具体信息 |
IssueTypeDetail 事项类型具体信息
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 事项类型ID |
Name | String | 事项类型名称 |
IssueType | String | 事项类型基础类型,比如:REQUIREMENT、MISSION |
Description | String | 类型描述 |
IsSystem | Bool | 是否是系统内置 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueListWithPage",
3 "ProjectName": "demo-project",
4 "IssueType": "ALL",
5 "PageNumber": 1,
6 "PageSize": 20,
7 "Conditions": [
8 {
9 "Key": "STATUS_TYPE",
10 "Value": "TODO"
11 },
12 {
13 "Key": "ISSUE_TYPE_ID",
14 "Value": "1,2"
15 },
16 {
17 "Key": "ASSIGNEE",
18 "Value": "1,2,3"
19 },
20 {
21 "Key": "CUSTOM",
22 "CustomFieldId": 1,
23 "Value": "please fill custom field value id"
24 }
25 ]
26}
成功示例
1{
2 "Response": {
3 "RequestId": "35c5b423-d311-d27f-f48c-a2ddf8b1cc59",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 20,
7 "TotalPage": 1,
8 "TotalCount": 10,
9 "List": [
10 {
11 "ParentType": "REQUIREMENT",
12 "Code": 27,
13 "Type": "REQUIREMENT",
14 "Name": "this demo issue",
15 "Description": "",
16 "IterationId": 1,
17 "IssueStatusId": 4,
18 "IssueStatusName": "未开始",
19 "IssueStatusType": "TODO",
20 "Priority": "3",
21 "AssigneeId": 0,
22 "StartDate": 0,
23 "DueDate": 0,
24 "WorkingHours": 0,
25 "CreatorId": 1,
26 "StoryPoint": "0.5",
27 "CreatedAt": 1598843625000,
28 "UpdatedAt": 1598922564000,
29 "CompletedAt": 0,
30 "Iteration": {
31 "Code": 1,
32 "Name": "Q1 Spring1",
33 "Status": "PROCESSING"
34 },
35 "IssueTypeDetail": {
36 "Id": 1,
37 "Name": "用户故事",
38 "IssueType": "REQUIREMENT",
39 "Description": "",
40 "IsSystem": false
41 }
42 },
43 {
44 "ParentType": "REQUIREMENT",
45 "Code": 25,
46 "Type": "REQUIREMENT",
47 "Name": "test-20200826-1",
48 "Description": "",
49 "IterationId": 1,
50 "IssueStatusId": 4,
51 "IssueStatusName": "未开始",
52 "IssueStatusType": "TODO",
53 "Priority": "3",
54 "AssigneeId": 0,
55 "StartDate": 0,
56 "DueDate": 0,
57 "WorkingHours": 0,
58 "CreatorId": 1,
59 "StoryPoint": "2.0",
60 "CreatedAt": 1598517062000,
61 "UpdatedAt": 1598851550000,
62 "CompletedAt": 0,
63 "Iteration": {
64 "Code": 1,
65 "Name": "Q1 Spring1",
66 "Status": "PROCESSING"
67 },
68 "IssueTypeDetail": {
69 "Id": 1,
70 "Name": "用户故事",
71 "IssueType": "REQUIREMENT",
72 "Description": "",
73 "IsSystem": false
74 }
75 }
76 ]
77 }
78 }
79}
事项关联的测试用例
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeRelatedCaseList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项标示code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Cases | Array of Case | 用例列表。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Case
参数名称 | 类型 | 描述 |
---|---|---|
Id | Integer | 用例ID |
Name | String | 标题 |
Priority | Integer | 优先级, 0 => '紧急', 1 => '高', 2 => '中', 3 => '低' |
Example 1
成功示例
1{
2 "Action": "DescribeRelatedCaseList",
3 "ProjectName": "my-demo",
4 "IssueCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "b1410375-b707-6415-85cc-f0c5ec78a5ba",
4 "Cases": [
5 {
6 "Id": 1,
7 "Name": "注册商城验证码验证通过",
8 "Priority": 1
9 },
10 {
11 "Id": 2,
12 "Name": "注册商城验证码验证通过",
13 "Priority": 2
14 }
15 ]
16 }
17}
创建事项评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIssueComment |
ProjectName | 是 | String | 项目名称,非 ID、displayname |
IssueCode | 是 | Integer | 事项 code |
Content | 是 | String | 评论内容 |
ParentId | 否 | Integer | 如果回复评论传父评论ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateIssueComment",
3 "ProjectName": "TestProjectDemo",
4 "IssueCode": 1,
5 "Content": "这个要配合测试",
6 "ParentId": 0
7}
修改事项评论
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIssueComment |
ProjectName | 是 | String | 项目名称,非 ID、displayname |
IssueCode | 是 | Integer | 事项 code |
Content | 是 | String | 评论内容 |
CommentId | 是 | Integer | 评论ID |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "CreateIssueComment",
3 "ProjectName": "TestProjectDemo",
4 "IssueCode": 1,
5 "Content": "这个要配合测试",
6 "CommentId": 1
7}
查询事项评论列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueCommentList |
ProjectName | 是 | String | 项目名称,非 ID、displayname |
IssueCode | 是 | Integer | 事项 code |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
CommentList | Array of IssueComment | 评论列表 |
IssueComment
参数名称 | 类型 | 描述 |
---|---|---|
CommentId | Integer | 评论ID |
ParentId | Integer | 父级评论ID |
Content | String | 渲染的评论内容 |
RawContent | String | 用户输入的原始评论内容 |
CreatorId | Integer | 创建人ID |
CreatedAt | Integer | 创建时间戳 |
UpdatedAt | Integer | 修改时间戳 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueCommentList",
3 "ProjectName": "DemoProjectName",
4 "IssueCode": 1
5}
成功示例
1{
2 "CommentList": [
3 {
4 "CommentId": 1,
5 "ParentId": 0,
6 "Content": "<a src=http://codingtest.codingcorp.net/p/cc/issues/12> content </a> ",
7 "RawContent": "content",
8 "CreatorId": 1,
9 "CreatedAt": 1626402309235,
10 "UpdatedAt": 1626402309235
11 },
12 {
13 "CommentId": 2,
14 "ParentId": 1,
15 "Content": "<a src=http://codingtest.codingcorp.net/p/cc/issues/12>this is children content </a> ",
16 "RawContent": "children content",
17 "CreatorId": 1,
18 "CreatedAt": 1626402309235,
19 "UpdatedAt": 1626402309235
20 }
21 ]
22}
获取事项的状态变更历史
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueStatusChangeLogList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Array of Integer | 事项 code,支持多选 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Logs | list of Log | 具体的变更日志 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Log
Log 的具体信息
名称 | 类型 | 描述 |
---|---|---|
IssueCode | Integer | 事项 code |
StatusId | Integer | 状态对象 ID |
StatusName | String | 状态名称(当时的名称快照) |
CreatedAt | String | 生成时间 (流转到改状态的时间) |
IssueStatus.Id | Integer | 状态对象 ID |
IssueStatus.Name | String | 状态对象名称(最新) |
IssueStatus.Type | String | 状态类型,TODO、PROCESSING、COMPLETE |
IssueStatus.IsSystem | Bool | 是否是系统状态 |
Example 1
成功示例
1{
2 "Action": "DescribeIssueStatusChangeLogList",
3 "ProjectName": "my-demo",
4 "IssueCode": [
5 380,
6 2
7 ]
8}
成功示例
1{
2 "Response": {
3 "RequestId": "570322d0-b7bf-28d6-ca17-f8ab645da",
4 "Logs": {
5 "List": [
6 {
7 "IssueCode": 380,
8 "StatusId": 244,
9 "IssueStatus": {
10 "Id": 244,
11 "Index": 6,
12 "Name": "未评估",
13 "Type": "TODO",
14 "Description": "",
15 "IsSystem": true,
16 "CreatedAt": 1551937083000,
17 "UpdatedAt": 1551937083000
18 },
19 "StatusName": "未评估",
20 "CreatedAt": 1617095165000
21 },
22 {
23 "IssueCode": 380,
24 "StatusId": 10537,
25 "IssueStatus": {
26 "Id": 10537,
27 "Index": 14,
28 "Name": "已评估",
29 "Type": "TODO",
30 "Description": "",
31 "IsSystem": false,
32 "CreatedAt": 1555661502000,
33 "UpdatedAt": 1555661502000
34 },
35 "StatusName": "已评估",
36 "CreatedAt": 1621406657000
37 },
38 {
39 "IssueCode": 380,
40 "StatusId": 244,
41 "IssueStatus": {
42 "Id": 244,
43 "Index": 6,
44 "Name": "未评估",
45 "Type": "TODO",
46 "Description": "",
47 "IsSystem": true,
48 "CreatedAt": 1551937083000,
49 "UpdatedAt": 1551937083000
50 },
51 "StatusName": "未评估",
52 "CreatedAt": 1621411647000
53 }
54 ]
55 }
56 }
57}
获取工作台个人代办事项
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeWorkbenchIssueList |
ProjectId | 否 | Integer | 项目id,不填或者填0则查询团队内参与的所有项目 |
Type | 否 | String | 事项类型,取值如“REQUIREMENT”、“DEFECT”等 |
Keyword | 否 | String | 关键字 |
PageNumber | 否 | Integer | 分页查询的分页数,不填的话从第一页开始查询 |
PageSize | 否 | Integer | 每页展示数,默认 20 ,最大值 500 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueList | List | 事项列表。 |
Example 1
成功示例
1{
2 "Action": "DescribeWorkbenchIssueList",
3 "ProjectId": 0,
4 "Type": "DEFECT",
5 "Keyword": "",
6 "PageNumber": 1,
7 "PageSize": 200
8}
成功示例
1{
2 "Response": {
3 "RequestId": "80610858-c4a3-4028-ad52-9b051e23e37c",
4 "Data": {
5 "PageNumber": 1,
6 "PageSize": 200,
7 "TotalPage": 1,
8 "TotalCount": 2,
9 "IssueList": [
10 {
11 "Code": 10,
12 "Type": "DEFECT",
13 "IssueType": {
14 "Id": 5,
15 "Name": "缺陷",
16 "IssueType": "DEFECT",
17 "Description": "",
18 "IsSystem": false
19 },
20 "Name": "缺陷1",
21 "ParentCode": 0,
22 "Description": false,
23 "Priority": "1",
24 "DueDate": 253370736000000,
25 "ProjectId": 3,
26 "ParentIssue": {
27 "Code": 0,
28 "Type": "",
29 "Name": "",
30 "IssueStatusId": 0,
31 "IssueStatusName": "",
32 "Priority": "",
33 "Assignee": {
34 "Id": 0,
35 "Status": 0,
36 "Avatar": "",
37 "Name": "",
38 "Email": "",
39 "TeamId": 0,
40 "Phone": "",
41 "GlobalKey": "",
42 "TeamGlobalKey": ""
43 },
44 "IssueStatusType": "",
45 "IssueTypeDetail": {
46 "Id": 0,
47 "Name": "",
48 "IssueType": "",
49 "Description": "",
50 "IsSystem": false
51 }
52 },
53 "Project": {
54 "Id": 3,
55 "CreatedAt": 0,
56 "UpdatedAt": 0,
57 "Status": 0,
58 "Type": 0,
59 "MaxMember": 0,
60 "Name": "xjx-classic",
61 "DisplayName": "经典项目",
62 "Description": "",
63 "Icon": "/static/project_icon/scenery-version-2-3.svg",
64 "TeamOwnerId": 0,
65 "UserOwnerId": 0,
66 "StartDate": 0,
67 "EndDate": 0,
68 "TeamId": 0,
69 "IsDemo": false,
70 "Archived": false,
71 "ProgramIds": []
72 },
73 "IssueStatus": {
74 "Id": 1,
75 "Index": 0,
76 "Name": "待处理",
77 "Type": "TODO",
78 "Description": "",
79 "IsSystem": false,
80 "CreatedAt": 0,
81 "UpdatedAt": 0
82 },
83 "Epic": {
84 "Code": 0,
85 "Type": "",
86 "Name": "",
87 "IssueStatusId": 0,
88 "IssueStatusName": "",
89 "Priority": "",
90 "Assignee": {
91 "Id": 0,
92 "Status": 0,
93 "Avatar": "",
94 "Name": "",
95 "Email": "",
96 "TeamId": 0,
97 "Phone": "",
98 "GlobalKey": "",
99 "TeamGlobalKey": ""
100 }
101 },
102 "SubTasks": [],
103 "Assignee": {
104 "Id": 2,
105 "Status": 1,
106 "Avatar": "/static/fruit_avatar/Fruit-20.png",
107 "Name": "coding",
108 "Email": "",
109 "TeamId": 0,
110 "Phone": "",
111 "GlobalKey": "coding-coding",
112 "TeamGlobalKey": ""
113 },
114 "ChildCount": 0,
115 "ChildCompletedCount": 0,
116 "Creator": {
117 "Id": 0,
118 "Status": 0,
119 "Avatar": "",
120 "Name": "",
121 "Email": "",
122 "TeamId": 0,
123 "Phone": "",
124 "GlobalKey": "",
125 "TeamGlobalKey": ""
126 },
127 "CreatedAt": 1675151965000,
128 "UpdatedAt": 1675151972000,
129 "Iteration": {
130 "Code": 0,
131 "Name": "",
132 "Status": "",
133 "Id": 0
134 }
135 },
136 {
137 "Code": 3,
138 "Type": "DEFECT",
139 "IssueType": {
140 "Id": 5,
141 "Name": "缺陷",
142 "IssueType": "DEFECT",
143 "Description": "",
144 "IsSystem": false
145 },
146 "Name": "缺陷2",
147 "ParentCode": 0,
148 "Description": false,
149 "Priority": "1",
150 "DueDate": 253370736000000,
151 "ProjectId": 3,
152 "ParentIssue": {
153 "Code": 0,
154 "Type": "",
155 "Name": "",
156 "IssueStatusId": 0,
157 "IssueStatusName": "",
158 "Priority": "",
159 "Assignee": {
160 "Id": 0,
161 "Status": 0,
162 "Avatar": "",
163 "Name": "",
164 "Email": "",
165 "TeamId": 0,
166 "Phone": "",
167 "GlobalKey": "",
168 "TeamGlobalKey": ""
169 },
170 "IssueStatusType": "",
171 "IssueTypeDetail": {
172 "Id": 0,
173 "Name": "",
174 "IssueType": "",
175 "Description": "",
176 "IsSystem": false
177 }
178 },
179 "Project": {
180 "Id": 3,
181 "CreatedAt": 0,
182 "UpdatedAt": 0,
183 "Status": 0,
184 "Type": 0,
185 "MaxMember": 0,
186 "Name": "xjx-classic",
187 "DisplayName": "经典项目",
188 "Description": "",
189 "Icon": "/static/project_icon/scenery-version-2-3.svg",
190 "TeamOwnerId": 0,
191 "UserOwnerId": 0,
192 "StartDate": 0,
193 "EndDate": 0,
194 "TeamId": 0,
195 "IsDemo": false,
196 "Archived": false,
197 "ProgramIds": []
198 },
199 "IssueStatus": {
200 "Id": 1,
201 "Index": 0,
202 "Name": "待处理",
203 "Type": "TODO",
204 "Description": "",
205 "IsSystem": false,
206 "CreatedAt": 0,
207 "UpdatedAt": 0
208 },
209 "Epic": {
210 "Code": 0,
211 "Type": "",
212 "Name": "",
213 "IssueStatusId": 0,
214 "IssueStatusName": "",
215 "Priority": "",
216 "Assignee": {
217 "Id": 0,
218 "Status": 0,
219 "Avatar": "",
220 "Name": "",
221 "Email": "",
222 "TeamId": 0,
223 "Phone": "",
224 "GlobalKey": "",
225 "TeamGlobalKey": ""
226 }
227 },
228 "SubTasks": [],
229 "Assignee": {
230 "Id": 2,
231 "Status": 1,
232 "Avatar": "/static/fruit_avatar/Fruit-20.png",
233 "Name": "coding",
234 "Email": "",
235 "TeamId": 0,
236 "Phone": "",
237 "GlobalKey": "coding-coding",
238 "TeamGlobalKey": ""
239 },
240 "ChildCount": 0,
241 "ChildCompletedCount": 0,
242 "Creator": {
243 "Id": 0,
244 "Status": 0,
245 "Avatar": "",
246 "Name": "",
247 "Email": "",
248 "TeamId": 0,
249 "Phone": "",
250 "GlobalKey": "",
251 "TeamGlobalKey": ""
252 },
253 "CreatedAt": 1673609695000,
254 "UpdatedAt": 1675151976000,
255 "Iteration": {
256 "Code": 0,
257 "Name": "",
258 "Status": "",
259 "Id": 0
260 }
261 }
262 ]
263 }
264 }
265}
获取事项活动日志
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueLogList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | Integer | 事项 code,即页面上看到的事项ID |
ActionType | 是 | String | 动作类型,取值包括如下: ADD CHANGE_PARENT CREATE DELETE REMOVE UPDATE 要获取更新处理人的日志,用UPDATE+ASSIGNEE,要获取更新迭代的日志,用UPDATE+ITERATION,要获取创建事项的日志,用CREATE+SELF,以此类推。 |
Target | 是 | String | 操作对象,取值包括如下: ASSIGNEE // 处理人 ATTACHMENT // 附件 CHILD_ISSUE // 子事项 CUSTOM_FIELD // 自定义属性 DEFECT_TYPE //缺陷类型 DESCRIPTION //描述 DUE_DATE //截止日期 EPIC_ISSUE //所属史诗 ISSUE_EPIC_CHANGED ISSUE_PROGRAM_RELATION ISSUE_RELATION ITERATION //迭代 LABEL //标签 MODULE //模块 NAME //名字 PARENT_ISSUE //父事项 PRIORITY //优先级 PROGRESS //进度 RELATE_DEFECT RELATE_REQUIREMENT REQUIREMENT_TYPE RESOURCE SELF START_DATE STATUS //状态 STORY_POINT //故事点 THIRD_LINK //第三方链接 WATCHER //关注人 WORKING_HOURS //工时 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
IssueList | List of IssueLog | 事项活动日志列表。 |
IssueLog
参数名称 | 类型 | 描述 |
---|---|---|
IssueId | Integer | 事项id(不是页面上的ID,是数据库中的唯一ID) |
ActionType | String | 动作类型(和输入一致) |
Target | String | 操作对象(和输入一致) |
TargetName | String | 操作对象名 |
Content | JSON字符串 | 内容,为转义后的JSON字符串 |
CreateAt | Integer | 创建时间戳 |
UpdatedAt | Integer | 更新时间戳 |
Creator | Integer | 创建人ID |
Example 1
成功示例
1{
2 "Action": "DescribeIssueLogList",
3 "ProjectName": "test",
4 "IssueCode": 1,
5 "ActionType": "UPDATE",
6 "Target": "ASSIGNEE"
7}
成功示例
1{
2 "Response": {
3 "RequestId": "98262208-e56f-4f8f-a336-177d85c466a0",
4 "issueLogList": [
5 {
6 "IssueId": 104,
7 "ActionType": "UPDATE",
8 "Target": "ASSIGNEE",
9 "TargetName": "处理人",
10 "Content": "{\"id\":0,\"global_key\":\"\",\"avatar\":\"\",\"name\":\"无\"}",
11 "CreateAt": 1675152576000,
12 "UpdatedAt": 1675152576000,
13 "Creator": 2
14 },
15 {
16 "IssueId": 104,
17 "ActionType": "UPDATE",
18 "Target": "ASSIGNEE",
19 "TargetName": "处理人",
20 "Content": "{\"id\":2,\"global_key\":\"coding-coding\",\"avatar\":\"/static/fruit_avatar/Fruit-20.png\",\"name\":\"coding\"}",
21 "CreateAt": 1675152572000,
22 "UpdatedAt": 1675152572000,
23 "Creator": 2
24 }
25 ]
26 }
27}
获取自定义属性变更历史
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIssueCustomFieldLogList |
ProjectName | 是 | String | 项目名称 |
IssueCode | 是 | String | 事项 code,即页面上看到的事项ID |
FieldName | 是 | String | 自定义属性名(和页面上看到的一样) |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
FieldChangeLogList | List of CustomFieldChangeLog | 自定义属性日志列表。 |
CustomFieldChangeLog
参数名称 | 类型 | 描述 |
---|---|---|
IssueId | Integer | 事项id(不是页面上的ID,是数据库中的唯一ID) |
ActionType | String | 动作类型 |
FieldType | String | 自定义属性类型 |
FieldName | String | 自定义属性名字 |
FieldId | Integer | 自定义属性ID |
FieldValue | String | 自定义属性的值 |
UpdatedAt | Integer | 更新时间戳 |
Creator | Integer | 创建人ID |
Example 1
成功示例
1{
2 "Action": "DescribeIssueCustomFieldLogList",
3 "ProjectName": "xjx-agile-2",
4 "IssueCode": 12,
5 "FieldName": "小数1"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "6a079ad4-1013-4e0b-849c-41ee1b1529d1",
4 "FieldChangeLogList": [
5 {
6 "IssueId": 85,
7 "ActionType": "UPDATE",
8 "FieldType": "TEXT_DECIMAL",
9 "FieldName": "小数1",
10 "FieldId": 208,
11 "FieldValue": "无",
12 "UpdatedAt": 1675152868000,
13 "Creator": 2
14 },
15 {
16 "IssueId": 85,
17 "ActionType": "UPDATE",
18 "FieldType": "TEXT_DECIMAL",
19 "FieldName": "小数1",
20 "FieldId": 208,
21 "FieldValue": "2",
22 "UpdatedAt": 1675152863000,
23 "Creator": 2
24 },
25 {
26 "IssueId": 85,
27 "ActionType": "UPDATE",
28 "FieldType": "TEXT_DECIMAL",
29 "FieldName": "小数1",
30 "FieldId": 88,
31 "FieldValue": "10",
32 "UpdatedAt": 1673773878000,
33 "Creator": 2
34 }
35 ]
36 }
37}
创建迭代
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:CreateIteration |
ProjectName | 是 | String | 项目名称 |
Name | 是 | String | 标题 |
Goal | 否 | String | 目标 |
Assignee | 否 | Integer | 处理人 ID |
StartAt | 否 | String | 开始时间,格式:2020-01-01 |
EndAt | 否 | String | 结束时间,格式:2020-01-01 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Iteration | Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
迭代信息说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "CreateIteration",
3 "ProjectName": "demo-project",
4 "Name": "Title"
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Iteration": {
5 "CreatedAt": 1599027192347,
6 "UpdatedAt": 1599027192347,
7 "Name": "TT",
8 "Code": 8,
9 "Goal": "",
10 "StartAt": -28800000,
11 "EndAt": -28800000,
12 "Assignee": 0,
13 "Creator": 1,
14 "Deleter": 0,
15 "Starter": 0,
16 "Completer": 0,
17 "Status": "WAIT_PROCESS",
18 "WaitProcessCount": 0,
19 "ProcessingCount": 0,
20 "CompletedCount": 0,
21 "CompletedPercent": 0
22 }
23 }
24}
删除迭代
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DeleteIteration |
ProjectName | 是 | String | 项目名称 |
IterationCode | 是 | Integer | 迭代编号 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
Example 1
成功示例
1{
2 "Action": "DeleteIteration",
3 "ProjectName": "demo-project",
4 "IterationCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
4 }
5}
迭代详情
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIteration |
ProjectName | 是 | String | 项目名称 |
IterationCode | 是 | Integer | 迭代编号 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Iteration | Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "DescribeIteration",
3 "ProjectName": "project-demo",
4 "IterationCode": 1
5}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Iteration": {
5 "CreatedAt": 1599027192347,
6 "UpdatedAt": 1599027192347,
7 "Name": "TT",
8 "Code": 8,
9 "Goal": "",
10 "StartAt": -28800000,
11 "EndAt": -28800000,
12 "Assignee": 0,
13 "Creator": 1,
14 "Deleter": 0,
15 "Starter": 0,
16 "Completer": 0,
17 "Status": "WAIT_PROCESS",
18 "WaitProcessCount": 0,
19 "ProcessingCount": 0,
20 "CompletedCount": 0,
21 "CompletedPercent": 0
22 }
23 }
24}
迭代列表
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DescribeIterationList |
ProjectName | 是 | String | 项目名称 |
Status | 否 | array of String | 迭代状态, WAIT_PROCESS,PROCESSING,COMPLETED |
Assignee | 否 | array of Integer | 处理人 ID 列表 |
StartDate | 否 | String | 通过开始时间过滤,时间格式:2020-12-12 |
EndDate | 否 | String | 通过结束时间过滤,时间格式:2020-12-12 |
keywords | 否 | String | 通过关键字搜索 |
Offset | 否 | Integer | 偏移量,默认 0 |
Limit | 否 | Integer | 每页数量,默认 20 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Data | Page of Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "DescribeIterationList",
3 "ProjectName": "demo-project",
4 "Status": [
5 "WAIT_PROCESS"
6 ]
7}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "data": {
5 "Page": 1,
6 "PageSize": 20,
7 "TotalPage": 1,
8 "TotalRow": 1,
9 "List": [
10 {
11 "CreatedAt": 1599027192000,
12 "UpdatedAt": 1599027192000,
13 "Name": "demo iteration",
14 "Code": 8,
15 "Goal": "",
16 "StartAt": -28800000,
17 "EndAt": -28800000,
18 "Assignee": 0,
19 "Creator": 1,
20 "Deleter": 0,
21 "Starter": 0,
22 "Completer": 0,
23 "Status": "WAIT_PROCESS",
24 "WaitProcessCount": 0,
25 "ProcessingCount": 0,
26 "CompletedCount": 0,
27 "CompletedPercent": 0
28 }
29 ]
30 }
31 }
32}
修改迭代
输入参数
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ModifyIteration |
ProjectName | 是 | String | 项目名称 |
IterationCode | 是 | Integer | 迭代编号 |
Name | 是 | String | 标题 |
Goal | 否 | String | 目标 |
Assignee | 否 | Integer | 处理人 ID |
StartAt | 否 | String | 开始时间,格式:2020-01-01,如果有传StartAt请同时传入EndAt |
EndAt | 否 | String | 结束时间,格式:2020-01-01 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Iteration | Iteration | 迭代的具体信息 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
参数说明
名称 | 类型 | 描述 |
---|---|---|
Name | String | 标题 |
Code | Integer | 迭代编号,项目内唯一 |
Goal | String | 迭代目标 |
StartAt | Integer | 开始时间,时间戳,-28800000 代表没有设置 |
EndAt | Integer | 结束时间,时间戳,-28800000 代表没有设置 |
Assignee | Integer | 处理人 ID ,为 0 代表没有设置 |
Creator | Integer | 创建人 ID |
Starter | Integer | 开始人 ID |
Completer | Integer | 完成人 ID |
Status | String | 迭代状态:WAIT_PROCESS,PROCESSING,COMPLETED |
WaitProcessCount | Integer | 迭代中待处理事项总数 |
ProcessingCount | Integer | 迭代中进行中事项总数 |
CompletedCount | Integer | 迭代中完成事项总数 |
CompletedPercent | Float | 迭代中事项完成比率 |
CreatedAt | Integer | 创建时间 |
UpdatedAt | Integer | 修改时间 |
Example 1
成功示例
1{
2 "Action": "ModifyIteration",
3 "ProjectName": "demo-project",
4 "IterationCode": 1,
5 "Name": "Title"
6}
成功示例
1{
2 "Response": {
3 "RequestId": "1",
4 "Iteration": {
5 "CreatedAt": 1599027192347,