18 KiB
研发云互联互通规范能力开放技术规范(OpenAPI 接口)(试行稿)
脱敏整理版:已移除编制人员、联系人和联系方式,并合并无意义硬换行。技术条款、章节和示例以原始 DOCX 为争议核验依据。
研发云互联互通规范
能力开放技术规范(OpenAPI 接口)
中国电信股份有限公司研究院研发云平台运营中心
2025 年 5 月
1
2
编制人员信息已移除。
版本变更历史
5
1 文档说明
1.1 编制说明
本规范服务对象为中国电信集团及下属各级单位
1.2 适用范围
中国电信集团范围内,其中 3.15 章节介绍的组件广场的内容仅对原子能力平台开放;3.17 章节介绍的制品中心、3.18 章节介绍的资源中心和 3.19 章节介绍的部署中心(Ⅱ) 的内容仅对 aPaaS 开放
1.3 起草单位
中国电信股份有限公司研究院-研发云平台运营中心
1.4 解释权
中国电信股份有限公司研究院-研发云平台运营中心
1.5 版权
中国电信股份有限公司研究院-研发云平台运营中心
1.6 名词解释
1
2 概述
在调用研发云能力开放接口时,根据不同接口,存在两种不同的认证鉴权方式:
1)平台级别的认证鉴权。使用预先申请的“外部用户账号”作为接口鉴权实体。
2)用户级别的认证鉴权。使用当前登录用户的授权信息去访问相关资源。
其中用户管理、安全中心、版本中心、部署中心(部分,即 3.4 中展示的接口)、测试中心、代码库、流水线、敏捷管理、文档空间、问需管理、我的工作、 Wiki、自研工作项、数据中台、组件广场、Codefree 采用平台级别的认证鉴权机制。制品中心、资源中心、部署中心(部分,即 3.19 中展示的接口)采用用户级别的认证鉴权机制。
2.1 平台级别的认证鉴权
研发云应用能力开放使用者,一般基于其自身的第三方平台的使用需要,向研发云申请外部用户账号。第三方平台应该根据其自身用户的服务范围确定所需要使用的研发云外部用户账号。由于外部用户账号是跟机构关联,因此,如果第三方平台自身的业务也是跟组织机构相关的话,应该为其服务的不同机构申请不同的外部用户账号。这就是说,第三方平台应该具备多个外部用户账号的管理能力,并且根据每个对话所服务的对象不同而选择正确的外部用户账号作为接口调用的鉴权参数。研发云应用能力调用的 host 地址为:https://www.srdcloud.cn
2.1.1 账号与鉴权
能力开放专区首页、详情页申请使用能力入口,选择应用能力,用户可以填写应用能力使用申请单。申请提交后,研发云管理员将发起账号需求进一步沟通并对申请进行审批。审批通过后,研发云管理员将在后台开通好外部用户账号并通过邮件通知申请人。2
2.1.2 外部用户账号项目权限
有部分应用能力接口,如项目/用户管理、文档搜索等接口,是以项目为单位进行授权的。每个外部用户账号都是挂靠到一个组织机构下的,对于所属的组织结构以及子机构下的项目访问权,有两种类型:● 按机构默认授权:外部用户账号拥有所属机构及子机构下所有项目的访问权,包括已有和新增项目;● 按项目单独授权:外部用户账号需要被授权了的(账号所属机构下的)项目才有访问权;由于对项目的操作需要企业管理员权限,因此外部用户账号需要关联一个企业管理员账号,所管理的企业管理员账号为匿名账号,在账号开通申请时提供。外部用户账号属于上述哪种类型,需要该账号的使用客户单位和研发云联系人线下沟通,由系统管理员在后台设定。
2.1.3 外部用户账号资产权限
在一些应用的开放能力中,涉及到需要对项目中的资产进行操作,在这种场景下,需要对外部用户账号进行项目资产管理授权。外部用户账号对一个项目资产的访问权限,是通过其关联的实名账号约束的,且要求与外部用户账号管理具有目标项目的项目管理员角色。举个例子,如果一个第三方平台需要针对项目 A 调用流水线创建接口,流水线是项目资产,因此该第三方平台调用流水线创建接口所使用的外部用户账号,所绑定的实名账号,必须得是项目 A 的项目管理员。调用接口创建的流水线,创建者显示的为外部用户账号关联的实名账号。
2.1.4 外部用户账号鉴权
第三方平台在调用研发云应用能力接口时,需要携带外部用户账号鉴权信息,鉴权信息的格式如下:3
上 表 中 , authorization 字 段 是 对 {srdcloud-user-account },{time- stamp},{secret}字串进行 SHA256 加密后,再进行 Base64 处理后得到的字串。注意 srdcloud-user-account、time-stamp 和 secret 三个字段值之间需要采用“, ”号隔开。srdcloud-user-account, secret 值由研发云分配提供,每个外部账号都有其专用的 secret 值。time-stamp 值由第三方进行设置。
2.1.5 第三方平台使用原则
研发云应用能力开放使用者,一般基于其自身的第三方平台的使用需要,向研发云申请外部用户账号。第三方平台应该根据其自身用户的服务范围确定所需要使用的研发云外部用户账号。由于外部用户账号是跟机构关联,因此,如果第三方平台自身的业务也是跟组织机构相关的话,应该为其服务的不同机构申请不同的外部用户账号。这就是说,第三方平台应该具备多个外部用户账号的管理能力,并且根据每个对话所服务的对象不同而选择正确的外部用户账号作为接口调用的鉴权参数。
2.2 用户级别的认证鉴权
在用户和研发云 oauth 单点登录过程中,由用户中心统一生成 auth_token并通过 id_token 返回给外部应用。调用接口时,在 header 中添加 auth_token作为鉴权参数。具体流程参考研发云互联互通规范-系统接入技术规范(用户认证和资产授权)。
3 能力开放目录
本章节将根据各 OpenAPI 归属的产品模块详述已开放的清单目录
4
3.1 用户管理
3.1.1 接口清单
3.1.2 接口文档
3.2 安全中心
3.2.1 接口清单
5
3.2.2 接口文档
3.3 版本中心
3.3.1 接口清单
3.3.2 接口文档
在线地址:版本中心能力开放接口说明
3.4 部署中心( Ⅰ )
3.4.1 接口清单
6
3.4.2 接口文档
3.5 测试中心
3.5.1 接口清单
7
3.5.2 接口文档
测试中心能力开放接口文档(v1.3.0)最新文档信息见研发云能力开放专区
3.6 代码库
8
3.6.1 接口清单
3.6.2 接口文档
3.7 流水线
3.7.1 接口清单
3.7.2 接口文档
9
3.8 敏捷管理
3.8.1 接口清单
3.8.2 接口文档
在线地址:敏捷管理(旧版工作项)能力开放接口说明
3.9 文档空间
3.9.1 接口清单
10
3.9.2 接口文档
3.10 问需管理
3.10.1 接口清单
11
3.10.2 接口文档
参见“能力开放专区-问需管理“https://www.srdcloud.cn/capopenzone/ability/detail/30/- 1/b3c8edc3cf908763e198f037febda126?projectVersionId=650
3.11 我的工作
3.11.1 接口清单
3.11.2 接口文档
在线地址:我的工作能力开放接口说明12
3.12 Wiki
3.12.1 接口清单
3.12.2 接口文档
3.13 自研工作项
3.11.1 接口清单
13
3.11.2 接口文档
在线地址:自研工作项能力开放接口说明
3.14 数据中台
3.14.1 接口清单
3.14.2 接口文档
3.15 组件广场
3.15.1 接口清单
14
3.15.2 接口文档
3.16 codefree
3.16.1 接口清单
3.16.2 接口文档
https://www.srdcloud.cn/helpcenter/content?id=1295409758673600512
15
3.17 制品中心
3.17.1 接口清单
3.17.2 接口文档
(1)查询项目制品库列表
接口说明查询项目中当前用户有权限的制品库列表
是否支持项目外多项目授权:否接口方法GET接口地址https://test.srdcloud.cn/api/artifactbackend/outer/artifactRepo/v1/artifactRep
os消息头域auth-token:****** // 参考 1.用户中心鉴权功能消息体
16
返回响应
17
ArtifactRepoVO 结构说明:
18
(2) 获取制品列表(镜像树)
接口说明查询指定制品库和路径下包含的镜像树。
是否支持项目外多项目授权:是接口方法GET接口地址https://test.srdcloud.cn/api/artifactbackend/outer/artifactmanager/v1/image/ names/tree消息头域auth-token:****** // 参考 1.用户中心鉴权功能19
消息体
返回响应
ImageNamesTreeVO 结构说明:
ImageNameNodeVO 结构说明:
20
(3)查制品库包含的镜像目录
接口说明列举当前 Docker 制品库包含的镜像目录以及当前制品库要同步的远程库。
是否支持项目外多项目授权:是接口方法GET接口地址https://test.srdcloud.cn/api/artifactbackend/outer/artifactmanager/v1/docker/ catalog消息头域auth-token:****** // 参考 1.用户中心鉴权功能消息体返回响应
21
DockerImagesVO 结构说明:
SynchronizeRepoKeyRegistryVO 结构说明
22
(4)查询部署制品
接口说明查询部署制品,用于查询 docker、generic 和 helm 类型的制品,返回结果是一个列表,支持拼成一颗树形。是否支持项目外多项目授权:否接口方法GET接口地址https://test.srdcloud.cn/api/artifactbackend/outer/artifactmanager/v1/search/ deploy/artifacts消息头域auth-token:****** // 参考 1.用户中心鉴权功能
消息体
23
返回响应
DeployArtifactVO 结构说明:
(5)获取制品下载地址
接口说明获取制品的下载链接。
是否支持项目外多项目授权:是接口方法24
GET接口地址https://test.srdcloud.cn/api/artifactbackend/outer/artifactmanager/v1/artifact
Url/{repoKey}消息头域auth-token:****** // 参考 1.用户中心鉴权功能
消息体
返回响应
UrlDTO 结构说明:
25
(6) 列举镜像目录包含的所有镜像 tag
接口说明列举镜像目录包含的所有镜像 tag
是否支持项目外多项目授权:是接口方法GET接口地址https://test.srdcloud.cn/api/artifactbackend/outer/artifactmanager/v1/docker/ tags/list消息头域auth-token:****** // 参考 1.用户中心鉴权功能
消息体
26
返回响应
DockerImagesTagsVO 结构说明:
DockerImagesTagVO 结构说明:
27
(7) 获取镜像同步状态
接口说明获取镜像同步状态
是否支持项目外多项目授权:是接口方法GET接口地址https://test.srdcloud.cn/api/artifactbackend/outer/batch/v1/synchronize/statu
s消息头域auth-token:****** // 参考 1.用户中心鉴权功能
消息体
28
返回响应
SynchronizeStatusVO 结构说明:
(8) 设置元数据
接口说明设置制品的元数据
是否支持项目外多项目授权:是接口方法PUT
29
接口地址https://test.srdcloud.cn/api/artifactbackend/outer/artifactmanager/v1/properti
es消息头域auth-token:****** // 参考 1.用户中心鉴权功能消息体
30
31
返回响应
(9) 获取制品目录
接口说明获取制品目录
是否支持项目外多项目授权:是接口方法GET接口地址https://test.srdcloud.cn/api/artifactbackend/outer/artifactmanager/v1/fileList/{
repoKey}消息头域32
auth-token:****** // 参考 1.用户中心鉴权功能消息体
返回响应
FileListDTO
33
ArtifactFileDTO
(10) 获取制品的 artifactUri(中台提供的 uri)
接口说明获取制品的 artifactUri
是否支持项目外多项目授权:是接口方法GET接口地址
34
https://test.srdcloud.cn/api/artifactbackend/outer/artifactmanager/v1/artifact
Uri消息头域auth-token:****** // 参考 1.用户中心鉴权功能消息体
返回响应
35
ArtifactUriVO
3.18 资源中心
3.18.1 接口清单
3.18.2 接口文档
(1)查询有权限的 CCSE 集群
接口说明查询对应用户在项目中有管理权限的 CCSE 集群接口方法GET 36
接口地址https://test.srdcloud.cn/api/resourcebackend/project-res-ext/v1/list-ccse消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体
返回响应
Entity 结构说明
37
(2)查询 CCSE 集群下有权限的命名空间
接口说明查询对应用户在项目中有管理权限的命名空间接口方法GET接口地址https://test.srdcloud.cn/api/resourcebackend/project-res-ext/v1/list-
namespace消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体
返回响应
38
Namespace 结构说明:
(3)查询 CCSE 集群下有权限的主机标签
接口说明查询对应用户在项目中有管理权限的主机标签接口方法GET接口地址https://test.srdcloud.cn/api/resourcebackend/project-res-ext/v1/list-label消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体
39
返回响应
Label 结构说明:
(4)查询 CCSE 集群下有权限的镜像仓库
接口说明查询对应用户在项目中有管理权限的镜像仓库
40
接口方法GET接口地址https://test.srdcloud.cn/api/resourcebackend/project-res-ext/v1/list-harbor消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体
返回响应
Habor 结构说明:
41
(5)查询命名空间下的 PVC 列表
接口说明查询命名空间下的 pvc 列表接口方法GET接口地址https://test.srdcloud.cn/api/resourcebackend/namespace-ext/v1/list-pvc消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体
返回响应
42
PVC 结构说明:
(6)查询命名空间下的 Secret 列表
接口说明查询命名空间下的 Secret 列表接口方法GET接口地址https://test.srdcloud.cn/api/resourcebackend/namespace-ext/v1/list-secret消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体
返回响应
43
Secret 结构说明:
(7)查询命名空间下的 ConfigMap 列表
接口说明查询命名空间下的 ConfigMap 列表接口方法GET接口地址https://test.srdcloud.cn/api/resourcebackend/namespace-ext/v1/list- configmap消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体44
返回响应
ConfigMap 结构说明:
3.19 部署中心( 聂)
3.19.1 接口清单
45
3.19.2 接口文档
(1)新增 CCSE 集群 yaml 步骤类型的部署任务
接口说明项目用户增加集群类型为 CCSE,任务步骤为 YAML 类型的部署任务接口方法POST接口地址https://test.srdcoud.cn/api/dcbackend/srdtask/v1/ext/deploytasks消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体Node 结构说明:
46
DeployObject 结构说明:
YamlFile 结构说明:
返回响应
请求示例
请求头 header
auth-token:********
47
请求体
{
"name": "ccseyamltask",
"displayName": "ccse-yaml-任务",
"nodes": [
{
"nodeName": "步骤 1",
"serviceNodeId": "1",
"nsId": "2",
"deployObjects": [
{
"deployObjectName": "deployment1",
"files": [
{
"fileName": "deploy.yaml",
"yamlContent": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: nginx-deployment\n labels:\n app: nginx\nspec:\n replicas: 3\n
selector:\n matchLabels:\n app: nginx\n template:\n metadata:\n labels:\n app: nginx\n spec:\n containers:\n - name: nginx\n image: nginx:1.21.6\n ports:\n - containerPort: 80"48
}
]
}
]
}
]
}
响应示例
{
"optResult": 0,
"msg": "",
"id": 1
}
(2)修改 CCSE 集群 yaml 步骤类型的部署任务
接口说明项目用户修改集群类型为 CCSE,任务步骤为 YAML 类型的部署任务接口方法PUT接口地址
49
https://test.srdcoud.cn/api/dcbackend/srdtask/v1/ext/deploytasks/{id}消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体返回响应
请求示例路径参数 "id": 1
请求头 headerauth-token:********
请求体
{
"name": "ccseyamltask",
50
"displayName": "ccse-yaml-任务",
"nodes": [
{
"nodeName": "步骤 1",
"serviceNodeId": "1",
"nsId": "2",
"deployObjects": [
{
"deployObjectName": "deployment1",
"files": [
{
"fileName": "deploy.yaml",
"yamlContent": "apiVersion: apps/v1\nkind:
Deployment\nmetadata:\n name: nginx-deployment\n labels:\n app:nginx\nspec:\n replicas: 3\n selector:\n matchLabels:\n app: nginx\n template:\n metadata:\n labels:\n app: nginx\n spec:\n containers:\n - name: nginx\n image: nginx:1.21.6\n ports:\n
- containerPort: 80"
}
]
}
]
}
]
}
丶丶丶响应示例
```json
{
"optResult": 0,
"msg": "",
}
51
(3)获取 harbor 授权的 imagePullSecret
接口说明资源管理员获取 harbor 授权的 imagePullSecret接口方法GET接口地址https://test.srdcoud.cn/api/dcbackend/srdres/v1/ext/cluster/{clusterId}/names pace/{namespaceId}/harbor/{harborId}/imagePullSecret消息头域auth-token:****** //通过 oauth 获得的用户鉴权 token消息体返回响应
请求示例
路径参数52
"harborId": "1"
"clusterId": "1"
"namespaceId": "1"
请求头 header
auth-token:********
响应示例```json
{
"optResult": 0,
"msg": "",
"imagePullSecret": "*************" }
### 3.20 消息中心
#### 3.20.1 接口清单
53
#### 3.20.2 消息格式
研发云消息格式规范遵循 CloudEvents 标准,并在此基础上,对特定字段进行了约束。以下为 CloudEvent 的 JSON 数据格式说明:
data 字段包含业务数据,具有以下规定的子字段:
54
#### 3.20.3 接口文档
#### 3.20.4 对接流程
1. 接入方:确认是否有研发云“外部账号 ”,若无,请申请。外部账号需绑定“外部通用数据接入 ” 角色 。2. 接入方:由单位接口人在研发云“问需管理 ”提交数据接入需求。申请说明需提供:“组织名 ”(如 xx 组织简称)、“接入中心 ”(如部署中心),“类型 ”(如 event)以及外部账号{account}信息。3. 研发云“消息中心 ”分配消息类型(eventType):格式为:external_ {类型}. {组织}. {应用}。其中,类型有 2 种:event 为事件同步,db 为数据库同步。
55