@cloudbase/manager-node 5.8.0-beta.2 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## @cloudbase/manager-node v5.7.0 版本发布 🚀(2026-08-13)
2
+
3
+
4
+
5
+ ---
6
+
1
7
  ## @cloudbase/manager-node v5.6.8 版本发布 🚀(2026-08-11)
2
8
 
3
9
  - 新增 封装 DescribeReleaseOrder 接口
package/lib/env/index.js CHANGED
@@ -28,6 +28,7 @@ class EnvService {
28
28
  this.tcbService = new utils_1.CloudService(environment.cloudBaseContext, 'tcb', '2018-06-08');
29
29
  this.commonService = environment.getCommonService('lowcode', '2021-01-08');
30
30
  this.billingService = new billing_1.BillingService(environment.cloudBaseContext);
31
+ this.certificateCloudService = new utils_1.CloudService(environment.cloudBaseContext, 'ssl', '2019-12-05');
31
32
  this.tokenCache = new Map();
32
33
  }
33
34
  /**
@@ -769,6 +770,23 @@ class EnvService {
769
770
  async describeCreditsUsageDetail(params) {
770
771
  return this.cloudService.request('DescribeCreditsUsageDetail', Object.assign({}, params));
771
772
  }
773
+ /**
774
+ * 获取当前凭证有权限访问的 SSL 证书列表。
775
+ *
776
+ * 证书用于自定义域名 HTTPS 配置,本接口不依赖 CloudBase 环境信息。
777
+ * @param {DescribeCertificatesParams} params 查询参数
778
+ * @returns {Promise<DescribeCertificatesRes>}
779
+ */
780
+ async describeCertificates(params = {}) {
781
+ if (params.Offset !== undefined && (!Number.isInteger(params.Offset) || params.Offset < 0)) {
782
+ throw new error_1.CloudBaseError('Offset 必须是大于等于 0 的整数');
783
+ }
784
+ if (params.Limit !== undefined &&
785
+ (!Number.isInteger(params.Limit) || params.Limit < 1 || params.Limit > 1000)) {
786
+ throw new error_1.CloudBaseError('Limit 必须是 1 至 1000 的整数');
787
+ }
788
+ return this.certificateCloudService.request('DescribeCertificates', params);
789
+ }
772
790
  /**
773
791
  * 查询HTTP访问服务域名路由信息
774
792
  * @param {DescribeHttpServiceRouteParams} params 查询参数
@@ -777,6 +795,15 @@ class EnvService {
777
795
  async describeHttpServiceRoute(params) {
778
796
  return this.cloudService.request('DescribeHTTPServiceRoute', Object.assign({}, params));
779
797
  }
798
+ /**
799
+ * 校验HTTP访问服务域名路由
800
+ * 此操作为只读预检,不会创建任何资源。
801
+ * @param {VerifyHttpServiceRouteParams} params 校验参数
802
+ * @returns {Promise<VerifyHttpServiceRouteRes>}
803
+ */
804
+ async verifyHttpServiceRoute(params) {
805
+ return this.cloudService.request('VerifyHTTPServiceRoute', Object.assign({}, params));
806
+ }
780
807
  /**
781
808
  * 创建HTTP访问服务域名路由
782
809
  * @param {CreateHttpServiceRouteParams} params 创建参数
@@ -126,7 +126,9 @@ function formatImageDeploymentErrorMessage(error, imageConfig) {
126
126
  const isEnterprise = (imageConfig === null || imageConfig === void 0 ? void 0 : imageConfig.imageType) === 'enterprise';
127
127
  const isEnterpriseImageNotFound = haystack.includes('resourcenotfound.image') ||
128
128
  haystack.includes('describe images enterprise resource not found');
129
- if (!isEnterprise || !isEnterpriseImageNotFound || message.includes(exports.ENTERPRISE_IMAGE_REGION_GUIDANCE)) {
129
+ if (!isEnterprise ||
130
+ !isEnterpriseImageNotFound ||
131
+ message.includes(exports.ENTERPRISE_IMAGE_REGION_GUIDANCE)) {
130
132
  return message;
131
133
  }
132
134
  return `${message}\n提示:${exports.ENTERPRISE_IMAGE_REGION_GUIDANCE}`;
@@ -140,25 +142,25 @@ function configToParams(options) {
140
142
  // key: 小写用于匹配,value: PascalCase 用于输出
141
143
  const AUTO_CONVERT_FIELDS = {
142
144
  // 基础配置
143
- 'description': 'Description',
144
- 'memorysize': 'MemorySize',
145
- 'timeout': 'Timeout',
146
- 'runtime': 'Runtime',
147
- 'type': 'Type', // Event/HTTP
148
- 'role': 'Role',
145
+ description: 'Description',
146
+ memorysize: 'MemorySize',
147
+ timeout: 'Timeout',
148
+ runtime: 'Runtime',
149
+ type: 'Type', // Event/HTTP
150
+ role: 'Role',
149
151
  // 日志配置
150
- 'clslogsetid': 'ClsLogsetId',
151
- 'clstopicid': 'ClsTopicId',
152
+ clslogsetid: 'ClsLogsetId',
153
+ clstopicid: 'ClsTopicId',
152
154
  // 高级配置
153
- 'deadletterconfig': 'DeadLetterConfig',
154
- 'publicnetconfig': 'PublicNetConfig',
155
- 'cfsconfig': 'CfsConfig',
156
- 'inittimeout': 'InitTimeout',
157
- 'tags': 'Tags',
155
+ deadletterconfig: 'DeadLetterConfig',
156
+ publicnetconfig: 'PublicNetConfig',
157
+ cfsconfig: 'CfsConfig',
158
+ inittimeout: 'InitTimeout',
159
+ tags: 'Tags',
158
160
  // 注意:asyncRunEnable/traceEnable/autoDeployClsTopicIndex/autoCreateClsTopic/dnsCache
159
161
  // 需要 'TRUE'/'FALSE' 字符串,在特殊处理阶段处理
160
- 'protocoltype': 'ProtocolType', // WS
161
- 'intranetconfig': 'IntranetConfig',
162
+ protocoltype: 'ProtocolType', // WS
163
+ intranetconfig: 'IntranetConfig'
162
164
  };
163
165
  let params = Object.assign(Object.assign({}, baseParams), { FunctionName: func.name });
164
166
  // 第一阶段:白名单字段自动转换(大小写不敏感,统一输出 PascalCase)
@@ -184,11 +186,11 @@ function configToParams(options) {
184
186
  // 3. 需要 'TRUE'/'FALSE' 字符串的布尔字段统一处理(大小写不敏感)
185
187
  // key: 小写用于匹配,value: PascalCase 用于输出
186
188
  const BOOLEAN_STRING_FIELDS = {
187
- 'asyncrunenable': 'AsyncRunEnable', // 异步属性
188
- 'traceenable': 'TraceEnable', // 事件追踪
189
- 'autodeployclstopicindex': 'AutoDeployClsTopicIndex', // 自动创建 CLS 索引
190
- 'autocreateclstopic': 'AutoCreateClsTopic', // 自动创建 CLS 主题
191
- 'dnscache': 'DnsCache', // Dns 缓存
189
+ asyncrunenable: 'AsyncRunEnable', // 异步属性
190
+ traceenable: 'TraceEnable', // 事件追踪
191
+ autodeployclstopicindex: 'AutoDeployClsTopicIndex', // 自动创建 CLS 索引
192
+ autocreateclstopic: 'AutoCreateClsTopic', // 自动创建 CLS 主题
193
+ dnscache: 'DnsCache' // Dns 缓存
192
194
  };
193
195
  for (const key of Object.keys(func)) {
194
196
  const lowerKey = key.toLowerCase();
@@ -352,7 +354,7 @@ class FunctionService {
352
354
  // ENABLE_TCBF 开启时,runtime 适配 tcb 风格
353
355
  if (this.useTcbFunctionApi) {
354
356
  if (!func.runtime) {
355
- params.Runtime = 'Node.js 24.14';
357
+ params.Runtime = 'Nodejs24.14';
356
358
  }
357
359
  }
358
360
  const customCode = code;
@@ -360,7 +362,9 @@ class FunctionService {
360
362
  const funcImageCode = (_a = params.Code) === null || _a === void 0 ? void 0 : _a.ImageConfig;
361
363
  // 根据部署方式处理 Code 参数
362
364
  // 优先级:deployMode=image > 显式传入 code > 原有自动打包逻辑(base64Code/functionPath/functionRootPath)
363
- const isImageDeploy = deployMode === 'image' || Boolean(customImageCode) || (!deployMode && Boolean(funcImageCode));
365
+ const isImageDeploy = deployMode === 'image' ||
366
+ Boolean(customImageCode) ||
367
+ (!deployMode && Boolean(funcImageCode));
364
368
  if (isImageDeploy) {
365
369
  // 镜像部署优先使用显式 code.ImageConfig;未传时回退到 func.imageConfig(configToParams 生成)
366
370
  if (customImageCode) {
@@ -580,9 +584,7 @@ class FunctionService {
580
584
  */
581
585
  async deleteFunction(name) {
582
586
  var _a;
583
- const funcName = typeof name === 'string'
584
- ? name
585
- : name === null || name === void 0 ? void 0 : name.name;
587
+ const funcName = typeof name === 'string' ? name : name === null || name === void 0 ? void 0 : name.name;
586
588
  const { namespace } = this.getFunctionConfig();
587
589
  // 检测是否绑定了 API 网关
588
590
  const accessService = this.environment.getAccessService();
@@ -682,50 +684,50 @@ class FunctionService {
682
684
  return data;
683
685
  }
684
686
  /**
685
- * 获取函数日志
686
- * @deprecated 底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
687
- * @param {{
688
- * name: string
689
- * offset: number
690
- * limit: number
691
- * order: string
692
- * orderBy: string
693
- * startTime: string
694
- * endTime: string
695
- * requestId: string
696
- * }} options
697
- * @returns {Promise<IFunctionLogRes>}
698
- */
687
+ * 获取函数日志
688
+ * @deprecated 底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
689
+ * @param {{
690
+ * name: string
691
+ * offset: number
692
+ * limit: number
693
+ * order: string
694
+ * orderBy: string
695
+ * startTime: string
696
+ * endTime: string
697
+ * requestId: string
698
+ * }} options
699
+ * @returns {Promise<IFunctionLogRes>}
700
+ */
699
701
  async getFunctionLogs(_options) {
700
702
  throw new error_1.CloudBaseError('getFunctionLogs 已废弃:底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志');
701
703
  }
702
704
  /**
703
- * 获取函数日志 ID 列表
704
- * @deprecated 底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
705
- * @param {{
706
- * name: string
707
- * offset: number
708
- * limit: number
709
- * startTime: string
710
- * endTime: string
711
- * requestId: string
712
- * qualifier: string
713
- * }} options
714
- * @returns {Promise<IFunctionLogResV2>}
715
- */
705
+ * 获取函数日志 ID 列表
706
+ * @deprecated 底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
707
+ * @param {{
708
+ * name: string
709
+ * offset: number
710
+ * limit: number
711
+ * startTime: string
712
+ * endTime: string
713
+ * requestId: string
714
+ * qualifier: string
715
+ * }} options
716
+ * @returns {Promise<IFunctionLogResV2>}
717
+ */
716
718
  async getFunctionLogsV2(_options) {
717
719
  throw new error_1.CloudBaseError('getFunctionLogsV2 已废弃:底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志');
718
720
  }
719
721
  /**
720
- * 根据函数日志 ID 查询日志详情
721
- * @deprecated 底层 GetFunctionLogDetail 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
722
- * @param {{
723
- * startTime: string
724
- * endTime: string
725
- * logRequestId: string
726
- * }} options
727
- * @returns {Promise<IFunctionLogDetailRes>}
728
- */
722
+ * 根据函数日志 ID 查询日志详情
723
+ * @deprecated 底层 GetFunctionLogDetail 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
724
+ * @param {{
725
+ * startTime: string
726
+ * endTime: string
727
+ * logRequestId: string
728
+ * }} options
729
+ * @returns {Promise<IFunctionLogDetailRes>}
730
+ */
729
731
  async getFunctionLogDetail(_options) {
730
732
  throw new error_1.CloudBaseError('getFunctionLogDetail 已废弃:底层 GetFunctionLogDetail 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志');
731
733
  }
@@ -752,22 +754,22 @@ class FunctionService {
752
754
  // 注意:Runtime, Handler, Code, Type, ProtocolType 只能在 CreateFunction 时指定
753
755
  // key: 小写用于匹配,value: PascalCase 用于输出
754
756
  const UPDATE_CONFIG_FIELDS = {
755
- 'description': 'Description',
756
- 'memorysize': 'MemorySize',
757
- 'timeout': 'Timeout',
758
- 'role': 'Role',
757
+ description: 'Description',
758
+ memorysize: 'MemorySize',
759
+ timeout: 'Timeout',
760
+ role: 'Role',
759
761
  // 日志配置
760
- 'clslogsetid': 'ClsLogsetId',
761
- 'clstopicid': 'ClsTopicId',
762
+ clslogsetid: 'ClsLogsetId',
763
+ clstopicid: 'ClsTopicId',
762
764
  // 高级配置
763
- 'deadletterconfig': 'DeadLetterConfig',
764
- 'publicnetconfig': 'PublicNetConfig',
765
- 'cfsconfig': 'CfsConfig',
766
- 'inittimeout': 'InitTimeout',
765
+ deadletterconfig: 'DeadLetterConfig',
766
+ publicnetconfig: 'PublicNetConfig',
767
+ cfsconfig: 'CfsConfig',
768
+ inittimeout: 'InitTimeout',
767
769
  // 注意:asyncRunEnable/traceEnable/autoDeployClsTopicIndex/autoCreateClsTopic
768
770
  // 只能在 CreateFunction 时设置,UpdateFunctionConfiguration 不支持
769
771
  // 注意:dnsCache 需要 'TRUE'/'FALSE' 字符串,在特殊处理阶段处理
770
- 'intranetconfig': 'IntranetConfig',
772
+ intranetconfig: 'IntranetConfig'
771
773
  };
772
774
  const { TopicId, LogsetId } = this.getClsServiceConfig();
773
775
  // 构建参数
@@ -923,13 +925,14 @@ class FunctionService {
923
925
  if (func.installDependency !== undefined) {
924
926
  installDependency = toBooleanString(func.installDependency);
925
927
  }
926
- const codeParams = customCode || await this.getCodeParams({
927
- func,
928
- functionPath,
929
- functionRootPath,
930
- base64Code,
931
- deployMode
932
- }, installDependency);
928
+ const codeParams = customCode ||
929
+ (await this.getCodeParams({
930
+ func,
931
+ functionPath,
932
+ functionRootPath,
933
+ base64Code,
934
+ deployMode
935
+ }, installDependency));
933
936
  const params = {
934
937
  FunctionName: funcName,
935
938
  [this.namespaceParamKey]: namespace,
@@ -1246,10 +1249,14 @@ class FunctionService {
1246
1249
  const apiParams = {
1247
1250
  Namespace: envId,
1248
1251
  FunctionName: functionName,
1249
- Layers: Layers.length > 0 ? Layers : [{
1250
- LayerName: '',
1251
- LayerVersion: 0
1252
- }]
1252
+ Layers: Layers.length > 0
1253
+ ? Layers
1254
+ : [
1255
+ {
1256
+ LayerName: '',
1257
+ LayerVersion: 0
1258
+ }
1259
+ ]
1253
1260
  };
1254
1261
  return this.scfService.request('UpdateFunctionConfiguration', apiParams);
1255
1262
  }
@@ -1348,7 +1355,7 @@ class FunctionService {
1348
1355
  let param = {
1349
1356
  Limit: limit,
1350
1357
  Offset: offset,
1351
- SearchKey: searchKey,
1358
+ SearchKey: searchKey
1352
1359
  // SearchSrc: `TCB_${env}`
1353
1360
  };
1354
1361
  if (runtime) {
@@ -1557,7 +1564,7 @@ class FunctionService {
1557
1564
  Bucket: `${regionPrefix}tempcos-${constant_1.SCF_TEMP_COS.APPID}`,
1558
1565
  Key: tempCosObjectName,
1559
1566
  Region: region,
1560
- FilePath: zipFilePath,
1567
+ FilePath: zipFilePath
1561
1568
  };
1562
1569
  const cos = new cos_nodejs_sdk_v5_1.default({
1563
1570
  getAuthorization: function (options, callback) {
@@ -1657,7 +1664,7 @@ class FunctionService {
1657
1664
  // 直接传入 base64Code 的情况,校验大小
1658
1665
  // ZipFile 上传大小上限 1.5MB,base64 编码后长度约为原始大小的 4/3
1659
1666
  const MAX_ZIP_SIZE = 1.5 * 1024 * 1024; // 1.5MB
1660
- const MAX_BASE64_LENGTH = Math.floor(MAX_ZIP_SIZE * 4 / 3); // ≈ 2097152
1667
+ const MAX_BASE64_LENGTH = Math.floor((MAX_ZIP_SIZE * 4) / 3); // ≈ 2097152
1661
1668
  if ((base64Code === null || base64Code === void 0 ? void 0 : base64Code.length) > MAX_BASE64_LENGTH) {
1662
1669
  throw new error_1.CloudBaseError('ZipFile 上传不能大于 1.5MB,请使用 COS 上传方式');
1663
1670
  }
@@ -1771,10 +1778,10 @@ class FunctionService {
1771
1778
  // 兜底从 Storages[0] 的 AppId 或 Bucket 名提取
1772
1779
  // COS Bucket 格式: {BucketName}-{APPID},APPID 为纯数字
1773
1780
  const storage = (_c = envConfig.Storages) === null || _c === void 0 ? void 0 : _c[0];
1774
- const appId = ((_d = envConfig.UserInfo) === null || _d === void 0 ? void 0 : _d.AppId)
1775
- || (storage === null || storage === void 0 ? void 0 : storage.AppId)
1776
- || ((_f = (_e = storage === null || storage === void 0 ? void 0 : storage.Bucket) === null || _e === void 0 ? void 0 : _e.match(/-(\d+)$/)) === null || _f === void 0 ? void 0 : _f[1])
1777
- || '';
1781
+ const appId = ((_d = envConfig.UserInfo) === null || _d === void 0 ? void 0 : _d.AppId) ||
1782
+ (storage === null || storage === void 0 ? void 0 : storage.AppId) ||
1783
+ ((_f = (_e = storage === null || storage === void 0 ? void 0 : storage.Bucket) === null || _e === void 0 ? void 0 : _e.match(/-(\d+)$/)) === null || _f === void 0 ? void 0 : _f[1]) ||
1784
+ '';
1778
1785
  const { proxy } = this.environment.cloudBaseContext;
1779
1786
  return {
1780
1787
  proxy,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/manager-node",
3
- "version": "5.8.0-beta.2",
3
+ "version": "5.8.0",
4
4
  "description": "The node manage service api for cloudbase.",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@cloudbase/signature-nodejs": "^1.0.0",
45
- "@cloudbase/toolbox": "^0.8.3-beta.2",
45
+ "@cloudbase/toolbox": "~0.8.3",
46
46
  "@cloudbase/database": "^0.6.2",
47
47
  "archiver": "^3.1.1",
48
48
  "cos-nodejs-sdk-v5": "^2.14.0",
@@ -1,6 +1,6 @@
1
1
  import { Environment } from '../environment';
2
2
  import { IResponseInfo, AuthDomain, EnvInfo, LoginConfigItem, ICheckTcbServiceRes, ICreatePostpayRes, EnvBillingInfoItem, PriceResult } from '../interfaces';
3
- import { CalculatePackageCreatePriceParams, CalculatePackageRenewPriceParams, CalculatePackageModifyPriceParams, DescribeHttpServiceRouteParams, DescribeHttpServiceRouteRes, CreateHttpServiceRouteParams, CreateHttpServiceRouteRes, ModifyHttpServiceRouteParams, ModifyHttpServiceRouteRes, DeleteHttpServiceRouteParams, DeleteHttpServiceRouteRes, BindCustomDomainParams, BindCustomDomainRes, DeleteCustomDomainParams, DeleteCustomDomainRes } from './type';
3
+ import { CalculatePackageCreatePriceParams, CalculatePackageRenewPriceParams, CalculatePackageModifyPriceParams, DescribeHttpServiceRouteParams, DescribeHttpServiceRouteRes, VerifyHttpServiceRouteParams, VerifyHttpServiceRouteRes, CreateHttpServiceRouteParams, CreateHttpServiceRouteRes, ModifyHttpServiceRouteParams, ModifyHttpServiceRouteRes, DeleteHttpServiceRouteParams, DeleteHttpServiceRouteRes, BindCustomDomainParams, BindCustomDomainRes, DeleteCustomDomainParams, DeleteCustomDomainRes, DescribeCertificatesParams, DescribeCertificatesRes } from './type';
4
4
  import { CreateBillingDealParams, CreateEnvParams, BaasPackageInfo, DescribeBaasPackageListParams, ModifyEnvPlanParams, RenewEnvParams, DestroyEnvParams, DescribeEnvsParams, DescribeEnvInfoParams, DescribeEnvInfoResponse, DescribeEnvAccountCircleParams, DescribeEnvAccountCircleRes, DescribeCreditsUsageDetailParams, EnvPkgCreditsUsage } from '../interfaces/tcb.interface';
5
5
  type SOURCE = 'miniapp' | 'qcloud';
6
6
  interface IDeleteDomainRes {
@@ -559,6 +559,7 @@ export declare class EnvService {
559
559
  private envType?;
560
560
  private commonService;
561
561
  private billingService;
562
+ private certificateCloudService;
562
563
  private tokenCache;
563
564
  constructor(environment: Environment);
564
565
  /**
@@ -882,12 +883,27 @@ export declare class EnvService {
882
883
  Usages: EnvPkgCreditsUsage[];
883
884
  RequestId: string;
884
885
  }>;
886
+ /**
887
+ * 获取当前凭证有权限访问的 SSL 证书列表。
888
+ *
889
+ * 证书用于自定义域名 HTTPS 配置,本接口不依赖 CloudBase 环境信息。
890
+ * @param {DescribeCertificatesParams} params 查询参数
891
+ * @returns {Promise<DescribeCertificatesRes>}
892
+ */
893
+ describeCertificates(params?: DescribeCertificatesParams): Promise<DescribeCertificatesRes>;
885
894
  /**
886
895
  * 查询HTTP访问服务域名路由信息
887
896
  * @param {DescribeHttpServiceRouteParams} params 查询参数
888
897
  * @returns {Promise<DescribeHttpServiceRouteRes>}
889
898
  */
890
899
  describeHttpServiceRoute(params: DescribeHttpServiceRouteParams): Promise<DescribeHttpServiceRouteRes>;
900
+ /**
901
+ * 校验HTTP访问服务域名路由
902
+ * 此操作为只读预检,不会创建任何资源。
903
+ * @param {VerifyHttpServiceRouteParams} params 校验参数
904
+ * @returns {Promise<VerifyHttpServiceRouteRes>}
905
+ */
906
+ verifyHttpServiceRoute(params: VerifyHttpServiceRouteParams): Promise<VerifyHttpServiceRouteRes>;
891
907
  /**
892
908
  * 创建HTTP访问服务域名路由
893
909
  * @param {CreateHttpServiceRouteParams} params 创建参数
@@ -14,6 +14,169 @@ export interface CalculatePackageModifyPriceParams {
14
14
  envId: string;
15
15
  currency?: 'CNY' | 'USD';
16
16
  }
17
+ /** 获取 SSL 证书列表请求参数。 */
18
+ export interface DescribeCertificatesParams {
19
+ /** 分页偏移量,从 0 开始。 */
20
+ Offset?: number;
21
+ /** 每页数量,范围为 1 至 1000。 */
22
+ Limit?: number;
23
+ /** 模糊匹配证书 ID、备注名称或证书域名。 */
24
+ SearchKey?: string;
25
+ /** 证书类型:CA 为客户端证书,SVR 为服务器证书。 */
26
+ CertificateType?: 'CA' | 'SVR';
27
+ /** 项目 ID。 */
28
+ ProjectId?: number;
29
+ /** 按证书到期时间排序。 */
30
+ ExpirationSort?: 'ASC' | 'DESC';
31
+ /** 证书状态筛选。 */
32
+ CertificateStatus?: number[];
33
+ /** 是否仅返回可部署证书:1 是,0 否。 */
34
+ Deployable?: 0 | 1;
35
+ /** 是否仅返回上传托管证书:1 是,0 否。 */
36
+ Upload?: 0 | 1;
37
+ /** 是否仅返回可续期证书:1 是,0 否。 */
38
+ Renew?: 0 | 1;
39
+ /** 来源筛选。 */
40
+ FilterSource?: 'upload' | 'buy';
41
+ /** 是否仅返回国密证书:1 是,0 否。 */
42
+ IsSM?: 0 | 1;
43
+ /** 是否仅返回即将过期证书:1 是,0 否。 */
44
+ FilterExpiring?: 0 | 1;
45
+ /** 是否仅返回可托管证书:1 是,0 否。 */
46
+ Hostable?: 0 | 1;
47
+ /** 标签筛选条件。 */
48
+ Tags?: Array<{
49
+ TagKey: string;
50
+ TagValue?: string;
51
+ }>;
52
+ /** 是否仅返回等待签发证书:1 是,0 否。 */
53
+ IsPendingIssue?: 0 | 1;
54
+ /** 指定证书 ID 列表。 */
55
+ CertIds?: string[];
56
+ /** 订阅服务 ID。 */
57
+ ServiceId?: string;
58
+ }
59
+ /** Certificates.CertificateExtra:证书扩展信息。 */
60
+ export interface CertificateExtra {
61
+ DomainNumber: string;
62
+ OriginCertificateId: string | null;
63
+ ReplacedBy: string | null;
64
+ ReplacedFor: string | null;
65
+ RenewOrder: string | null;
66
+ SMCert: number;
67
+ CompanyType: number;
68
+ ServiceRenewCertificateId: string;
69
+ ServiceOriginCertificateId: string;
70
+ }
71
+ /** Certificates.ProjectInfo:项目信息。 */
72
+ export interface ProjectInfo {
73
+ ProjectName: string;
74
+ ProjectCreatorUin: number;
75
+ ProjectCreateTime: string;
76
+ ProjectResume: string;
77
+ OwnerUin: number;
78
+ ProjectId: string;
79
+ }
80
+ /** Certificates.PreAuditInfo:证书预审核信息。 */
81
+ export interface PreAuditInfo {
82
+ TotalPeriod: number;
83
+ NowPeriod: number;
84
+ ManagerId: string;
85
+ }
86
+ /** Certificates.HostingConfig:托管配置。 */
87
+ export interface HostingConfig {
88
+ ReplaceTime?: number;
89
+ MessageTypes?: number[];
90
+ ReplaceStartTime?: string;
91
+ ReplaceEndTime?: string;
92
+ }
93
+ /** Certificates.SupportDownloadType:支持下载的服务器格式。 */
94
+ export interface SupportDownloadType {
95
+ NGINX: boolean;
96
+ APACHE: boolean;
97
+ TOMCAT: boolean;
98
+ IIS: boolean;
99
+ JKS: boolean;
100
+ OTHER: boolean;
101
+ ROOT: boolean;
102
+ }
103
+ /** Certificates.Tags:标签信息。 */
104
+ export interface CertificateTag {
105
+ TagKey: string;
106
+ TagValue: string;
107
+ }
108
+ /** SSL 证书列表项,对应 DescribeCertificates 响应中的 Certificates 元素。 */
109
+ export interface Certificates {
110
+ OwnerUin: string;
111
+ ProjectId: string;
112
+ From: string;
113
+ PackageType: string;
114
+ CertificateType: 'CA' | 'SVR';
115
+ ProductZhName: string;
116
+ Domain: string;
117
+ Alias: string;
118
+ Status: number;
119
+ CertificateExtra: CertificateExtra;
120
+ VulnerabilityStatus: 'INACTIVE' | 'ACTIVE';
121
+ StatusMsg: string;
122
+ VerifyType: 'DNS_AUTO' | 'DNS' | 'FILE' | 'DNS_PROXY' | 'FILE_PROXY';
123
+ CertBeginTime: string;
124
+ CertEndTime: string;
125
+ ValidityPeriod: string;
126
+ InsertTime: string;
127
+ CertificateId: string;
128
+ SubjectAltName: string[];
129
+ PackageTypeName: string;
130
+ StatusName: string;
131
+ IsVip: boolean;
132
+ IsDv: boolean;
133
+ IsWildcard: boolean;
134
+ IsVulnerability: boolean;
135
+ RenewAble: boolean;
136
+ ProjectInfo: ProjectInfo;
137
+ BoundResource: string[];
138
+ Deployable: boolean;
139
+ Tags: CertificateTag[];
140
+ IsIgnore: boolean;
141
+ IsSM: boolean;
142
+ EncryptAlgorithm: string;
143
+ CAEncryptAlgorithms: string[];
144
+ CAEndTimes: string[];
145
+ CACommonNames: string[];
146
+ PreAuditInfo: PreAuditInfo;
147
+ AutoRenewFlag: number;
148
+ HostingStatus: number;
149
+ HostingCompleteTime: string;
150
+ HostingRenewCertId: string;
151
+ HasRenewOrder: string;
152
+ ReplaceOriCertIsDelete: boolean;
153
+ IsExpiring: boolean;
154
+ DVAuthDeadline: string;
155
+ ValidationPassedTime: string;
156
+ CertSANs: string[];
157
+ AwaitingValidationMsg: string;
158
+ AllowDownload: boolean;
159
+ IsDNSPODResolve: boolean;
160
+ IsPackage: boolean;
161
+ KeyPasswordCustomFlag: boolean;
162
+ SupportDownloadType: SupportDownloadType;
163
+ CertRevokedTime: string;
164
+ HostingResourceTypes: string[];
165
+ HostingConfig: HostingConfig | null;
166
+ IsHostingUploadRenewCert: boolean;
167
+ ServiceId: string;
168
+ ServiceStatus: 'initing' | 'running' | 'expired' | 'refunded' | 'nearExpire';
169
+ CertServiceBeginTime: string;
170
+ CertServiceEndTime: string;
171
+ CertServiceShareEnabled: boolean;
172
+ CertServiceValidCertificateCount: number;
173
+ }
174
+ /** 获取 SSL 证书列表响应。 */
175
+ export interface DescribeCertificatesRes {
176
+ TotalCount: number;
177
+ Certificates: Certificates[];
178
+ RequestId: string;
179
+ }
17
180
  /**
18
181
  * 客户端限频配置
19
182
  */
@@ -35,18 +198,43 @@ export interface HTTPServicePathRewrite {
35
198
  StaticStorePrefix?: string;
36
199
  Prefix?: string;
37
200
  }
201
+ /**
202
+ * HTTP 访问服务路由添加 header 配置
203
+ */
204
+ export interface HTTPServiceHeaderToAdd {
205
+ Key?: string;
206
+ Value?: string;
207
+ Action?: 'APPEND_IF_EXISTS_OR_ADD' | 'ADD_IF_ABSENT' | 'OVERWRITE_IF_EXISTS_OR_ADD' | 'OVERWRITE_IF_EXISTS';
208
+ }
209
+ /**
210
+ * HTTP 访问服务路由 headers 处理配置
211
+ */
212
+ export interface HTTPServiceHeadersHandler {
213
+ RequestHeadersToAdd?: HTTPServiceHeaderToAdd[];
214
+ RequestHeadersToRemove?: string[];
215
+ ResponseHeadersToAdd?: HTTPServiceHeaderToAdd[];
216
+ ResponseHeadersToRemove?: string[];
217
+ }
218
+ /**
219
+ * HTTP访问服务路由扩展字段
220
+ */
221
+ export interface HTTPServiceExtension {
222
+ HeadersHandler?: HTTPServiceHeadersHandler;
223
+ [key: string]: unknown;
224
+ }
38
225
  /**
39
226
  * HTTP访问服务路由信息
40
227
  */
41
228
  export interface HTTPServiceRoute {
42
229
  Path: string;
43
230
  PathRewrite?: HTTPServicePathRewrite;
44
- UpstreamResourceType: 'SCF' | 'CBR' | 'STATIC_STORE' | 'WEB_SCF' | 'LH';
231
+ UpstreamResourceType: 'SCF' | 'CBR' | 'STATIC_STORE' | 'WEB_SCF' | 'LH' | 'STORAGE';
45
232
  UpstreamResourceName: string;
46
233
  EnableSafeDomain: boolean;
47
234
  EnableAuth: boolean;
48
235
  EnablePathTransmission: boolean;
49
236
  QPSPolicy?: HTTPServiceRouteQPSPolicy;
237
+ Extension?: HTTPServiceExtension;
50
238
  Enable: boolean;
51
239
  CreateTime: string;
52
240
  UpdateTime: string;
@@ -57,7 +245,7 @@ export interface HTTPServiceRoute {
57
245
  export interface HTTPServiceDomain {
58
246
  Domain: string;
59
247
  DomainType: 'HTTPSERVICE' | 'CBR' | 'ANYSERVICE' | 'AI_AGENT' | 'VM' | 'INTEGRATION_CALLBACK';
60
- AccessType: 'DIRECT' | 'CDN' | 'CUSTOM';
248
+ AccessType: 'DIRECT' | 'CDN' | 'CUSTOM' | 'EO';
61
249
  CertId: string;
62
250
  Protocol: 'HTTP_AND_HTTPS' | 'HTTP_TO_HTTPS' | 'HTTPS_TO_HTTP';
63
251
  Cname: string;
@@ -66,6 +254,7 @@ export interface HTTPServiceDomain {
66
254
  Status: 'PROCESSING' | 'FAIL' | 'SUCCESS';
67
255
  DNSStatus: 'OK' | 'INVALID';
68
256
  Routes?: HTTPServiceRoute[];
257
+ Extension?: HTTPServiceExtension;
69
258
  CreateTime: string;
70
259
  UpdateTime: string;
71
260
  }
@@ -99,13 +288,14 @@ export interface DescribeHttpServiceRouteRes {
99
288
  */
100
289
  export interface HTTPServiceRouteParam {
101
290
  Path: string;
102
- UpstreamResourceType?: 'SCF' | 'CBR' | 'STATIC_STORE' | 'WEB_SCF' | 'LH';
291
+ UpstreamResourceType?: 'SCF' | 'CBR' | 'STATIC_STORE' | 'WEB_SCF' | 'LH' | 'STORAGE';
103
292
  UpstreamResourceName?: string;
104
293
  PathRewrite?: HTTPServicePathRewrite;
105
294
  EnableSafeDomain?: boolean;
106
295
  EnableAuth?: boolean;
107
296
  EnablePathTransmission?: boolean;
108
297
  QPSPolicy?: HTTPServiceRouteQPSPolicy;
298
+ Extension?: HTTPServiceExtension;
109
299
  Enable?: boolean;
110
300
  }
111
301
  /**
@@ -119,6 +309,70 @@ export interface HTTPServiceDomainParam {
119
309
  CustomCname?: string;
120
310
  Enable?: boolean;
121
311
  Routes?: HTTPServiceRouteParam[];
312
+ Extension?: HTTPServiceExtension;
313
+ }
314
+ /**
315
+ * 前置校验检查状态
316
+ */
317
+ export type VerifyHttpServiceRouteCheckStatus = 'PASS' | 'SKIPPED' | 'FAIL';
318
+ /**
319
+ * 前置校验失败原因
320
+ */
321
+ export type VerifyHttpServiceRouteCheckCode = 'INTERNAL_CHECK_ERROR' | 'OWNERSHIP_DNS_LOOKUP_FAILED' | 'OWNERSHIP_VERIFY_FAILED' | 'CERT_VERIFY_FAILED' | 'QUOTA_EXCEEDED' | 'ROUTE_CONFLICT' | 'DOMAIN_IN_USE' | 'NON_INTERNAL_ACCOUNT' | 'DOMAIN_IN_BLACKLIST' | 'CDN_RESOURCE_PROCESSING' | 'CDN_RESOURCE_OFFLINE' | 'EO_OWNERSHIP_VERIFY_FAILED' | 'EO_DOMAIN_NOT_ICP' | 'EO_DOMAIN_IN_USE';
322
+ /**
323
+ * 域名归属权 DNS 验证指引
324
+ */
325
+ export interface OwnershipVerificationDnsInfo {
326
+ Subdomain?: string;
327
+ RecordType?: string;
328
+ RecordValue?: string;
329
+ }
330
+ /**
331
+ * 域名归属权文件验证指引
332
+ */
333
+ export interface OwnershipVerificationFileInfo {
334
+ Path?: string;
335
+ Content?: string;
336
+ }
337
+ /**
338
+ * 域名归属权验证指引
339
+ */
340
+ export interface OwnershipVerificationInfo {
341
+ Domain?: string;
342
+ DnsVerification?: OwnershipVerificationDnsInfo[];
343
+ FileVerification?: OwnershipVerificationFileInfo[];
344
+ }
345
+ /**
346
+ * VerifyHTTPServiceRoute 单项前置校验结果
347
+ */
348
+ export interface VerifyHttpServiceRouteCheckItem {
349
+ Status: VerifyHttpServiceRouteCheckStatus;
350
+ Code?: VerifyHttpServiceRouteCheckCode;
351
+ Message?: string;
352
+ OwnershipVerification?: OwnershipVerificationInfo;
353
+ }
354
+ /**
355
+ * VerifyHTTPServiceRoute 请求参数
356
+ */
357
+ export interface VerifyHttpServiceRouteParams {
358
+ EnvId: string;
359
+ Domain: HTTPServiceDomainParam;
360
+ }
361
+ /**
362
+ * VerifyHTTPServiceRoute 返回结果
363
+ */
364
+ export interface VerifyHttpServiceRouteRes {
365
+ Passed: boolean;
366
+ Ownership: VerifyHttpServiceRouteCheckItem;
367
+ Cert: VerifyHttpServiceRouteCheckItem;
368
+ Quota: VerifyHttpServiceRouteCheckItem;
369
+ RouteConflict: VerifyHttpServiceRouteCheckItem;
370
+ DomainConflict: VerifyHttpServiceRouteCheckItem;
371
+ InternalAccount: VerifyHttpServiceRouteCheckItem;
372
+ Blacklist: VerifyHttpServiceRouteCheckItem;
373
+ CDNResource: VerifyHttpServiceRouteCheckItem;
374
+ EO: VerifyHttpServiceRouteCheckItem;
375
+ RequestId: string;
122
376
  }
123
377
  /**
124
378
  * CreateHTTPServiceRoute 请求参数
@@ -317,46 +317,46 @@ export declare class FunctionService {
317
317
  codeSecret: any;
318
318
  }): Promise<IFunctionInfo[]>;
319
319
  /**
320
- * 获取函数日志
321
- * @deprecated 底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
322
- * @param {{
323
- * name: string
324
- * offset: number
325
- * limit: number
326
- * order: string
327
- * orderBy: string
328
- * startTime: string
329
- * endTime: string
330
- * requestId: string
331
- * }} options
332
- * @returns {Promise<IFunctionLogRes>}
333
- */
320
+ * 获取函数日志
321
+ * @deprecated 底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
322
+ * @param {{
323
+ * name: string
324
+ * offset: number
325
+ * limit: number
326
+ * order: string
327
+ * orderBy: string
328
+ * startTime: string
329
+ * endTime: string
330
+ * requestId: string
331
+ * }} options
332
+ * @returns {Promise<IFunctionLogRes>}
333
+ */
334
334
  getFunctionLogs(_options: IFunctionLogOptions): Promise<IFunctionLogRes>;
335
335
  /**
336
- * 获取函数日志 ID 列表
337
- * @deprecated 底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
338
- * @param {{
339
- * name: string
340
- * offset: number
341
- * limit: number
342
- * startTime: string
343
- * endTime: string
344
- * requestId: string
345
- * qualifier: string
346
- * }} options
347
- * @returns {Promise<IFunctionLogResV2>}
348
- */
336
+ * 获取函数日志 ID 列表
337
+ * @deprecated 底层 GetFunctionLogs 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
338
+ * @param {{
339
+ * name: string
340
+ * offset: number
341
+ * limit: number
342
+ * startTime: string
343
+ * endTime: string
344
+ * requestId: string
345
+ * qualifier: string
346
+ * }} options
347
+ * @returns {Promise<IFunctionLogResV2>}
348
+ */
349
349
  getFunctionLogsV2(_options: IFunctionLogOptionsV2): Promise<IFunctionLogResV2>;
350
350
  /**
351
- * 根据函数日志 ID 查询日志详情
352
- * @deprecated 底层 GetFunctionLogDetail 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
353
- * @param {{
354
- * startTime: string
355
- * endTime: string
356
- * logRequestId: string
357
- * }} options
358
- * @returns {Promise<IFunctionLogDetailRes>}
359
- */
351
+ * 根据函数日志 ID 查询日志详情
352
+ * @deprecated 底层 GetFunctionLogDetail 接口已下线,请使用 env.getLogService().searchClsLog() 查询云函数日志
353
+ * @param {{
354
+ * startTime: string
355
+ * endTime: string
356
+ * logRequestId: string
357
+ * }} options
358
+ * @returns {Promise<IFunctionLogDetailRes>}
359
+ */
360
360
  getFunctionLogDetail(_options: IFunctionLogDetailOptions): Promise<IFunctionLogDetailRes>;
361
361
  /**
362
362
  * 获取函数的完整调用日志