工具链同步信息接口规格说明
本章节介绍开发中心工具链相关接口规格说明,可以参考对应的接口规格来实现具体的接口,并将接口配置在开发中心工具链集成页面,实现数据同步集成。
同步集成接口规格
参考如下接口规格实现接口并配置工具链同步集成,可以将开发中心中的数据(租户、产品、服务、微服务、版本)以及版本发布成功信息同步给配置的第三方系统。
租户信息同步接口URI:POST /sync/v1/tenant/produceAPI/tenantSync
请求Body参数:
{ "instanceId": "hua********23456", #实例ID "orderId": "CS1906666666ABCDE", #订单号 "tenantId": "68cbc86****************880d92f36422fa0e", #租户ID "tenantCode": "huawei", #租户标识 "name": "huaweitest", #租户名称 "domainName": "https://example.tenantaccount.com", #域名 "flag": 1, #0:删除,1:新增,2:修改 "testFlag": 0, #0:生产正式数据,1:调测数据 "timeStamp": "20220413093539534", #时间戳 }
租户应用信息同步接口URI:POST /sync/v1/tenant/produceAPI/applicationSync
请求Body参数:
{ "instanceId": "hua********23456", #实例ID "appId": "KSIDJF1234456", #应用的ID "tenantId": "68cbc8*********b880d92f36422fa0e", #租户ID "clientId": " bc20*******880d92f3", #客户端id "clientSecret":"DSDT*******ECDD#$^#", #客户端secret "flag": 1, #0:删除,1:新增,2:修改 "testFlag": 0, #0:生产正式数据,1:调测数据 "timeStamp": "20220413093539534", #时间戳 }
租户应用授权信息同步接口URI:POST /sync/v1/tenant/produceAPI/authSync
请求Body参数:
{ "instanceId": "hua********23456", #实例ID "tenantId": "68cbc86ab******92f36422fa0e", #租户ID "appId": "KSID******34456", #应用的ID "userList": "[{ userName:"zhangsan01",name:"张三",position:"系统管理员",orgCode:"123456789",role:"admin" enable:"true"},{ userName:"lisi",name:"李四",position:"用户",orgCode:"123456789",role:"user" enable:"true"},]", #授权用户信息,包含userName:账号名、name:姓名、position:职位、orgCode:部门、role:角色(user-普通用户,admin-管理员)、enable:账号状态(true-启用,false-禁用) "currentSyncTime": "20220413093539534", #时间戳 "flag": 1, #0:删除,1:新增,2:修改 "testFlag": 0, #0:生产正式数据,1:调测数据 "timeStamp": "20220413093539534", #时间戳 }
组织部门信息同步(增量)接口URI:POST /sync/v1/tenant/produceAPI/singleOrgSync
请求Body参数:
{ "instanceId": "hua********23456", #实例ID "tenantId": "68cbc********0d92f36422fa0e", #租户ID "orgCode": "10000", #部门代码 "orgName": "开发部", #部门名称 "parentCode": "", #上级部门的orgCode,如果是顶层部门,这个值为空 "flag": 1, #0:删除,1:新增,2:修改 "testFlag": 0, #0:生产正式数据,1:调测数据 "timeStamp": "20220413093539534", #时间戳 }
组织部门信息同步(全量)接口URI:POST /sync/v1/tenant/produceAPI/allOrgSync
请求Body参数:
{ "instanceId": "hua******t123456", #实例ID "tenantId": "68cbc8******b880d92f36422fa0e", #租户ID "orgInfo": "[{orgCode:"00000001", name:"产品部", parentCode:"265789314" },{orgCode:"00000002", name:"测试部", parentCode:"265789314" }]", #组织内部门层级信息,包含部门代码、部门名称、上级部门Code "flag": 1, #0:删除,1:新增,2:修改 "testFlag": 0, #0:生产正式数据,1:调测数据 "timeStamp": "20220413093539534", #时间戳 }
响应示例:
{ "resultCode": "000000", "resultMsg": "Success" }
接口URI:POST /sync/v1/product
请求Body参数:
{ "product": { "product_id": "string", #产品标识 "dept_id": "string", #产品关联的部门标识 "product_name": "string", #产品名称 "product_code": "string", #产品编码(产品英文名) "status": "string" #状态 }, "op_type": "add", #操作类型,add新增、modify修改、delete删除 "time_stamp": "string" #时间戳 }
响应示例:
{ "resultCode": "000000", "resultMsg": "Success" }
接口URI:POST /sync/v1/service
请求Body参数:
{ "service": { "service_id": "string", #产品标识 "dept_id": "string", #归属的的部门标识 "product_id": "string", #归属的产品标识 "service_name": "", #服务名称 "service_code": "", #服务编码(服务英文名) "status": "string" #状态 }, "op_type": "add", #操作类型,add新增、modify修改、delete删除 "time_stamp": "string" #时间戳 }
响应示例:
{ "resultCode": "000000", "resultMsg": "Success" }
接口URI:POST /sync/v1/micservice
请求Body参数:
{ "micservice": { "micservice_id": "string", #微服务标识 "product_id": "string", #归属的产品标识 "service_id": "string", #归属的服务标识 "dept_id": "string", #归属的的部门标识 "micservice_name": "", #微服务名称 "micservice_code": "", #微服务编码(微服务英文名) "status": "string" #状态 }, "op_type": "add", #操作类型,add新增、modify修改、delete删除 "time_stamp": "string" #时间戳 }
响应示例:
{ "resultCode": "000000", "resultMsg": "Success" }
接口URI:POST /sync/v1/version
请求Body参数:
{ "version": { "version_id": "string", #版本标识 "service_id": "string", #归属的服务标识 "product_id": "string", #归属的产品标识 "dept_id": "string", #归属的部门标识 "version_name": "string", #版本名称 "status": "string", #状态 "begin_date": "2024-09-25", #计划开始日期 "end_date": "2024-09-25" #计划完成日期 }, "op_type": "add", #操作类型,add新增、modify修改、delete删除 "time_stamp": "string" #时间戳 }
响应示例:
{ "resultCode": "000000", "resultMsg": "Success" }
接口URI:POST /release/v1/notify
请求Body参数:
{ "service_id": "string", #服务标识 "version_id": "string", #服务标识 "release_type": "string", #发布类型 "release_time": "2024-10-10T11:34:40.531Z", #发布时间 "artifacts": [ #发布制品列表 { "build_no": "1", #构建任务编号 "name": "javaMavenDemo-1.0.jar", #制品名称 "file_size": "2.18KB", #制品大小 "hash_code": [ #哈希码 { "hash_type": "SHA256", #哈希算法 "hash_value": "0fce55424a0514443f0bd612dcb25abb8de9f06572a2050ba8c6483352d5c5bd" #哈希值 } ], "upload_target": "artifact", #存放平台类型 "upload_location": "string", #存放位置:SWR的组织/OBS桶/服务名 "artifact_uri": "/Build-TestBuildCheck-749/20240311.1/" #制品路径 } ] }
需求类接口规格
参考如下接口规格实现需求类接口并配置工具链接口集成,可以将第三方系统的接口数据集成到开发中心。
接口URI:GET /req/v1/statistic
Query参数:service_id #服务标识
version_id #版本标识
响应示例:
{ "closed_num": 1, #已关闭数量 "new_num": 1, #新建的数量 "process_num": 1, #开发中的数量 "rejected_num": 1, #已拒绝数量 "solved_num": 7, #已解决数量 "test_num": 1, #测试中的数量 "total": 12 #总数量 }
接口URI:POST /req/v1/list
请求Body参数:
{ "service_id": "28f61af50fc9452aa0ed5ea25c3cc3d3", #服务标识 "version_name": "MyDemo", #版本标识 "req_id": "this is a demo", #需求编号 "req_type": "string", #需求类型 "req_title": "string", #需求标题 "current_handler": "string", #当前处理人 "status": "string", #需求状态 "limit": "string", #每页数量,最小值:1, 最大值:100 "offset": "string" #偏移量,offset是limit的整数倍数,limit=10,offset=0,10,20...,最小值:0 }
响应示例:
{ "data": [ #需求信息列表 { "req_id": "7894", #需求编号 "current_handler": "张三", #当前处理人 "create_time": "2020-09-13 14:40:11", #创建时间 "create_user": "张三", #创建人 "expectedEndTime": "2020-09-14", #计划完成时间 "req_title": "MOCK需求数据", #需求标题 "priority": "1", #优先级 "severity": "10", #严重程度 "status": "5", #需求状态 "req_type": "7", #需求类型 "req_description": "需求描述", #需求内容描述 "version_name": "111" #归属版本 } ], "total": 1 #总数量 }
接口URI:POST /req/v1/create
请求Body参数:
{ "req_title": "新需求", #需求标题 "req_type": "7", #需求类型 "version_name": "3.3.3.3", #归属版本 "req_description": "需求描述", #需求内容描述 "expected_end_time": "2024-09-13", #计划完成时间 "current_handler": "张三", #当前处理人 "create_user": "李四", #创建人 "create_time": "2024-09-13 10:00:00" #创建时间 }
响应示例:
{ "req_id": "28f61af50fc9452aa0ed5ea25c3cc3d3", #需求编号 "req_type": "7", #需求类型 "req_title": "新需求", #需求标题 "version_name": "3.3.3.3", #归属版本 "status": "1", #需求状态 "req_description": "需求描述", #需求内容描述 "expected_end_time": "2024-09-13", #计划完成时间 "current_handler": "张三", #当前处理人 "create_user": "李四", #创建人 "create_time": "2024-09-13 10:00:00" #创建时间 }
接口URI:GET /req/v1/detail/{req_id}
路径参数:req_id #需求ID
响应示例:
{ "req_id": "28f61af50fc9452aa0ed5ea25c3cc3d3", #需求编号 "req_type": "7", #需求类型 "req_title": "需求", #需求标题 "version_name": "5.5.5.5", #归属版本 "status": "1", #需求状态 "req_description": "需求描述", #需求内容描述 "expected_end_time": "2024-09-13", #计划完成时间 "current_handler": "张三", #当前处理人 "create_user": "李四", #创建人 "create_time": "2024-09-13 08:50:52" #创建时间 }
接口URI:POST /req/v1/update
请求Body参数:
{ "issue_item_id": "string", "service_id": "string", #服务标识 "version_name": "string" #归属版本 }
缺陷类接口规格
参考如下接口规格实现缺陷类接口并配置工具链接口集成,可以将第三方系统的缺陷数据集成到开发中心。
接口URI:GET /defect/v1/statistic
Query参数:service_id #服务标识
version_id #版本标识
响应示例:
{ "critical_num": 1, #致命问题数 "defect_index": 1, #DI值 "normal_num": 3, #一般问题数 "serious_num": 2, #严重问题数 "tip_num": 1, #提示问题数 "total": 7 #总数 }
接口URI:POST /defect/v1/list
请求Body参数:
{ "offset": 0, #偏移量,offset是limit的整数倍数,limit=10,offset=0,10,20...,最小值:0 "limit": 10, #每页数量,最小值:1, 最大值:100 "service_id": "28f61af50fc9452aa0ed5ea25c3cc3d3", #服务标识 "defect_title": "标题", #缺陷标题 "version_name": "1.1.1.1", #版本标识 "current_handler": "张三", #当前处理人 "status": [ #缺陷状态 "1", "2" ], "defect_id": [ #缺陷编号 "123456", "123457" ] }
响应示例:
{ "data": [ { "defect_id": "7894", #缺陷编号 "current_handler": "张三", #当前处理人 "created_time": "2020-09-13 14:40:11",#创建时间 "createUser": "张三", #创建人 "expectedEndTime": "2020-09-14", #计划完成时间 "defect_title": "MOCK缺陷数据", #缺陷标题 "priority": "1", #优先级 "severity": "10", #严重程度 "status": "5", #需求状态 "defect_description": "缺陷描述", #缺陷内容描述 "version_name": "111" #归属版本 } ], "total": 1 #总数量 }
接口URI:POST /defect/v1/create
请求Body参数:
{ "defect_title": "缺陷标题", #缺陷标题 "version_name": "6.6.6.6", #归属版本 "defect_description": "缺陷描述", #缺陷内容描述 "expected_end_time": "2024-09-13", #计划完成时间 "current_handler": "张三", #当前处理人 "create_user": "李四", #创建人 "create_time": "2024-09-13 08:53:50" #创建时间 }
响应示例:
{ "defect_id": "28f61af50fc9452aa0ed5ea25c3cc3d3", #缺陷编号 "defect_title": "缺陷标题", #缺陷标题 "version_name": "6.6.6.6", #缺陷标题 "priority": "1", #优先级 "severity": "10", #严重程度 "status": "1", #缺陷状态 "defect_description": "缺陷描述", #缺陷内容描述 "expected_end_time": "2024-09-13", #计划完成时间 "current_handler": "张三", #当前处理人 "create_user": "李四", #创建人 "create_time": "2024-09-13 08:53:50" #创建时间 }
接口URI:GET /defect/v1/detail/{defect_id}
路径参数:defect_id #缺陷标识
响应示例:
{ "defect_id": "28f61af50fc9452aa0ed5ea25c3cc3d3", #缺陷编号 "defect_title": "缺陷标题", #缺陷标题 "version_name": "9.9.9.9", #归属版本 "status": "1", #缺陷状态 "defect_description": "缺陷描述", #缺陷内容描述 "expected_end_time": "2024-09-13", #计划完成时间 "current_handler": "张三", #当前处理人 "priority": "1", #优先级 "severity": "10", #严重程度 "create_user": "李四", #创建人 "create_time": "2024-09-13 08:50:52" #创建时间 }
流水线类接口规格
参考如下接口规格实现流水线类接口并配置工具链接口集成,可以将第三方系统的流水线数据集成到开发中心。
接口URI:POST /pipeline/v1/run/{pipeline_id}
路径参数:pipeline_id #流水线标识
Query参数:service_id #服务标识
version_id #版本标识
请求Body参数:
{ "variables": { #启动参数 "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" } }
响应示例:
{ "pipeline_run_id" : "ad6b7f66283a45be9c1f82b06c831e59" #流水线运行实例ID }
接口URI:POST /pipeline/v1/stop/{pipeline_id}/{pipeline_run_id}
路径参数:pipeline_id #流水线标识
pipeline_run_id #流水线运行实例标识
Query参数:service_id #服务标识
version_id #版本标识
响应示例:
{ "success" : true }
接口URI:GET /pipeline/v1/instance/{pipeline_id}/{pipeline_run_id}/detail
路径参数:pipeline_id #流水线标识
pipeline_run_id #流水线运行实例标识
Query参数:service_id #服务标识
version_id #版本标识
响应示例:
{ "pipeline_id": "string", #流水线ID "pipeline_name": "string", #流水线名称 "executor_id": "string", #执行人ID "executor_name": "string", #执行人名称 "status": "COMPLETED", #状态,COMPLETED:已完成,RUNNING:运行中,FAILED:失败,CANCELED:取消,PAUSED:暂停,SUSPEND:挂起,IGNORED:忽略 "trigger_type": "Manual", #触发类型,Manual:手动触发,Scheduler:定时任务触发,RollBack:回滚执行。WebHook类型,CreateTag:Tag 触发,Note:Gitee仓库评论触发,Issue:Gitee 仓库Issue触发,MR:合并请求触发,Push:代码push触发 "start_time": 0, #开始时间 "end_time": 0, #结束时间 "sources": { "repo_name": "aaaaa", #仓库名称 "target_branch": "master" #分支 } }
接口URI:GET /pipeline/v1/detail/{pipeline_id}
路径参数:pipeline_id #流水线标识
Query参数:service_id #服务标识
version_id #版本标识
响应示例:
{ "pipeline_id": "9777b6f14dca47ab8e411512b8301698", #流水线标识 "pipeline_name": "Mock数据" #流水线名称 }
接口URI:GET /pipeline/v1/instance/{pipeline_id}/{pipeline_run_id}/artifacts
路径参数:pipeline_id #流水线标识
pipeline_run_id #流水线运行实例标识
Query参数:service_id #服务标识
version_id #版本标识
响应示例:
{ "data": [ { "build_no": "1", #构建任务编号 "name": "javaMavenDemo-1.0.jar", #制品名称 "file_size": "2.18KB", #制品大小 "hash_code": [ #哈希码 { "hash_type": "SHA256", #哈希算法 "hash_value": "0fce55424a0514443f0bd612dcb25abb8de9f06572a2050ba8c6483352d5c5bd" #哈希值 } ], "upload_target": "artifact", #存放平台类型 "upload_location": "string", #存放位置:SWR的组织/OBS桶/服务名 "artifact_uri": "/Build-TestBuildCheck-749/20240311.1/" #制品路径 } ] }
接口URI:POST /pipeline/v1/list
Query参数:service_id #服务标识
version_id #版本标识
请求Body参数:
{ "offset": 0, #偏移量,offset是limit的整数倍数,limit=10,offset=0,10,20...,最小值:0 "limit": 10, #每页数量,最小值:1, 最大值:100 }
响应示例:
{ "data": [ { "pipeline_id": "string", #流水线ID "pipeline_name": "string", #流水线名称 "latest_run": { "executor_id": "3fc4481d0e8ec8dd94800a7931b15714ef47728b", "executor_name": "XXX", "stage_status_list": [ { "name": "Declarative: Tool Install", "sequence": 6, "status": "COMPLETED", "start_time": "2024-09-02 16:22:04", "end_time": "2024-09-02 16:22:04" } ], "status": "COMPLETED", #状态,COMPLETED:已完成,RUNNING:运行中,FAILED:失败,CANCELED:取消,PAUSED:暂停,SUSPEND:挂起,IGNORED:忽略 "trigger_type": "Manual", #触发类型,Manual:手动触发,Scheduler:定时任务触发,RollBack:回滚执行。WebHook类型,CreateTag:Tag 触发,Note:仓库评论触发,Issue:仓库Issue触发,MR:合并请求触发,Push:代码push触发 "build_params": { "target_branch": "master", #分支 "repo_id": "x03/JenkinsAdapter", #仓库ID "git_url": "https://codehub-dg-g.huawei.com/x03/JenkinsAdapter.git", #扫描的代码仓地址 "commit_id": "string" }, "start_time": 1725265323466, #开始时间 "end_time": 1725265332313 #结束时间 } } ], "total": 1 #总数 }
接口URI:POST /pipeline/v1/recent-run
Query参数:service_id #服务标识
version_id #版本标识
请求Body参数:
{ "offset": 0, #偏移量,offset是limit的整数倍数,limit=10,offset=0,10,20...,最小值:0 "limit": 10, #每页数量,最小值:1, 最大值:100 }
响应示例:
{ "data": [ { "pipeline_id": "string", #流水线ID "pipeline_name": "string", #流水线名称 "latest_run": { "executor_id": "3fc4481d0e8ec8dd94800a7931b15714ef47728b", "executor_name": "XXX", "stage_status_list": [ { "name": "Declarative: Tool Install", "sequence": 6, "status": "COMPLETED", #状态,COMPLETED:已完成,RUNNING:运行中,FAILED:失败,CANCELED:取消,PAUSED:暂停,SUSPEND:挂起,IGNORED:忽略 "start_time": "2024-09-02 16:22:04", "end_time": "2024-09-02 16:22:04" } ], "status": "COMPLETED", #状态,COMPLETED:已完成,RUNNING:运行中,FAILED:失败,CANCELED:取消,PAUSED:暂停,SUSPEND:挂起,IGNORED:忽略 "trigger_type": "Manual", #触发类型,Manual:手动触发,Scheduler:定时任务触发,RollBack:回滚执行。WebHook类型,CreateTag:Tag 触发,Note:仓库评论触发,Issue:仓库Issue触发,MR:合并请求触发,Push:代码push触发 "build_params": { "target_branch": "master", #分支 "repo_id": "x03/JenkinsAdapter", #仓库ID "git_url": "https://codehub-dg-g.huawei.com/x03/JenkinsAdapter.git", #扫描的代码仓地址 "commit_id": "string" }, "start_time": 1725265323466, #开始时间 "end_time": 1725265332313 #结束时间 } } ], "total": 1 #总数 }
代码检查类接口规格
参考如下接口规格实现代码检查类接口并配置工具链接口集成,可以将第三方系统的代码检查数据集成到开发中心。
接口URI:GET /pipeline/v1/instance/{pipeline_id}/{pipeline_run_id}/code-check
路径参数:pipeline_id #流水线标识
pipeline_run_id #流水线运行实例标识
Query参数:service_id #服务标识
version_id #版本标识
响应示例:
{ "check_task_id": "28f61af50fc9452aa0ed5ea25c3cc3d3", #代码检查任务标识 }
接口URI:GET /code-check/v1/summary/{check_task_id}
路径参数:check_task_id #代码检查任务标识
Query参数:service_id #服务标识
version_id #版本标识
响应示例:
{ "git_url": "string", #扫描的代码仓地址 "git_branch": "string", #扫描的代码仓分支 "task_name": "string", #代码检查的任务名称 "last_check_time": "string", #最后检查时间 "is_access": true, #是否通过 "critical_count": "string", #致命问题个数 "major_count": "string", #严重问题个数 "minor_count": "string", #一般问题个数 "suggestion_count": "string", #建议问题个数 "cyclomatic_complexity_per_method": "string", #平均圈复杂度 "maximum_cyclomatic_complexity": "string", #最大圈复杂度 "code_duplication_ratio": "string" #代码重复率 }
代码仓类接口规格
参考如下接口规格实现代码仓类接口并配置工具链接口集成,可以将第三方系统的代码仓数据集成到开发中心。
接口URI:POST /repo/v1/list
请求Body参数:
{ "limit": 10, #每页数量,最小值:1, 最大值:100 "offset": 0, #偏移量,offset是limit的整数倍数,limit=10,offset=0,10,20...,最小值:0 "search": "string" #代码仓名称,模糊搜索 }
响应示例:
{ "data": [ #仓库信息列表 { "repo_id": "string", #仓库ID "repo_name": "string", #仓库名称 "status": "string", #仓库状态,0:仓库正常创建成功,1:仓库创建中,2:创建失败,3:仓库冻结,4:仓库已经关闭 "https_url": "string", #使用HTTPS克隆仓库时所使用的URL "ssh_url": "string", #使用SSH方式克隆仓库时所使用的URL "web_url": "string", #WEB URL路径,访问它将跳转至仓库详情页 "create_name": "string", #创建者 "update_time": "string", #更新时间 "create_time": "string", #创建时间 "description": "string" #描述 } ], "total": "string" #总数量 }
接口URI:GET /repo/v1/repo/{repo_id}
路径参数:repo_id #代码仓标识
响应示例:
{ "repo_id": "string", #仓库ID "repo_name": "string", #仓库名称 "status": "string", #仓库状态,0:仓库正常创建成功,1:仓库创建中,2:创建失败,3:仓库冻结,4:仓库已经关闭 "https_url": "string", #使用HTTPS克隆仓库时所使用的URL "ssh_url": "string", #使用SSH方式克隆仓库时所使用的URL "web_url": "string", #WEB URL路径,访问它将跳转至仓库详情页 "create_name": "string", #创建者 "update_time": "string", #更新时间 "create_time": "string", #创建时间 "description": "string" #描述 }
接口URI:POST /repo/v1/create
请求Body参数:
{ "repo_name": "string", #仓库名称 "description": "string", #仓库描述 "service_id": "string" #仓库所属服务 }
响应示例:
{ "repo_id": "string", #仓库ID "repo_name": "string", #仓库名称 "status": "string", #仓库状态,0:仓库正常创建成功,1:仓库创建中,2:创建失败,3:仓库冻结,4:仓库已经关闭 "https_url": "string", #使用HTTPS克隆仓库时所使用的URL "ssh_url": "string", #使用SSH方式克隆仓库时所使用的URL "web_url": "string", #WEB URL路径,访问它将跳转至仓库详情页 "create_name": "string", #创建者 "update_time": "string", #更新时间 "create_time": "string", #创建时间 "description": "string" #描述 }
版本活动类接口规格
参考如下接口规格实现版本活动类接口并配置工具链接口集成,可以将第三方系统的版本活动数据集成到开发中心。
接口URI:GET /activity/v1/status/{service_id}/{version_id}/{activity_code}
路径参数:activity_code #版本活动编码
service_id #服务标识
version_id #版本标识
响应示例:
{ "status": "init" #状态,init:未开始,inProgress:进行中, abnormal:异常/告警,completed:已完成/已关闭 }
接口URI:GET /activity/v1/check/{service_id}/{version_id}/{activity_code}/{release_type}
路径参数:activity_code #版本活动编码
service_id #服务标识
version_id #版本标识
release_type #发布类型,standard:标准发布,test:调测发布
响应示例:
{ "check_result": true, #检查结果,true:通过,false:不通过 "check_rule": "string", #检查规则 "result_desc": "string" #检查结果描述 }