已经升级改造成基于 openapi 格式的V2版本的 APIs 模板包括:腾讯会议、腾讯云API、腾讯云短信、腾讯云邮件、腾讯云文字识别、公众号开放服务、腾讯地图。另外,小程序开放能力、微信虚拟支付、视频号、微信小店等也在改造中,敬请期待!
背景说明
旧版 APIs,按非标准、非通用方式维护第三方服务的接口文档,需要平台耗费相当人力维护,对于用户来说,调用过程是个黑盒,不够透明;另外,当第三方业务的接口有改动时,平台维护的文档不一定能及时跟进更新,会导致接口调用出问题;此外,APIs 与密钥信息强关联,当前 APIs,当相同密钥创建多个 APIs 时,每创建一个 APIs 都需要重新输入一遍密钥信息,比较繁琐。基于以上原因,开发新版 APIs。
新版 APIs,基于通用 openapi 格式,本质上只关注授权、鉴权部分,不干预、不维护第三方服务的接口内容本身,接口的增删、接口入参传参的变动,用户自行关注即可,大大提升用户使用的灵活性、透明度,降低平台维护成本以及第三方服务接口变动附带的风险。此外,将密钥信息管理部分解耦,用户先创建需要的密钥连接信息,在创建需要的 APIs 类型时选择关联对应的密钥连接信息即可,密钥连接信息一次创建,可以在多个 APIs 重复关联使用,解耦提升了灵活性。
架构设计

详细说明
以微信小程序为例,获取微信小程序账号的类目接口的 openapi 文档如下:
{"openapi": "3.0.0","info": {"title": "微信小程序开放能力","description": "包含微信小程序接口文档","version": "1.0.0","contact": {"name": "微信开放平台","url": "https://developers.weixin.qq.com"}},"servers": [{"url": "https://api.weixin.qq.com","description": "微信API服务器"}],"paths": {"/wxaapi/newtmpl/getcategory": {"get": {"summary": "获取类目","description": "该接口用于获取小程序账号的类目","operationId": "getCategory","tags": ["订阅消息"],"responses": {"200": {"description": "成功响应","content": {"application/json": {"schema": {"type": "object","properties": {"errcode": {"type": "integer","description": "错误码"},"errmsg": {"type": "string","description": "错误信息"},"data": {"type": "array","description": "类目列表","items": {"type": "object","properties": {"id": {"type": "integer","description": "类目id,查询公共库模版时需要"},"name": {"type": "string","description": "类目的中文名"}}}}}}}}}}}}}}
创建
1. 用户在腾讯云云开发的拓展功能 > 授权管理中,新建连接,选择对应类型的信息,填写相关信息,保存,创建密钥连接信息。

2. 用户选择想要创建的 APIs 类型,选择关联对应的密钥连接信息,填写其他比如描述等字段信息,单击创建,获取 userAPIsID。

3. 新版的 APIs,会有相应的V2标识,表明是新版本的底层基于 openapi 规范的 APIs。

调用
通过 APIs 详情页测试接口
用户可以在详情页进行调试接口。
详情页展示的方法列表里面,仅展示部分接口,用户选择了对应的方法后,点击测试方法,填写相关参数,即可发起请求。
没有在方法列表里面展示的方法,用户可以通过点击“其他方法测试”,填写方法的 Path(包含 query 参数),请求 method(GET、POST、PUT、DELETE 等),填写需要的 header 信息,以及 body 参数,然后发起请求。


通过微搭低代码编辑器的表达式方式调用接口
用户可以在微搭低代码编辑器中,“代码区”区域,单击“+”,选择“新建开放 APIs 查询”。

按照指导,填写 userAPIsID,按需填写 path、method、header 信息、body 参数等,进行运行调试,如下图,其中 userAPIsID 就是创建新版的 APIs 成功后,在详情页显示的 userAPIsID。

调用过程以及腾讯云云开发网关层处理说明
不论是通过 APIs 详情页测试接口,还是通过微搭低代码编辑器的表达式方式,发起调用,平台底层会拼接出类似这样的调用 URL。
其中,{env} 是用户的环境 id,{$userAPIsID} 用户创建 APIs 后获取的 apisID,{$path} 是用户请求的具体的 path(比如获取微信小程序账号的类目的 path 是
/wxaapi/newtmpl/getcategory)。网关层处理
拼接 targetURL
用户请求打到网关层后,网关层通过 userAPIsID,获取 APIs 对应的 openapi 的 schema,解析出目标服务的 serverURL(比如微信小程序的 serverURL 是
https://api.weixin.qq.com),将 serverURL 和 path 进行拼接获取到最终请求的 targetURL(比如https://api.weixin.qq.com/wxaapi/newtmpl/getcategory),同时获取关联的密钥授权信息,将密钥授权信息拼接到请求的指定位置(query、header、body等),所有信息准备好后,网关层转发请求到目标服务,获取响应,返回响应给用户。拼接密钥授权信息
拼接密钥授权信息这一步,每种 APIs 可能不一样。
1. 比如微信类的小程序、公众号、微信虚拟支付、视频号、微信小店等,网关层会自动根据密钥信息,到微信服务器请求 access_token,请求到 access_token 后拼接到 targetURL 上,因此微信类的 APIs,用户请求接口时,入参中不需要传 access_token。
2. 比如腾讯地图、腾讯云 API,网关层会自动将 apiKey 直接拼接到指定位置,用户请求接口时不用传 apiKey 参数。
3. 比如腾讯会议,网关层会自行处理 header 参数、operator_id、operator_id_type、userid 等参数。
网关层自动处理的信息(用户不用传或者处理,网关层自动处理)
下面简单说明每个 APIs 类型,网关层自动处理的信息,具体示例,在每个 APIs 类型下详细说明。
APIs 类型 | 网关层自行处理的字段,用户不用处理相关字段 | 其他特殊字段或逻辑说明 |
小程序、公众号、视频号、微信小店 | query参数:access_token(网关层会自行根据关联的密钥对,到微信服务器获取access_token,拼接到用户请求的url参数上) | - |
微信虚拟支付 | query参数:access_token(网关层会自行根据选择的密钥对,到微信服务器获取access_token,拼接到用户请求的url参数上) 其他比如签名和加密等,如果创建 APIs 时选择了开启加密,则网关层会自行进行相关加解密和添加签名、验签等 | - |
企业微信 | query参数:access_token(网关层会自行根据关联的密钥对,到企业微信服务器获取access_token,拼接到用户请求的url参数上,无论用户创建的密钥对选择的是自定义配置填写密钥对,还是选择企业微信集成配置信息,网关层都会自行获取access_token,拼接到用户的URL参数上) | - |
腾讯地图 | query参数:网关层会自行根据关联的密钥对,将apiKey拼接到url上 | - |
腾讯云API | 网关层会自行处理公参如header参数: X-TC-TraceId、 X-Cloudbase-Request-Id、 X-Request-Id | ProductName:不是官方接口需要的字段,是 APIs 能力需要的必传字段,是因为各个云产品的接口host不一样,为了识别接口具体对应的哪个host,比如文字识别,取值ocr,取值腾讯云API的产品英文简称,比如cvm、ocr、sms、ses等,详见映射的产品列表。 Action:见各个接口文档说明 Version:每个接口的version取值见各个接口文档说明 其他参数:具体见各个接口文档说明 |
腾讯云短信 | 网关层会自行处理公参比如header参数: X-TC-TraceId、 X-Cloudbase-Request-Id、 X-Request-Id | ProductName:不是官方接口需要的字段,是 APIs 能力需要的必传字段,是因为各个云产品的接口host不一样,为了识别接口具体对应的哪个host,腾讯云短信本字段传固定值sms Action:见接口文档说明 Version:version取值见接口文档说明 其他参数:具体见接口文档说明 |
腾讯云邮件 | 网关层会自行处理公参比如header参数: X-TC-TraceId、 X-Cloudbase-Request-Id、 X-Request-Id | ProductName:不是官方接口需要的字段,是 APIs 能力需要的必传字段,是因为各个云产品的接口host不一样,为了识别接口具体对应的哪个host,腾讯云邮件本字段传固定值ses Action:见接口文档说明 Version:version取值见接口文档说明 其他参数:具体见接口文档说明 |
腾讯云文字识别 | 网关层会自行处理公参比如header参数: X-TC-TraceId、 X-Cloudbase-Request-Id、 X-Request-Id | ProductName:不是官方接口需要的字段,是 APIs 能力需要的必传字段,是因为各个云产品的接口host不一样,为了识别接口具体对应的哪个host,腾讯云文字识别本字段传固定值ocr Action:见接口文档说明 Version:version取值见接口文档说明 其他参数:具体见接口文档说明 |
腾讯会议 | POST、PUT请求的body参数和GET、DELETE请求的query参数:operator_id、operator_id_type、userid等 header参数: X-TC-Timestamp、 X-TC-Nonce、 X-TC-Registered、 Openid、 Accesstoken | instanceid建议都传1 |
APIs 详情页
权限设置
权限设置,引导用户到云后台的权限管理进行设置,这个权限设置,实际是在请求打到网关层时进行校验是否有权限。
基本信息
展示、编辑基本信息,变更关联的密钥对,是否启用mcp等。
是否启用 mcp
1. openapi 类型的 APIs,在创建时,可以选择启用 mcp(个人版不支持 mcp,因此个人版不支持同步启用 mcp),创建完 APIs 后,在 AI+ 的 mcp 中同步创建出来一个 APIs 类型的 mcp:
1.1 APIs 类型的 mcp 跟 AI+ 中正常的 mcp 的区别:正常 mcp 创建出来需要依托云托管环境运行,APIs 类型的 mcp 不依托云托管环境运行,APIs 类型的 mcp,一个接口就是一个 tools,调用一个 tools 底层实质上是调用一个接口;
1.2 创建 APIs 启用的 mcp,因为 mcp 需要完整的入参出参描述,某个类型的 APIs 的 openapi 的 schema 描述文档可能仅有部分接口的描述,因此对应 mcp 就仅有这部分的接口对应的 tools 可以使用,若有客户有诉求需要调用其他未描述的接口的 tools,后续可以持续完善该类型的 openapi 的 schema 描述文档。
2. APIs 在创建时选择启用 mcp,或者在具体某个 APIs 的详情页中进行编辑,选择启用 mcp,都会在 AI+ 的 mcp 中同步创建出来一个 APIs 类型的 mcp。
3. 用户删除某个 APIs,或者在具体某个 APIs 的详情页中进行编辑,本来是启用 mcp,改成不启用 mcp,都会同步删除之前创建的 APIs 类型的 mcp。
用户已经创建的 APIs 列表页
1. 基于 openapi 的新版 APIs(有V2图标)和非 openapi 的 APIs 在一个列表中,按更新时间进行倒排,更新时间最近的在最前面。
2. 基于 openapi 的 APIs,不支持:列表中拖拽、改变顺序、加入分组。