summaryrefslogtreecommitdiff
path: root/data/en_us/alb
diff options
context:
space:
mode:
Diffstat (limited to 'data/en_us/alb')
-rw-r--r--data/en_us/alb/2020-06-16/api-docs.php23419
1 files changed, 23419 insertions, 0 deletions
diff --git a/data/en_us/alb/2020-06-16/api-docs.php b/data/en_us/alb/2020-06-16/api-docs.php
new file mode 100644
index 0000000..411e23a
--- /dev/null
+++ b/data/en_us/alb/2020-06-16/api-docs.php
@@ -0,0 +1,23419 @@
+<?php return [
+ 'version' => '1.0',
+ 'info' => [
+ 'style' => 'RPC',
+ 'product' => 'Alb',
+ 'version' => '2020-06-16',
+ ],
+ 'directories' => [
+ [
+ 'id' => 322361,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'DescribeRegions',
+ 'DescribeZones',
+ ],
+ ],
+ [
+ 'id' => 322364,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateLoadBalancer',
+ 'GetLoadBalancerAttribute',
+ 'DeleteLoadBalancer',
+ 'UpdateLoadBalancerAttribute',
+ 'UpdateLoadBalancerZones',
+ 'UpdateLoadBalancerEdition',
+ 'UpdateLoadBalancerAddressTypeConfig',
+ 'ListLoadBalancers',
+ 'DisableDeletionProtection',
+ 'EnableDeletionProtection',
+ 'StartShiftLoadBalancerZones',
+ 'CancelShiftLoadBalancerZones',
+ 'EnableLoadBalancerIpv6Internet',
+ 'DisableLoadBalancerIpv6Internet',
+ 'LoadBalancerJoinSecurityGroup',
+ 'LoadBalancerLeaveSecurityGroup',
+ ],
+ ],
+ [
+ 'id' => 322381,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateListener',
+ 'GetListenerAttribute',
+ 'DeleteListener',
+ 'ListListeners',
+ 'StartListener',
+ 'StopListener',
+ 'UpdateListenerAttribute',
+ 'UpdateListenerLogConfig',
+ 'GetListenerHealthStatus',
+ ],
+ ],
+ [
+ 'id' => 322391,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'AddServersToServerGroup',
+ 'CreateServerGroup',
+ 'DeleteServerGroup',
+ 'UpdateServerGroupAttribute',
+ 'UpdateServerGroupServersAttribute',
+ 'ListServerGroups',
+ 'ListServerGroupServers',
+ 'RemoveServersFromServerGroup',
+ 'ReplaceServersInServerGroup',
+ ],
+ ],
+ [
+ 'id' => 322401,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateRule',
+ 'CreateRules',
+ 'DeleteRule',
+ 'DeleteRules',
+ 'UpdateRuleAttribute',
+ 'UpdateRulesAttribute',
+ 'ListRules',
+ ],
+ ],
+ [
+ 'id' => 322409,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'AssociateAdditionalCertificatesWithListener',
+ 'DissociateAdditionalCertificatesFromListener',
+ 'ListListenerCertificates',
+ ],
+ ],
+ [
+ 'id' => 322413,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'DetachCommonBandwidthPackageFromLoadBalancer',
+ 'AttachCommonBandwidthPackageToLoadBalancer',
+ ],
+ ],
+ [
+ 'id' => 322416,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'DisableLoadBalancerAccessLog',
+ 'EnableLoadBalancerAccessLog',
+ ],
+ ],
+ [
+ 'id' => 322419,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateHealthCheckTemplate',
+ 'GetHealthCheckTemplateAttribute',
+ 'DeleteHealthCheckTemplates',
+ 'UpdateHealthCheckTemplateAttribute',
+ 'ListHealthCheckTemplates',
+ 'ApplyHealthCheckTemplateToServerGroup',
+ ],
+ ],
+ [
+ 'id' => 322426,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'CreateSecurityPolicy',
+ 'DeleteSecurityPolicy',
+ 'UpdateSecurityPolicyAttribute',
+ 'ListSecurityPolicies',
+ 'ListSecurityPolicyRelations',
+ 'ListSystemSecurityPolicies',
+ ],
+ ],
+ [
+ 'id' => 322433,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'AddEntriesToAcl',
+ 'CreateAcl',
+ 'DeleteAcl',
+ 'UpdateAclAttribute',
+ 'ListAcls',
+ 'ListAclEntries',
+ 'AssociateAclsWithListener',
+ 'ListAclRelations',
+ 'DissociateAclsFromListener',
+ 'RemoveEntriesFromAcl',
+ ],
+ ],
+ [
+ 'id' => 322444,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'MoveResourceGroup',
+ ],
+ ],
+ [
+ 'id' => 322446,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'ListTagKeys',
+ 'ListTagResources',
+ 'ListTagValues',
+ 'TagResources',
+ 'UnTagResources',
+ ],
+ ],
+ [
+ 'id' => 322452,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'ListAsynJobs',
+ ],
+ ],
+ [
+ 'id' => 322454,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'ModifyCapacityReservation',
+ 'DescribeCapacityReservation',
+ ],
+ ],
+ [
+ 'id' => 322457,
+ 'title' => null,
+ 'type' => 'directory',
+ 'children' => [
+ 'UpdateAScripts',
+ 'CreateAScripts',
+ 'DeleteAScripts',
+ 'ListAScripts',
+ ],
+ ],
+ ],
+ 'components' => [
+ 'schemas' => [],
+ ],
+ 'apis' => [
+ 'DescribeRegions' => [
+ 'summary' => 'Queries available regions.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '203',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbRXTOWD',
+ ],
+ 'tenantRelevance' => 'publicInformation',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AcceptLanguage',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '语言',
+ 'description' => 'The supported language. Valid values:'."\n"
+ ."\n"
+ .'* **zh-CN** (default): Chinese'."\n"
+ .'* **en-US**: English'."\n"
+ .'* **ja**: Japanese'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'zh-CN',
+ 'default' => 'zh-CN',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Regions' => [
+ 'title' => 'Region列表',
+ 'description' => 'The regions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'LocalName' => [
+ 'title' => '名称',
+ 'description' => 'The name of the region.'."\n",
+ 'type' => 'string',
+ 'example' => 'China (Hangzhou)',
+ ],
+ 'RegionEndpoint' => [
+ 'title' => 'endpoint',
+ 'description' => 'The endpoint of region service.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb.cn-hangzhou.aliyuncs.com',
+ ],
+ 'RegionId' => [
+ 'title' => 'RegionId',
+ 'description' => 'The ID of the region.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ ],
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Regions\\": [\\n {\\n \\"LocalName\\": \\"华东1(杭州)\\",\\n \\"RegionEndpoint\\": \\"alb.cn-hangzhou.aliyuncs.com\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ],\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\"\\n}","errorExample":""},{"type":"xml","example":"<DescribeRegionsResponse>\\n <Regions>\\n <LocalName>华东1(杭州)</LocalName>\\n <RegionEndpoint>alb.cn-hangzhou.aliyuncs.com</RegionEndpoint>\\n <RegionId>cn-hangzhou</RegionId>\\n </Regions>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</DescribeRegionsResponse>","errorExample":""}]',
+ 'title' => 'DescribeRegions',
+ ],
+ 'DescribeZones' => [
+ 'summary' => 'Queries zones in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '204',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbRXTOWD',
+ ],
+ 'tenantRelevance' => 'publicInformation',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AcceptLanguage',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The supported language. Valid values:'."\n"
+ ."\n"
+ .'* **zh-CN** (default): Chinese'."\n"
+ .'* **en-US**: English'."\n"
+ .'* **ja**: Japanese'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'zh-CN',
+ 'default' => 'zh-CN',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'Zones' => [
+ 'title' => '可用区列表',
+ 'description' => 'The zones.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The zone.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'LocalName' => [
+ 'title' => '可用区名称',
+ 'description' => 'The name of the zone.'."\n",
+ 'type' => 'string',
+ 'example' => 'Hangzhou Zone G',
+ ],
+ 'ZoneId' => [
+ 'title' => '可用区id',
+ 'description' => 'The zone ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-g',
+ ],
+ ],
+ ],
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPdzTKM4svjIT4VQig7tTMKqiHlxKt2p5Zuz45p+Lxdq',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\",\\n \\"Zones\\": [\\n {\\n \\"LocalName\\": \\"杭州 可用区G\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<DescribeZonesResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <Zones>\\n <LocalName>华东 1 可用区G</LocalName>\\n <ZoneId>cn-hangzhou-g</ZoneId>\\n </Zones>\\n</DescribeZonesResponse>","errorExample":""}]',
+ 'title' => 'DescribeZones',
+ ],
+ 'CreateLoadBalancer' => [
+ 'summary' => 'Creates an Application Load Balancer (ALB) instance in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '194',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the value, but you must ensure that it is unique among different requests. The token can only contain ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system uses the value of **RequestId** as the value of **ClientToken**. The value of the **RequestId** parameter may be different for each API request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform a dry run. Default value: false. Valid values:'."\n"
+ ."\n"
+ .'* **true:** performs a dry run. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false:** performs a dry run and sends the request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '负载均衡实例的专有网络ID。',
+ 'description' => 'The ID of the virtual private cloud (VPC) in which you want to create the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vpc-bp1b49rqrybk45nio****',
+ ],
+ ],
+ [
+ 'name' => 'AddressType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '负载均衡的地址类型',
+ 'description' => 'The type of the address of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Internet:** The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. In this case, the ALB instance can be accessed over the Internet.'."\n"
+ .'* **Intranet:** The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. In this case, the ALB instance can be accessed over the VPC in which the ALB instance is deployed.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'Internet',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '名称',
+ 'description' => 'The name of the ALB instance.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'alb1',
+ ],
+ ],
+ [
+ 'name' => 'DeletionProtectionEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启删除保护',
+ 'description' => 'Specifies whether to enable deletion protection. Default value: false. Valid values:'."\n"
+ ."\n"
+ .'* **true:** enables deletion protection.'."\n"
+ .'* **false:** disables deletion protection.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ModificationProtectionConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '负载均衡修改保护相关信息',
+ 'description' => 'The configuration read-only mode settings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Reason' => [
+ 'title' => '设置修改保护状态的原因',
+ 'description' => 'The reason for enabling the configuration read-only mode.'."\n"
+ ."\n"
+ .'The reason must be 2 to 128 characters in length, can contain letters, digits, periods (.), underscores (\\_), and hyphens (-), and must start with a letter.'."\n"
+ ."\n"
+ .'> This parameter takes effect only when **Status** is set to **ConsoleProtection**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Status' => [
+ 'title' => '负载均衡修改保护状态',
+ 'description' => 'Specifies whether to enable the configuration read-only mode. Valid values:'."\n"
+ ."\n"
+ .'* **NonProtection**: Disables the configuration read-only mode. In this case, the value of the **Reason** parameter that you specify does not take effect. If you specify **Reason**, the value of the parameter is cleared.'."\n"
+ .'* **ConsoleProtection**: Enables the configuration read-only mode. In this case, the value of the **Reason** parameter that you specify takes effect.****'."\n"
+ ."\n"
+ .'> If the parameter is set to **ConsoleProtection**, the configuration read-only mode is enabled. You cannot modify the configurations of the ALB instance in the ALB console. However, you can call API operations to modify the configurations of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ConsoleProtection',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'ZoneMappings',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '可用区及交换机映射列表',
+ 'description' => 'The mappings between zones an vSwitches. You can specify at most 10 zones. If the selected region supports two or more zones, select at least two zones to ensure the high availability of your service.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The mappings between zones an vSwitches. You can specify at most 10 zones. If the selected region supports two or more zones, select at least two zones to ensure the high availability of your service.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'VSwitchId' => [
+ 'title' => '交换机标识',
+ 'description' => 'The vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone. You can specify at most 10 zones. If the region supports two or more zones, specify at least two zones.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vsw-sersdf****',
+ ],
+ 'ZoneId' => [
+ 'title' => '可用区',
+ 'description' => 'The zone ID of the cluster. You can specify at most 10 zones. If the region supports two or more zones, specify at least two zones. You can call the [DescribeZones](~~36064~~) operation to query the most recent zone list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou-a',
+ ],
+ 'AllocationId' => [
+ 'title' => '弹性公网IP实例ID',
+ 'description' => 'The ID of the EIP to be associated with the Internet-facing ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eip-bp1aedxso6u80u0qf****',
+ ],
+ 'EipType' => [
+ 'title' => '弹性公网IP类型',
+ 'description' => 'The type of EIP. Valid values:'."\n"
+ ."\n"
+ .'* **Common**: an EIP.'."\n"
+ .'* **Anycast**: an Anycast EIP.'."\n"
+ ."\n"
+ .'> For more information about the regions in which ALB supports Anycast EIPs, see [Limits](~~460727~~).',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Common',
+ ],
+ 'IntranetAddress' => [
+ 'description' => 'The private IPv4 address.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.1',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 10,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'AddressAllocatedMode',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '地址模式',
+ 'description' => 'The mode in which IP addresses are allocated to the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Fixed** (default): a fixed IP address is assigned to the ALB instance in each zone.'."\n"
+ .'* **Dynamic**: IP addresses are dynamically allocated to the ALB instance in each zone.'."\n"
+ ."\n"
+ .'> Starting from 00:00:00 on February 25, 2025 (UTC+8), when you call this operation to create an ALB instance, the instance is automatically the [upgraded version](~~2864070~~) regardless of the mode you specify. Upgraded ALB instances no longer differentiate between IP modes. Instead, they globally auto-scale IP addresses for providing load balancing services. The ALB instances you created before this date and time are not affected.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Dynamic',
+ 'default' => 'Fixed',
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组',
+ 'description' => 'The ID of the resource group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerEdition',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '负载均衡的版本',
+ 'description' => 'The edition of the ALB instance. The features and billing rules vary based on the edition of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Basic:** basic.'."\n"
+ .'* **Standard:** standard.'."\n"
+ .'* **StandardWithWaf:** WAF-enabled.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'Standard',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerBillingConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '计费相关配置信息',
+ 'description' => 'The billing method of the ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'PayType' => [
+ 'title' => '实例的计费类型',
+ 'description' => 'The billing method of the instance.'."\n"
+ ."\n"
+ .'Set the value to **PostPay**, which specifies the pay-as-you-go billing method.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'PostPay',
+ 'default' => 'PostPay',
+ ],
+ 'BandwidthPackageId' => [
+ 'title' => '共享带宽实例ID',
+ 'description' => 'The ID of the Internet Shared Bandwidth instance that is associated with the Internet-facing ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cbwp-bp1vevu8h3ieh****',
+ ],
+ ],
+ 'required' => true,
+ ],
+ ],
+ [
+ 'name' => 'AddressIpVersion',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '协议版本',
+ 'description' => 'The protocol version. Valid values:'."\n"
+ ."\n"
+ .'* **IPv4:** IPv4.'."\n"
+ .'* **DualStack:** dual stack.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'IPv4',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key can be up to 128 characters in length, and cannot start with acs: or aliyun. It cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value can be up to 128 characters in length, and cannot start with acs: or aliyun. It cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to create an ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'LoadBalancerId' => [
+ 'title' => '负载均衡实例标识',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-o9ulmq5hgn68jk****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ResourceNotEnough.VSwitchIp',
+ 'errorMessage' => 'The specified resource %s is not enough.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.LoadBalancersNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'DuplicatedParam.ZoneId',
+ 'errorMessage' => 'The param of ZoneId is duplicated.',
+ ],
+ [
+ 'errorCode' => 'OperationDenyed.ServiceLinkedRoleNotExist',
+ 'errorMessage' => 'The service linked role AliyunServiceRoleForAlb does not exist.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.VSwitch',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'eventInfo' => [
+ 'enable' => false,
+ 'eventNames' => [],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"LoadBalancerId\\": \\"alb-o9ulmq5hqn68jk****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateLoadBalancerResponse>\\n <LoadBalancerId>alb-o9ulmq5hgn68jk****</LoadBalancerId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</CreateLoadBalancerResponse>","errorExample":""}]',
+ 'title' => 'CreateLoadBalancer',
+ 'description' => '**CreateLoadBalancer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the status of an ALB instance.'."\n"
+ ."\n"
+ .'* If an ALB instance is in the **Provisioning** state, it indicates that the ALB instance is being created.'."\n"
+ .'* If an ALB instance is in the **Active** state, it indicates that the ALB instance is created.'."\n",
+ ],
+ 'GetLoadBalancerAttribute' => [
+ 'summary' => 'Queries the details of an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '200',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ 'FEATUREslbK3ZR0L',
+ 'FEATUREslbN5IE4S',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例标识',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-o9ulmq5hgn68jk****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The details of the ALB instance configuration.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AccessLogConfig' => [
+ 'title' => '访问日志属性',
+ 'description' => 'The configuration of the access log feature.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'LogProject' => [
+ 'title' => '访问日志投递的logProject',
+ 'description' => 'The Log Service project.'."\n",
+ 'type' => 'string',
+ 'example' => 'sls-setter',
+ ],
+ 'LogStore' => [
+ 'title' => '删除保护开启时间',
+ 'description' => 'The Logstore.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ 'AddressAllocatedMode' => [
+ 'title' => '地址分配方式',
+ 'description' => 'The mode in which IP addresses are allocated. Valid values:'."\n"
+ ."\n"
+ .'* **Fixed**: allocates a static IP address to the ALB instance.'."\n"
+ .'* **Dynamic**: dynamically allocates an IP address to each zone of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'Dynamic',
+ ],
+ 'AddressType' => [
+ 'title' => '地址类型',
+ 'description' => 'The network type of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
+ .'* **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. In this case, the ALB instance can be accessed over the virtual private cloud (VPC) where the ALB instance is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'Intranet',
+ ],
+ 'BandwidthPackageId' => [
+ 'title' => '带宽包ID',
+ 'description' => 'The ID of the elastic IP address (EIP) bandwidth plan that is associated with the Internet-facing ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cbwp-bp1vevu8h3ieh****',
+ ],
+ 'CreateTime' => [
+ 'title' => '资源创建时间',
+ 'description' => 'The time when the resource was created. The time follows the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time is displayed in UTC.'."\n",
+ 'type' => 'string',
+ 'example' => '2022-07-02T02:49:05Z',
+ ],
+ 'DNSName' => [
+ 'title' => 'DNS域名',
+ 'description' => 'The domain name of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com',
+ ],
+ 'DeletionProtectionConfig' => [
+ 'title' => '负载均衡删除保护相关信息',
+ 'description' => 'The configuration of deletion protection.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Enabled' => [
+ 'title' => '删除保护状态',
+ 'description' => 'Indicates whether the deletion protection feature is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'EnabledTime' => [
+ 'title' => '删除保护开启时间',
+ 'description' => 'The time when the deletion protection feature was enabled. The time follows the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time is displayed in UTC.'."\n",
+ 'type' => 'string',
+ 'example' => '2022-08-02T02:49:05Z',
+ ],
+ ],
+ ],
+ 'LoadBalancerBillingConfig' => [
+ 'title' => '计费相关属性',
+ 'description' => 'The billing method of the ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'PayType' => [
+ 'title' => '实例的计费类型',
+ 'description' => 'The billing method.'."\n"
+ ."\n"
+ .'Only **PostPay** is returned, which indicates the pay-as-you-go billing method.'."\n",
+ 'type' => 'string',
+ 'example' => 'PostPay',
+ 'default' => 'PostPay',
+ ],
+ ],
+ ],
+ 'LoadBalancerBussinessStatus' => [
+ 'title' => '实例业务状态',
+ 'description' => 'The service status of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Abnormal**'."\n"
+ .'* **Normal**'."\n",
+ 'type' => 'string',
+ 'example' => 'Normal',
+ ],
+ 'LoadBalancerEdition' => [
+ 'title' => '负载均衡的版本',
+ 'description' => 'The edition of the ALB instance. The features and billing rules vary based on the edition of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Basic**'."\n"
+ .'* **Standard**'."\n"
+ .'* **StandardWithWaf**'."\n",
+ 'type' => 'string',
+ 'example' => 'Standard',
+ ],
+ 'LoadBalancerId' => [
+ 'title' => '负载均衡标识',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-o9ulmq5hgn68jk****',
+ ],
+ 'LoadBalancerName' => [
+ 'title' => '实例名称',
+ 'description' => 'The name of the ALB instance.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb1',
+ ],
+ 'LoadBalancerOperationLocks' => [
+ 'title' => '锁定原因',
+ 'description' => 'The type of the lock. Valid values:'."\n"
+ ."\n"
+ .'* **SecurityLocked**: The ALB instance is locked due to security reasons.'."\n"
+ .'* **RelatedResourceLocked**: The ALB instance is locked due to association issues.'."\n"
+ .'* **FinancialLocked**: The ALB instance is locked due to overdue payments.'."\n"
+ .'* **ResidualLocked**: The ALB instance is locked because the associated resources have overdue payments and the resources are released.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'LockReason' => [
+ 'title' => '锁定原因',
+ 'description' => 'The reason why the ALB instance is locked. This parameter is valid only if **LoadBalancerBussinessStatus** is set to **Abnormal**.'."\n",
+ 'type' => 'string',
+ 'example' => 'nolock',
+ ],
+ 'LockType' => [
+ 'title' => '锁定类型',
+ 'description' => 'The lock type. Valid values:'."\n"
+ ."\n"
+ .'* **SecurityLocked**: The ALB instance is locked due to security reasons.'."\n"
+ .'* **RelatedResourceLocked**: The ALB instance is locked due to other resources that are associated with the ALB instance.'."\n"
+ .'* **FinancialLocked**: The ALB instance is locked due to overdue payments.'."\n"
+ .'* **ResidualLocked**: The ALB instance is locked because the associated resources have overdue payments and the resources are released.'."\n",
+ 'type' => 'string',
+ 'example' => 'FinancialLocked',
+ ],
+ ],
+ ],
+ ],
+ 'LoadBalancerStatus' => [
+ 'title' => '实例状态',
+ 'description' => 'The status of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Inactive**: The ALB instance is disabled. ALB instances in the Inactive state do not forward traffic.'."\n"
+ .'* **Active**: The ALB instance is running.'."\n"
+ .'* **Provisioning**: The ALB instance is being created.'."\n"
+ .'* **Configuring**: The ALB instance is being modified.'."\n"
+ .'* **CreateFailed**: The system failed to create the ALB instance. In this case, you are not charged for the ALB instance. You can only delete the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'ModificationProtectionConfig' => [
+ 'title' => '负载均衡修改保护相关信息',
+ 'description' => 'The configuration read-only mode settings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Reason' => [
+ 'title' => '设置修改保护状态的原因',
+ 'description' => 'The reason why the configuration read-only mode is enabled.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 character characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n"
+ ."\n"
+ .'This parameter takes effect only if **Status** is set to **ConsoleProtection**.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Status' => [
+ 'title' => '负载均衡修改保护状态',
+ 'description' => 'Specifies whether the configuration read-only mode is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **NonProtection**: The configuration read-only mode is disabled. In this case, the value of the **Reason** parameter that you specify does not take effect. If you set **Reason**, the value is cleared.'."\n"
+ .'* **ConsoleProtection**: The configuration read-only mode is enabled. In this case, the value of the **Reason** parameter takes effect.****'."\n"
+ ."\n"
+ .'> If the parameter is set to **ConsoleProtection**, the configuration read-only mode is enabled. You cannot modify the configurations of the ALB instance in the ALB console. However, you can call API operations to modify the configurations of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'ConsoleProtection',
+ ],
+ ],
+ ],
+ 'RegionId' => [
+ 'title' => '地域',
+ 'description' => 'The region ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'ResourceGroupId' => [
+ 'title' => '企业资源组ID',
+ 'description' => 'The resource group ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ 'Tags' => [
+ 'title' => '标签列表',
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. The tag value cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '实例的标签键',
+ 'description' => 'The tag key.'."\n"
+ ."\n"
+ .'The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. It cannot start with `acs:` or `aliyun`.'."\n",
+ 'type' => 'string',
+ 'example' => 'FinanceDept',
+ ],
+ 'Value' => [
+ 'title' => '实例的标签值',
+ 'description' => 'The tag value.'."\n"
+ ."\n"
+ .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n",
+ 'type' => 'string',
+ 'example' => 'FinanceJoshua',
+ ],
+ ],
+ ],
+ ],
+ 'VpcId' => [
+ 'title' => 'Vpc网络ID',
+ 'description' => 'The ID of the VPC in which the ALB instance is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp1b49rqrybk45nio****',
+ ],
+ 'ZoneMappings' => [
+ 'title' => '负载均衡的可用区资源',
+ 'description' => 'The mappings between zones and vSwitches. At most 10 zones are returned. If the current region supports two or more zones, at least two zones are returned.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The mappings between zones and vSwitches. At most 10 zones are returned. If the current region supports two or more zones, at least two zones are returned.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'LoadBalancerAddresses' => [
+ 'title' => '固定VIP模式下,负载均衡在此可用区中的地址列表',
+ 'description' => 'The address of the ALB instance.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The address of the ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Address' => [
+ 'title' => 'IP地址',
+ 'description' => 'An IPv4 address.'."\n"
+ ."\n"
+ .'This parameter takes effect when **AddressIPVersion** is set to **IPv4** or **DualStack**. The network type is determined by the value of **AddressType**.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.10.1',
+ ],
+ 'Ipv6Address' => [
+ 'title' => 'Ipv6地址',
+ 'description' => 'An IPv6 address.'."\n"
+ ."\n"
+ .'This parameter takes effect only when **AddressIPVersion** is set to **DualStack**. The network type is determined by the value of **Ipv6AddressType**.'."\n",
+ 'type' => 'string',
+ 'example' => '2408:XXXX:39d:eb00::/56',
+ ],
+ 'IntranetAddress' => [
+ 'title' => '私网地址',
+ 'description' => 'The private IPv4 address.'."\n",
+ 'type' => 'string',
+ 'example' => '10.0.1.181',
+ ],
+ 'AllocationId' => [
+ 'description' => 'The elastic IP address (EIP).'."\n",
+ 'type' => 'string',
+ 'example' => 'eip-uf6wm****1zj9',
+ ],
+ 'EipType' => [
+ 'description' => 'The type of EIP. Valid values:'."\n"
+ ."\n"
+ .'* **Common**: an EIP.'."\n"
+ .'* **Anycast**: an Anycast EIP.'."\n"
+ ."\n"
+ .'> For more information about the regions in which ALB supports Anycast EIPs, see [Limits](~~460727~~).'."\n",
+ 'type' => 'string',
+ 'example' => 'Common',
+ ],
+ 'IntranetAddressHcStatus' => [
+ 'description' => 'The health status of the private IPv4 address of the ALB instance. '."\n"
+ .'This parameter is returned only when the Status of the zone is Active.Valid values:'."\n"
+ ."\n"
+ .'- **Healthy**'."\n"
+ ."\n"
+ .'- **Unhealthy**',
+ 'type' => 'string',
+ 'example' => 'Healthy',
+ ],
+ 'Ipv6AddressHcStatus' => [
+ 'description' => 'The health status of the private IPv6 address of the ALB instance. '."\n"
+ .'This parameter is returned only when the Status of the zone is Active.Valid values:'."\n"
+ ."\n"
+ .'- **Healthy**'."\n"
+ ."\n"
+ .'- **Unhealthy**',
+ 'type' => 'string',
+ 'example' => 'Healthy',
+ ],
+ 'Ipv4LocalAddresses' => [
+ 'description' => 'The IPv4 link-local addresses. The IP addresses that the ALB instance uses to communicate with the backend servers.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IPv4 link-local address.',
+ 'type' => 'string',
+ 'example' => '10.1.0.62',
+ ],
+ ],
+ 'Ipv6LocalAddresses' => [
+ 'description' => 'The IPv6 link-local addresses. The IP addresses that the ALB instance uses to communicate with the backend servers.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IPv6 link-local address.',
+ 'type' => 'string',
+ 'example' => '2408:xxxx:249:dd01:6f4:750f:xxxx:bcda',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'VSwitchId' => [
+ 'title' => '交换机标识',
+ 'description' => 'The vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of an ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'vsw-bp12mw1f8k3jgy****',
+ ],
+ 'ZoneId' => [
+ 'title' => '可用区标识',
+ 'description' => 'The zone ID of the ALB instance.'."\n"
+ ."\n"
+ .'You can call the [DescribeZones](~~189196~~) operation to query the most recent zone list.'."\n",
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-a',
+ ],
+ 'Status' => [
+ 'description' => 'The zone status. Valid values:'."\n"
+ ."\n"
+ .'- **Active**: The ALB instance is running.'."\n"
+ ."\n"
+ .'- **Stopped**: The ALB instance is disabled. '."\n"
+ ."\n"
+ .'- **Shifted**: The ALB instance is removed.'."\n"
+ ."\n"
+ .'- **Starting**: The ALB instance is starting.'."\n"
+ ."\n"
+ .'- **Stopping**: The ALB instance is stopping.',
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ ],
+ ],
+ ],
+ 'AddressIpVersion' => [
+ 'title' => '协议版本',
+ 'description' => 'The IP version. Valid values:'."\n"
+ ."\n"
+ .'* **IPv4**'."\n"
+ .'* **DualStack**'."\n",
+ 'type' => 'string',
+ 'example' => 'DualStack',
+ ],
+ 'Ipv6AddressType' => [
+ 'title' => 'IPV6地址类型',
+ 'description' => 'The type of IPv6 address that is used by the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
+ .'* **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. Therefore, the ALB instance can be accessed over the VPC in which the ALB instance is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'Intranet',
+ ],
+ 'SecurityGroupIds' => [
+ 'description' => 'The IDs of the security groups to which the ALB instance is added.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the security group to which the ALB instance is added.'."\n",
+ 'type' => 'string',
+ 'example' => 'sg-uf63j385dzwlm6cy****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication has failed for LoadBalancer.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"AccessLogConfig\\": {\\n \\"LogProject\\": \\"sls-setter\\",\\n \\"LogStore\\": \\"test\\"\\n },\\n \\"AddressAllocatedMode\\": \\"Dynamic\\",\\n \\"AddressType\\": \\"Intranet\\",\\n \\"BandwidthPackageId\\": \\"cbwp-bp1vevu8h3ieh****\\",\\n \\"CreateTime\\": \\"2022-07-02T02:49:05Z\\",\\n \\"DNSName\\": \\"alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com\\",\\n \\"DeletionProtectionConfig\\": {\\n \\"Enabled\\": true,\\n \\"EnabledTime\\": \\"2022-08-02T02:49:05Z\\"\\n },\\n \\"LoadBalancerBillingConfig\\": {\\n \\"PayType\\": \\"PostPay\\"\\n },\\n \\"LoadBalancerBussinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerEdition\\": \\"Standard\\",\\n \\"LoadBalancerId\\": \\"alb-o9ulmq5hgn68jk****\\",\\n \\"LoadBalancerName\\": \\"alb1\\",\\n \\"LoadBalancerOperationLocks\\": [\\n {\\n \\"LockReason\\": \\"欠费\\",\\n \\"LockType\\": \\"FinancialLocked\\"\\n }\\n ],\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"ModificationProtectionConfig\\": {\\n \\"Reason\\": \\"托管实例\\",\\n \\"Status\\": \\"ConsoleProtection\\"\\n },\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\",\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-bp1b49rqrybk45nio****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"Address\\": \\"10.1.0.61\\",\\n \\"Ipv6Address\\": \\"2408:xxxx:249:dd01:6f4:750f:xxxx:bcd9\\",\\n \\"IntranetAddress\\": \\"10.1.0.61\\",\\n \\"AllocationId\\": \\"eip-uf6wm****1zj9\\",\\n \\"EipType\\": \\"Common\\",\\n \\"IntranetAddressHcStatus\\": \\"Healthy\\",\\n \\"Ipv6AddressHcStatus\\": \\"Healthy\\",\\n \\"Ipv4LocalAddresses\\": [\\n \\"10.1.0.62\\"\\n ],\\n \\"Ipv6LocalAddresses\\": [\\n \\"2408:xxxx:249:dd01:6f4:750f:xxxx:bcda\\"\\n ]\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-bp12mw1f8k3jgy****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-a\\",\\n \\"Status\\": \\"Active\\"\\n }\\n ],\\n \\"AddressIpVersion\\": \\"DualStack\\",\\n \\"Ipv6AddressType\\": \\"Intranet\\",\\n \\"SecurityGroupIds\\": [\\n \\"sg-uf63j385dzwlm6cy****\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"<GetLoadBalancerAttributeResponse>\\n <AccessLogConfig>\\n <LogProject>sls-setter</LogProject>\\n <LogStore>test</LogStore>\\n </AccessLogConfig>\\n <AddressAllocatedMode>Dynamic</AddressAllocatedMode>\\n <AddressType>Intranet</AddressType>\\n <BandwidthPackageId>cbwp-bp1vevu8h3ieh****</BandwidthPackageId>\\n <CreateTime>2022-07-02T02:49:05Z</CreateTime>\\n <DNSName>alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com</DNSName>\\n <DeletionProtectionConfig>\\n <Enabled>true</Enabled>\\n <EnabledTime>2022-08-02T02:49:05Z</EnabledTime>\\n </DeletionProtectionConfig>\\n <LoadBalancerBillingConfig>\\n <PayType>PostPay</PayType>\\n </LoadBalancerBillingConfig>\\n <LoadBalancerBussinessStatus>Normal</LoadBalancerBussinessStatus>\\n <LoadBalancerEdition>Standard</LoadBalancerEdition>\\n <LoadBalancerId>alb-o9ulmq5hgn68jk****</LoadBalancerId>\\n <LoadBalancerName>alb1</LoadBalancerName>\\n <LoadBalancerOperationLocks>\\n <LockReason>欠费</LockReason>\\n <LockType>FinancialLocked</LockType>\\n </LoadBalancerOperationLocks>\\n <LoadBalancerStatus>Active</LoadBalancerStatus>\\n <ModificationProtectionConfig>\\n <Reason>托管实例</Reason>\\n <Status>ConsoleProtection</Status>\\n </ModificationProtectionConfig>\\n <RegionId>cn-hangzhou</RegionId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <ResourceGroupId>rg-atstuj3rtop****</ResourceGroupId>\\n <Tags>\\n <Key>FinanceDept</Key>\\n <Value>FinanceJoshua</Value>\\n </Tags>\\n <VpcId>vpc-bp1b49rqrybk45nio****</VpcId>\\n <ZoneMappings>\\n <LoadBalancerAddresses>\\n <Address>192.168.10.1</Address>\\n <Ipv6Address>2408:XXXX:39d:eb00::/56</Ipv6Address>\\n </LoadBalancerAddresses>\\n <VSwitchId>vsw-bp12mw1f8k3jgy****</VSwitchId>\\n <ZoneId>cn-hangzhou-a</ZoneId>\\n </ZoneMappings>\\n <AddressIpVersion>DualStack</AddressIpVersion>\\n <Ipv6AddressType>Intranet</Ipv6AddressType>\\n</GetLoadBalancerAttributeResponse>","errorExample":""}]',
+ 'title' => 'GetLoadBalancerAttribute',
+ ],
+ 'DeleteLoadBalancer' => [
+ 'summary' => 'Deletes an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lb-bp1b6c719dfa08ex****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The ALB instance to be deleted.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The ID of the asynchronous task.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.DeletionProtectionEnabled',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication has failed for LoadBalancer.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteLoadBalancerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</DeleteLoadBalancerResponse>","errorExample":""}]',
+ 'title' => 'DeleteLoadBalancer',
+ 'description' => '**DeleteLoadBalancer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [GetLoadBalancerAttribute](~~214362~~) to query the status of the task.'."\n"
+ ."\n"
+ .'* If an ALB instance is in the **Deleting** state, the ALB instance is being deleted.'."\n"
+ .'* If an ALB instance cannot be found, the ALB instance is deleted.'."\n",
+ ],
+ 'UpdateLoadBalancerAttribute' => [
+ 'summary' => 'Modifies the attributes of an Application Load Balancer (ALB) instance, such as the name and the configuration read-only mode.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**: performs a dry run and sends the request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed. This is the default value.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-o9ulmq5hgn68jk****',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '名称',
+ 'description' => 'The name of the ALB instance. The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'lb-instance-test',
+ ],
+ ],
+ [
+ 'name' => 'ModificationProtectionConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '负载均衡修改保护相关信息',
+ 'description' => 'The configuration read-only mode settings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Reason' => [
+ 'title' => '设置修改保护状态的原因',
+ 'description' => 'The reason for enabling the configuration read-only mode.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n"
+ ."\n"
+ .'This parameter takes effect only when **Status** is set to **ConsoleProtection**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Status' => [
+ 'title' => '负载均衡修改保护状态',
+ 'description' => 'Specifies whether to enable the configuration read-only mode. Valid values:'."\n"
+ ."\n"
+ .'* **NonProtection**: disables the configuration read-only mode. In this case, the value of the **Reason** parameter that you specify does not take effect. If you set the value of **Reason**, the value is cleared.'."\n"
+ .'* **ConsoleProtection**: enables the configuration read-only mode. In this case, the value of the **Reason** parameter that you specify takes effect.****'."\n"
+ ."\n"
+ .'> If the parameter is set to **ConsoleProtection**, the configuration read-only mode is enabled. You cannot modify the configurations of the ALB instance in the ALB console. However, you can call API operations to modify the configurations of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ConsoleProtection',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The attributes that are modified.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The ID of the synchronous task.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateLoadBalancerAttributeResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</UpdateLoadBalancerAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateLoadBalancerAttribute',
+ 'description' => '**UpdateLoadBalancerAttribute** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. You can call [GetLoadBalancerAttribute](~~214362~~) to query the status of the task.'."\n"
+ ."\n"
+ .'* If the ALB instance is in the **Configuring** state, the ALB instance is being modified.'."\n"
+ .'* If the ALB instance is in the **Active** state, the ALB instance is modified.'."\n",
+ ],
+ 'UpdateLoadBalancerZones' => [
+ 'summary' => 'Modifies the zones of an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'abilityTreeCode' => '198',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb9RALVR',
+ 'FEATUREslbFTB0NK',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lb-bp1b6c719dfa08ex****',
+ ],
+ ],
+ [
+ 'name' => 'ZoneMappings',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '可用区及交换机映射列表',
+ 'description' => 'The zones and the vSwitches in the zones. You can specify a maximum of 10 zones. If the selected region supports two or more zones, select at least two zones to ensure the high availability of your service. The specified zones and vSwitches overwrite the existing configurations.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The zones and the vSwitches in the zones. You can specify a maximum of 10 zones. If the selected region supports two or more zones, select at least two zones to ensure the high availability of your service. The specified zones and vSwitches overwrite the existing configurations.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'VSwitchId' => [
+ 'title' => '交换机标识',
+ 'description' => 'The ID of the vSwitch in the zone. By default, each zone contains one vSwitch and one subnet. You can specify at most 10 zones. If the region supports two or more zones, specify at least two zones.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vsw-bp1rmcrwg3erh1fh8****',
+ ],
+ 'ZoneId' => [
+ 'title' => '可用区',
+ 'description' => 'The zone name. You can call the [DescribeZones](~~189196~~) operation to query the most recent zone list. You can specify at most 10 zones. If the region supports two or more zones, specify at least two zones.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou-a',
+ ],
+ 'EipType' => [
+ 'title' => '弹性公网IP类型',
+ 'description' => 'The type of EIP. Valid values:'."\n"
+ ."\n"
+ .'* **Common**: an EIP.'."\n"
+ .'* **Anycast**: an Anycast EIP.'."\n"
+ ."\n"
+ .'> For more information about the regions in which ALB supports Anycast EIPs, see [Limits](~~460727~~).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Common',
+ ],
+ 'IntranetAddress' => [
+ 'description' => 'The private IPv4 address. You must specify at least two zones. You can specify a maximum of 10 zones.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.10.1',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 10,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The attributes that are modified.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The ID of the asynchronous task.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.Eip',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ZoneVSwitchChanged',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ZoneMappingsNotChanged',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotEnough.VSwitchIp',
+ 'errorMessage' => 'The specified resource %s is not enough.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.VSwitch',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'eventInfo' => [
+ 'enable' => false,
+ 'eventNames' => [],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateLoadBalancerZonesResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</UpdateLoadBalancerZonesResponse>","errorExample":""}]',
+ 'title' => 'UpdateLoadBalancerZones',
+ 'description' => '**UpdateLoadBalancerZones** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [GetLoadBalancerAttribute](~~214362~~) to query the status of the task.'."\n"
+ ."\n"
+ .'* If an ALB instance is in the **Configuring** state, the zones are being modified.'."\n"
+ .'* If an ALB instance is in the **Active** state, the zones are modified.'."\n"
+ ."\n"
+ .'> You may be charged after you call UpdateLoadBalancerZones.',
+ ],
+ 'UpdateLoadBalancerEdition' => [
+ 'summary' => 'Changes the edition of an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例Id',
+ 'description' => 'The ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lb-bp1b6c719dfa08ex****',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerEdition',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例版本',
+ 'description' => 'The edition of the ALB instance. Different editions have different limits and support different billing methods.'."\n"
+ ."\n"
+ .'* **Basic**: basic'."\n"
+ .'* **Standard**: standard'."\n"
+ .'* **StandardWithWaf**: WAF-enabled'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'Standard',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The new edition of the ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.Downgrade',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.EditionNotChanged',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateLoadBalancerEditionResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</UpdateLoadBalancerEditionResponse>","errorExample":""}]',
+ 'title' => 'UpdateLoadBalancerEdition',
+ 'description' => '* You can only upgrade a basic ALB instance to a standard ALB instance or a WAF-enabled ALB instance. You cannot downgrade a standard ALB instance or a WAF-enabled ALB instance to a basic ALB instance. For more information, see [Upgrade an ALB instance](~~214654~~).'."\n"
+ ."\n"
+ .'* **UpdateLoadBalancerEdition** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the status of an ALB instance.'."\n"
+ ."\n"
+ .' * If the ALB instance is in the **Configuring** state, the edition of the ALB instance is being modified.'."\n"
+ .' * If the ALB instance is in the **Active** state, the edition of the ALB instance is modified.',
+ ],
+ 'UpdateLoadBalancerAddressTypeConfig' => [
+ 'summary' => 'Modifies the network type of an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'abilityTreeCode' => '86743',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbXJYU12',
+ 'FEATUREslbSUND48',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-42665544****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lb-bp1o94dp5i6ea****',
+ ],
+ ],
+ [
+ 'name' => 'AddressType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '目标网络类型',
+ 'description' => 'The new network type. Valid values:'."\n"
+ ."\n"
+ .'* **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
+ .'* **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. In this case, the ALB instance can be accessed over the virtual private cloud (VPC) where the ALB instance is deployed.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'Internet',
+ ],
+ ],
+ [
+ 'name' => 'ZoneMappings',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '可用区及交换机映射列表',
+ 'description' => 'The zones and the vSwitches in the zones. You can specify a maximum of 10 zones. If the selected region supports two or more zones, select at least two zones to ensure the high availability of your service.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The zones and the vSwitches in the zones.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'VSwitchId' => [
+ 'title' => '交换机标识',
+ 'description' => 'The vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of an ALB instance. You can specify a maximum of 10 zones. If the selected region supports two or more zones, select at least two zones to ensure the high availability of your service.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vsw-bp10ttov87felojcn****',
+ ],
+ 'ZoneId' => [
+ 'title' => '可用区',
+ 'description' => 'The zone ID of the ALB instance. You can specify a maximum of 10 zones. If the selected region supports two or more zones, select at least two zones to ensure the high availability of your service.'."\n"
+ ."\n"
+ .'You can call the [DescribeZones](~~189196~~) operation to query the information about the zone.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou-a',
+ ],
+ 'AllocationId' => [
+ 'title' => '弹性公网IP',
+ 'description' => 'The ID of the elastic IP address (EIP). You can specify a maximum of 10 zones.'."\n"
+ ."\n"
+ .'> This parameter is required if you want to change the network type from internal-facing to Internet-facing.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eip-bp1aedxso6u80u0qf****',
+ ],
+ 'EipType' => [
+ 'title' => '弹性公网IP类型',
+ 'description' => 'The type of the EIP. Valid values:'."\n"
+ ."\n"
+ .'* Common (default): indicates an EIP'."\n"
+ .'* Anycast: indicates an Anycast EIP'."\n"
+ ."\n"
+ .'> For more information about the regions in which ALB supports Anycast EIPs, see [Limits](~~460727~~).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Common',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The data struct returned.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The ID of the asynchronous job.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationDenied.OnlyPostPaidEipSupported',
+ 'errorMessage' => 'The operation is not allowed because of OnlyPostPaidEipSupported.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId',
+ 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.Eip',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Eip',
+ 'errorMessage' => 'The specified resource ResourceNotFound.Eip is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.CommonBandwidthPackage',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.CommonBandwidthPackage',
+ 'errorMessage' => 'The business status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.AddressTypeNotChanged',
+ 'errorMessage' => 'The operation is not allowed because of AddressTypeNotChanged.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.CommonBandwidthPackage',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'eventInfo' => [
+ 'enable' => false,
+ 'eventNames' => [],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateLoadBalancerAddressTypeConfigResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n</UpdateLoadBalancerAddressTypeConfigResponse>","errorExample":""}]',
+ 'title' => 'UpdateLoadBalancerAddressTypeConfig',
+ 'description' => '## Prerequisites'."\n"
+ ."\n"
+ .'* An ALB instance is created. For more information about how to create an ALB instance, see [CreateLoadBalancer](~~214358~~).'."\n"
+ .'* If you want to change the network type from internal-facing to Internet-facing, you must first create an elastic IP address (EIP). For more information, see [AllocateEipAddress](~~120192~~).'."\n"
+ ."\n"
+ .'## Usage notes'."\n"
+ ."\n"
+ .'**UpdateLoadBalancerAddressTypeConfig** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .'* If an ALB instance is in the **Configuring** state, the network type is being changed.'."\n"
+ .'* If an ALB instance is in the **Active** state, the network type has been changed.'."\n",
+ ],
+ 'ListLoadBalancers' => [
+ 'summary' => 'Queries the configurations of instances.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb6TP8T4',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '用来标记当前开始读取的位置,置空表示从头开始。',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '本次读取的最大数据记录数量,此参数为可选参数,取值1-100,用户传入为空时,默认为20。',
+ 'description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'ZoneId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '可用区ID',
+ 'description' => 'The ID of the zone where the ALB instance is deployed.'."\n"
+ ."\n"
+ .'You can call the [DescribeZones](~~189196~~) operation to query zones.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'cn-hangzhou-a',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerStatus',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例状态',
+ 'description' => 'The status of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Inactive**: The ALB instance is disabled. The listeners do not forward traffic.'."\n"
+ .'* **Active**: The ALB instance is running.'."\n"
+ .'* **Provisioning**: The ALB instance is being created.'."\n"
+ .'* **Configuring**: The ALB instance is being modified.'."\n"
+ .'* **CreateFailed**: The system failed to create the ALB instance. In this case, you are not charged for the ALB instance. You can only delete the ALB instance. By default, the system deletes the ALB instances that are in the CreateFailed state within the last day.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Active',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerBussinessStatus',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例业务状态',
+ 'description' => 'The service status of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Abnormal**'."\n"
+ .'* **Normal**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Normal',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '实例ID列表,N最大支持20',
+ 'description' => 'The instance IDs. You can specify at most 20 ALB instance IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'alb-o9ulmq5hgn68jk****',
+ ],
+ 'required' => false,
+ 'maxItems' => 21,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerNames',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '实例Name列表,N最大支持10',
+ 'description' => 'The instance names. You can specify at most 10 instance names.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The instance name.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'alb-instance-test',
+ ],
+ 'required' => false,
+ 'maxItems' => 11,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'VpcIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'vpcId列表',
+ 'description' => 'The ID of the VPC to which the ALB instance belongs. You can specify at most 10 VPC IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the VPC to which the ALB instance belongs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-bp1b49rqrybk45nio****',
+ ],
+ 'required' => false,
+ 'maxItems' => 11,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'tag列表',
+ 'description' => 'The tags added to the ALB instance.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag structure.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '实例的标签键',
+ 'description' => 'The tag key. You can specify at most 20 tag keys. The tag key cannot be an empty string.'."\n"
+ ."\n"
+ .'The tag key can be up to 64 characters in length and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'KeyTest',
+ ],
+ 'Value' => [
+ 'title' => '实例的标签值',
+ 'description' => 'The tag value. You can specify at most 20 tag values. The tag value can be an empty string.'."\n"
+ ."\n"
+ .'The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'alueTest',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 21,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'AddressType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '负载均衡的地址类型',
+ 'description' => 'The network type. Valid values:'."\n"
+ ."\n"
+ .'* **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
+ .'* **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. In this case, the ALB instance can be accessed over the VPC where the ALB instance is deployed.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Intranet',
+ ],
+ ],
+ [
+ 'name' => 'PayType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '付费类型',
+ 'description' => 'The billing method of the ALB instance. Set the value to'."\n"
+ ."\n"
+ .'**PostPay**, which specifies the pay-as-you-go billing method. This is the default value.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PostPay',
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组ID',
+ 'description' => 'The ID of the resource group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-acfmxazb4ph****',
+ ],
+ ],
+ [
+ 'name' => 'AddressIpVersion',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '需要过滤的协议版本',
+ 'description' => 'The IP version. Valid values:'."\n"
+ ."\n"
+ .'* **IPv4**'."\n"
+ .'* **DualStack**',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'IPv4',
+ ],
+ ],
+ [
+ 'name' => 'Ipv6AddressType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'IPV6的地址网络类型',
+ 'description' => 'The type of IPv6 address that is used by the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
+ .'* **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. Therefore, the ALB instance can be accessed over the VPC in which the ALB instance is deployed.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Intranet',
+ ],
+ ],
+ [
+ 'name' => 'DNSName',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The domain name.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The configurations of the specified ALB instances.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'LoadBalancers' => [
+ 'title' => '实例列表',
+ 'description' => 'A list of ALB instances.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AccessLogConfig' => [
+ 'title' => '访问日志属性',
+ 'description' => 'The configurations of access logs.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'LogProject' => [
+ 'title' => '访问日志投递的logProject',
+ 'description' => 'The Simple Log Service project.'."\n",
+ 'type' => 'string',
+ 'example' => 'sls-setter',
+ ],
+ 'LogStore' => [
+ 'title' => '删除保护开启时间',
+ 'description' => 'The Logstore.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ 'AddressAllocatedMode' => [
+ 'title' => '地址模式',
+ 'description' => 'The mode in which IP addresses are allocated. Valid values:'."\n"
+ ."\n"
+ .'* **Fixed**: The ALB instance uses a static IP address.'."\n"
+ .'* **Dynamic**: dynamically allocates an IP address to each zone of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'Fixed',
+ ],
+ 'AddressType' => [
+ 'title' => '地址类型',
+ 'description' => 'The type of IP address that the ALB instance uses to provide services. Valid values:'."\n"
+ ."\n"
+ .'* **Internet**: The ALB instance is assigned a public IP address. The domain name is resolved to the public IP address. The ALB instance is accessible over the Internet.'."\n"
+ .'* **Intranet**: The ALB instance is assigned only a private IP address. The domain name is resolved to the private IP address. The ALB instance is accessible only within the VPC of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'Intranet',
+ ],
+ 'BandwidthPackageId' => [
+ 'title' => '带宽包ID',
+ 'description' => 'The ID of the Internet Shared Bandwidth instance that is associated with the Internet-facing ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'cbwp-bp1vevu8h3ieh****',
+ ],
+ 'CreateTime' => [
+ 'title' => '资源创建时间',
+ 'description' => 'The time when the resource was created.'."\n",
+ 'type' => 'string',
+ 'example' => '2022-07-02T02:49:05Z',
+ ],
+ 'DNSName' => [
+ 'title' => 'DNS域名',
+ 'description' => 'The domain name.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com',
+ ],
+ 'DeletionProtectionConfig' => [
+ 'title' => '负载均衡删除保护相关信息',
+ 'description' => 'The configuration of the deletion protection feature.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Enabled' => [
+ 'title' => '删除保护状态',
+ 'description' => 'Indicates whether deletion protection is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'EnabledTime' => [
+ 'title' => '删除保护开启时间',
+ 'description' => 'The time when deletion protection is enabled.'."\n",
+ 'type' => 'string',
+ 'example' => '2022-08-02T02:49:05Z',
+ ],
+ ],
+ ],
+ 'LoadBalancerBillingConfig' => [
+ 'title' => '计费相关属性',
+ 'description' => 'The billing information about the ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'PayType' => [
+ 'title' => '实例的计费类型',
+ 'description' => 'The billing method. Valid value:'."\n"
+ ."\n"
+ .'**PostPay**: You are charged for the ALB instance on a pay-as-you-go basis.'."\n",
+ 'type' => 'string',
+ 'example' => 'PostPay',
+ 'default' => 'PostPay',
+ ],
+ ],
+ ],
+ 'LoadBalancerBussinessStatus' => [
+ 'title' => '实例业务状态',
+ 'description' => 'The status of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Abnormal**'."\n"
+ .'* **Normal**'."\n",
+ 'type' => 'string',
+ 'example' => 'Normal',
+ ],
+ 'LoadBalancerEdition' => [
+ 'title' => '负载均衡的版本',
+ 'description' => 'The edition of the ALB instance. The features and billing rules vary based on the edition. Valid values:'."\n"
+ ."\n"
+ .'* **Basic**'."\n"
+ .'* **Standard**'."\n"
+ .'* **StandardWithWaf**'."\n",
+ 'type' => 'string',
+ 'example' => 'Standard',
+ ],
+ 'LoadBalancerId' => [
+ 'title' => '负载均衡标识',
+ 'description' => 'The ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-o9ulmq5hgn68jk****',
+ ],
+ 'LoadBalancerName' => [
+ 'title' => '实例名称',
+ 'description' => 'The name of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-instance-test',
+ ],
+ 'LoadBalancerOperationLocks' => [
+ 'title' => '锁定的原因',
+ 'description' => 'The configuration of the operation lock.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The structure of the operation lock.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'LockReason' => [
+ 'title' => '锁定的原因',
+ 'description' => 'The reason why the ALB instance is locked. This parameter is valid only if **LoadBalancerBussinessStatus** is set to **Abnormal**.'."\n",
+ 'type' => 'string',
+ 'example' => 'Test LockReason',
+ ],
+ 'LockType' => [
+ 'title' => '锁定的类型',
+ 'description' => 'The lock type. Valid values:'."\n"
+ ."\n"
+ .'* **SecurityLocked**: The ALB instance is locked due to security risks.'."\n"
+ .'* **RelatedResourceLocked**: The ALB instance is locked due to other resources associated with the ALB instance.'."\n"
+ .'* **FinancialLocked**: The ALB instance is locked due to overdue payments.'."\n"
+ .'* **ResidualLocked**: The ALB instance is locked because the associated resources have overdue payments and the resources are released.'."\n",
+ 'type' => 'string',
+ 'example' => 'FinancialLocked',
+ ],
+ ],
+ ],
+ ],
+ 'LoadBalancerStatus' => [
+ 'title' => '实例状态',
+ 'description' => 'The status of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Inactive**: The ALB instance is disabled. ALB instances in the Inactive state do not forward traffic.'."\n"
+ .'* **Active**: The ALB instance is running.'."\n"
+ .'* **Provisioning**: The ALB instance is being created.'."\n"
+ .'* **Configuring**: The ALB instance is being modified.'."\n"
+ .'* **CreateFailed**: The system failed to create the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'Active',
+ ],
+ 'ModificationProtectionConfig' => [
+ 'title' => '负载均衡修改保护相关信息',
+ 'description' => 'The configuration read-only mode settings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Reason' => [
+ 'title' => '设置修改保护状态的原因',
+ 'description' => 'The reason why the configuration read-only mode is enabled.'."\n"
+ ."\n"
+ .'The reason must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).'."\n"
+ ."\n"
+ .'This parameter takes effect only if **Status** is set to **ConsoleProtection**.'."\n",
+ 'type' => 'string',
+ 'example' => 'Test Reason',
+ ],
+ 'Status' => [
+ 'title' => '负载均衡修改保护状态',
+ 'description' => 'Indicates whether the configuration read-only mode is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **NonProtection**: The configuration read-only mode is disabled. In this case, **Reason** is not returned. If **Reason** is set, the value is cleared.'."\n"
+ .'* **ConsoleProtection**: The configuration read-only mode is enabled. In this case, **Reason** is returned.****'."\n"
+ ."\n"
+ .'> If the value is **ConsoleProtection**, the configuration read-only mode is enabled. You cannot modify the configurations of the ALB instance in the ALB console. However, you can call API operations to modify the configurations of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'ConsoleProtection',
+ ],
+ ],
+ ],
+ 'ResourceGroupId' => [
+ 'title' => '企业资源组ID',
+ 'description' => 'The ID of the resource group.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ 'Tags' => [
+ 'title' => '标签列表',
+ 'description' => 'The information about the tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag structure.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '实例的标签键',
+ 'description' => 'The tag key of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'KeyTest',
+ ],
+ 'Value' => [
+ 'title' => '实例的标签值',
+ 'description' => 'The tag value of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'alueTest',
+ ],
+ ],
+ ],
+ ],
+ 'VpcId' => [
+ 'title' => 'Vpc网络ID',
+ 'description' => 'The ID of the VPC in which the ALB instance is deployed.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp1b49rqrybk45nio****',
+ ],
+ 'AddressIpVersion' => [
+ 'title' => '协议版本',
+ 'description' => 'The IP version. Valid values:'."\n"
+ ."\n"
+ .'* **IPv4**'."\n"
+ .'* **DualStack**'."\n",
+ 'type' => 'string',
+ 'example' => 'DualStack',
+ ],
+ 'Ipv6AddressType' => [
+ 'title' => 'IPV6地址类型',
+ 'description' => 'The type of IPv6 address used by the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **Internet** The ALB instance is assigned a public IP address. The domain name is resolved to the public IP address. The ALB instance is accessible over the Internet.'."\n"
+ .'* **Intranet** The ALB instance is assigned only a private IP address. The domain name is resolved to the private IP address. The ALB instance is accessible only within the VPC of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'Intranet',
+ ],
+ 'SecurityGroupIds' => [
+ 'description' => '',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'sg-2zejdtxxpu8c9tny****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'MaxResults' => [
+ 'title' => '本次请求所返回的最大记录条数。',
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'NextToken' => [
+ 'title' => '用来表示当前调用返回读取到的位置,空代表数据已经读取完毕。',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is used to retrieve a new page of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'TotalCount' => [
+ 'title' => '本次请求条件下的数据总量。',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '100',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"LoadBalancers\\": [\\n {\\n \\"AccessLogConfig\\": {\\n \\"LogProject\\": \\"sls-setter\\",\\n \\"LogStore\\": \\"test\\"\\n },\\n \\"AddressAllocatedMode\\": \\"Fixed\\",\\n \\"AddressType\\": \\"Intranet\\",\\n \\"BandwidthPackageId\\": \\"cbwp-bp1vevu8h3ieh****\\",\\n \\"CreateTime\\": \\"2022-07-02T02:49:05Z\\",\\n \\"DNSName\\": \\"alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com\\",\\n \\"DeletionProtectionConfig\\": {\\n \\"Enabled\\": true,\\n \\"EnabledTime\\": \\"2022-08-02T02:49:05Z\\"\\n },\\n \\"LoadBalancerBillingConfig\\": {\\n \\"PayType\\": \\"PostPay\\"\\n },\\n \\"LoadBalancerBussinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerEdition\\": \\"Standard\\",\\n \\"LoadBalancerId\\": \\"alb-o9ulmq5hgn68jk****\\",\\n \\"LoadBalancerName\\": \\"alb-instance-test\\",\\n \\"LoadBalancerOperationLocks\\": [\\n {\\n \\"LockReason\\": \\"\\",\\n \\"LockType\\": \\"FinancialLocked\\"\\n }\\n ],\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"ModificationProtectionConfig\\": {\\n \\"Reason\\": \\"Managed Instance\\",\\n \\"Status\\": \\"ConsoleProtection\\"\\n },\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"KeyTest\\",\\n \\"Value\\": \\"alueTest\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-bp1b49rqryhk45nio****\\",\\n \\"AddressIpVersion\\": \\"DualStack\\",\\n \\"Ipv6AddressType\\": \\"Intranet\\",\\n \\"SecurityGroupIds\\": [\\n \\"sg-2zejdtxxpu8c9tny****\\"\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\",\\n \\"TotalCount\\": 100\\n}","errorExample":""},{"type":"xml","example":"<ListLoadBalancersResponse>\\n <LoadBalancers>\\n <AccessLogConfig>\\n <LogProject>sls-setter</LogProject>\\n <LogStore>test</LogStore>\\n </AccessLogConfig>\\n <AddressAllocatedMode>Fixed</AddressAllocatedMode>\\n <AddressType>Intranet</AddressType>\\n <BandwidthPackageId>cbwp-bp1vevu8h3ieh****</BandwidthPackageId>\\n <CreateTime>2022-07-02T02:49:05Z</CreateTime>\\n <DNSName>alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com</DNSName>\\n <DeletionProtectionConfig>\\n <Enabled>true</Enabled>\\n <EnabledTime>2022-08-02T02:49:05Z</EnabledTime>\\n </DeletionProtectionConfig>\\n <LoadBalancerBillingConfig>\\n <PayType>PostPay</PayType>\\n </LoadBalancerBillingConfig>\\n <LoadBalancerBussinessStatus>Normal</LoadBalancerBussinessStatus>\\n <LoadBalancerEdition>Standard</LoadBalancerEdition>\\n <LoadBalancerId>alb-o9ulmq5hgn68jk****</LoadBalancerId>\\n <LoadBalancerName>alb-instance-test</LoadBalancerName>\\n <LoadBalancerOperationLocks>\\n <LockReason>欠费</LockReason>\\n <LockType>FinancialLocked</LockType>\\n </LoadBalancerOperationLocks>\\n <LoadBalancerStatus>Active</LoadBalancerStatus>\\n <ModificationProtectionConfig>\\n <Reason>托管实例</Reason>\\n <Status>ConsoleProtection</Status>\\n </ModificationProtectionConfig>\\n <ResourceGroupId>rg-atstuj3rtop****</ResourceGroupId>\\n <Tags>\\n <Key>KeyTest</Key>\\n <Value>alueTest</Value>\\n </Tags>\\n <VpcId>vpc-bp1b49rqrybk45nio****</VpcId>\\n <AddressIpVersion>DualStack</AddressIpVersion>\\n <Ipv6AddressType>Intranet</Ipv6AddressType>\\n </LoadBalancers>\\n <MaxResults>20</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <TotalCount>100</TotalCount>\\n</ListLoadBalancersResponse>","errorExample":""}]',
+ 'title' => 'ListLoadBalancers',
+ ],
+ 'DisableDeletionProtection' => [
+ 'summary' => 'Disables deletion protection for an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 're-atstuj3rtop****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to disable deletion protection feature for an ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","errorExample":""},{"type":"xml","example":"<DisableDeletionProtectionResponse>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</DisableDeletionProtectionResponse>","errorExample":""}]',
+ 'title' => 'DisableDeletionProtection',
+ ],
+ 'EnableDeletionProtection' => [
+ 'summary' => 'Enables deletion protection for a resource.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The Application Load Balancer (ALB) instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 're-atstuj3rtop****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to enable the deletion protection feature.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","errorExample":""},{"type":"xml","example":"<EnableDeletionProtectionResponse>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</EnableDeletionProtectionResponse>","errorExample":""}]',
+ 'title' => 'EnableDeletionProtection',
+ ],
+ 'StartShiftLoadBalancerZones' => [
+ 'summary' => 'Removes an elastic IP address (EIP) or a virtual IP address (VIP) of a zone from a DNS record.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb9RALVR',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'."\n",
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-o9ulmq5hgn68jk****'."\n",
+ ],
+ ],
+ [
+ 'name' => 'ZoneMappings',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '可用区及交换机映射列表',
+ 'description' => 'The mappings between zones and vSwitches.'."\n"
+ ."\n"
+ .'> You can remove only one zone in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'VSwitchId' => [
+ 'title' => '交换机标识',
+ 'description' => 'The ID of the vSwitch in the zone. By default, each zone uses one vSwitch and one subnet.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vsw-bp1rmcrwg3erh1fh8****'."\n",
+ ],
+ 'ZoneId' => [
+ 'title' => '可用区',
+ 'description' => 'The zone ID. You can call the [DescribeZones](~~189196~~) operation to query the most recent zone list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou-a',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 1,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'."\n",
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.Eip',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ZoneVSwitchChanged',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ZoneMappingsNotChanged',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ZoneVSwitchNotExist',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.EniStatusNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.OnlyFixedAddressAllocatedModeSupported',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ConfigLastActiveZoneNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.ShiftLoadBalancerZonesFailed',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotEnough.VSwitchIp',
+ 'errorMessage' => 'The specified resource %s is not enough.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.VSwitch',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5A2CFF0E-5718-45B5-9D4D-70B3FF3898\\"\\n}","type":"json"}]',
+ 'title' => 'StartShiftLoadBalancerZones',
+ 'description' => 'This operation is supported by Application Load Balancer (ALB) instances that use static IP addresses. The zone cannot be removed if the ALB instance has only one available zone.'."\n",
+ ],
+ 'CancelShiftLoadBalancerZones' => [
+ 'summary' => 'Adds the elastic IP address (EIP) and virtual IP address (VIP) of a zone to a DNS record.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbFTB0NK',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'."\n",
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-o9ulmq5hgn68jk****'."\n",
+ ],
+ ],
+ [
+ 'name' => 'ZoneMappings',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '可用区及交换机映射列表',
+ 'description' => 'The mappings between zones and vSwitches.'."\n"
+ ."\n"
+ .'> You can add only one zone in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'VSwitchId' => [
+ 'title' => '交换机标识',
+ 'description' => 'The ID of the vSwitch in the zone. By default, each zone uses one vSwitch and one subnet.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'vsw-bp1rmcrwg3erh1fh8****'."\n",
+ ],
+ 'ZoneId' => [
+ 'title' => '可用区',
+ 'description' => 'The zone ID. You can call the [DescribeZones](~~189196~~) operation to query the most recent zone list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou-a',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 1,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'."\n",
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.Eip',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ZoneVSwitchChanged',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ZoneMappingsNotChanged',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ZoneVSwitchNotExist',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.EniStatusNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.OnlyFixedAddressAllocatedModeSupported',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.CancelShiftLoadBalancerZonesFailed',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotEnough.VSwitchIp',
+ 'errorMessage' => 'The specified resource %s is not enough.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.VSwitch',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5A2CFF0E-5718-45B5-9D4D-70B3FF3898\\\\n\\"\\n}","type":"json"}]',
+ 'title' => 'CancelShiftLoadBalancerZones',
+ 'description' => 'This operation is supported only by Application Load Balancer (ALB) instances that use static IP addresses. Before you call this operation, you must call the StartShiftLoadBalancerZones operation to remove the zone from the ALB instance.'."\n",
+ ],
+ 'EnableLoadBalancerIpv6Internet' => [
+ 'summary' => 'Changes the type of the IPv6 address that is used by a dual-stack Application Load Balancer (ALB) instance from private to public.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'title' => '幂等参数',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '预校验',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例ID',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-o2cvudgo6rlqz7****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'BB920797-D70E-567F-8098-55A861DD7912',
+ ],
+ 'JobId' => [
+ 'title' => '异步任务ID',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '4a6e3ad4-ef08-4ab1-b332-fa621cfe****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.NonDualStackInstance',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.Ipv6InternetInstance',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BB920797-D70E-567F-8098-55A861DD7912\\",\\n \\"JobId\\": \\"4a6e3ad4-ef08-4ab1-b332-fa621cfe****\\"\\n}","errorExample":""},{"type":"xml","example":"<EnableLoadBalancerIpv6InternetResponse>\\n <RequestId>BB920797-D70E-567F-8098-55A861DD7912</RequestId>\\n <JobId>4a6e3ad4-ef08-4ab1-b332-fa621cfe****</JobId>\\n</EnableLoadBalancerIpv6InternetResponse>","errorExample":""}]',
+ 'title' => 'EnableLoadBalancerIpv6Internet',
+ 'description' => '### Prerequisites'."\n"
+ ."\n"
+ .'An ALB instance is created and IPv4/IPv6 dual stack is enabled for the instance. You can call the [CreateLoadBalancer](~~214358~~) operation and set **AddressIpVersion** to **DualStack** to create a dual-stack ALB instance.'."\n"
+ ."\n"
+ .'> If you set **AddressIpVersion** to **DualStack**:'."\n"
+ ."\n"
+ .'* If you set **AddressType** to **Internet**, the ALB instance uses a public IPv4 IP address and a private IPv6 address.'."\n"
+ ."\n"
+ .'* If you set **AddressType** to **Intranet**, the ALB instance uses a private IPv4 IP address and a private IPv6 address.'."\n"
+ ."\n"
+ .'### Description'."\n"
+ ."\n"
+ .'* After the EnableLoadBalancerIpv6Internet operation is called, the value of **Ipv6AddressType** is changed to **Internet** and the type of the IPv6 address of the ALB instance is changed from private to public. If you upgrade the instance or the instance scales elastic network interfaces (ENIs) along with workloads, public IPv6 addresses are automatically enabled for the instance and the new ENIs. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the value of **Ipv6AddressType**.'."\n"
+ ."\n"
+ .'* **EnableLoadBalancerIpv6Internet** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .' * If the ALB instance is in the **Configuring** state, the network type of the IPv6 address that is used by the ALB instance is being changed.'."\n"
+ .' * If the ALB instance is in the **Active** state, the network type of the IPv6 address that is used by the ALB instance is changed.'."\n",
+ ],
+ 'DisableLoadBalancerIpv6Internet' => [
+ 'summary' => 'Changes the type of the IPv6 address that is used by a dual-stack Application Load Balancer (ALB) instance from public to private.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'title' => '幂等参数',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '预校验',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例ID',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-chugtlrj1iusjh****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '7D866E37-1123-5160-AFF1-BDAF5EB86A8A',
+ ],
+ 'JobId' => [
+ 'title' => '异步任务ID',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'd12871a6-ebb2-41f3-8d74-d9f452bb****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.NonDualStackInstance',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.Ipv6IntranetInstance',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7D866E37-1123-5160-AFF1-BDAF5EB86A8A\\",\\n \\"JobId\\": \\"d12871a6-ebb2-41f3-8d74-d9f452bb****\\"\\n}","errorExample":""},{"type":"xml","example":"<DisableLoadBalancerIpv6InternetResponse>\\n <RequestId>7D866E37-1123-5160-AFF1-BDAF5EB86A8A</RequestId>\\n <JobId>d12871a6-ebb2-41f3-8d74-d9f452bb****</JobId>\\n</DisableLoadBalancerIpv6InternetResponse>","errorExample":""}]',
+ 'title' => 'DisableLoadBalancerIpv6Internet',
+ 'description' => '### Prerequisites'."\n"
+ ."\n"
+ .'An ALB instance is created and IPv4/IPv6 dual stack is enabled for the instance. You can call the [CreateLoadBalancer](~~214358~~) operation and set **AddressIpVersion** to **DualStack** to create a dual-stack ALB instance.'."\n"
+ ."\n"
+ .'> If you set **AddressIpVersion** to **DualStack**:'."\n"
+ ."\n"
+ .'* If you set **AddressType** to **Internet**, the ALB instance uses a public IPv4 IP address and a private IPv6 address.'."\n"
+ .'* If you set **AddressType** to **Intranet**, the ALB instance uses a private IPv4 IP address and a private IPv6 address.'."\n"
+ ."\n"
+ .'### Description'."\n"
+ ."\n"
+ .'* After the DisableLoadBalancerIpv6Internet operation is called, the value of **Ipv6AddressType** is changed to **Intranet** and the type of the IPv6 address of the ALB instance is changed from public to private. If you upgrade the instance or the instance scales elastic network interfaces (ENIs) along with workloads, private IPv6 addresses are automatically enabled for the instance and the new ENIs. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the value of **Ipv6AddressType**.'."\n"
+ ."\n"
+ .'* **DisableLoadBalancerIpv6Internet** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .' * If the ALB instance is in the **Configuring** state, the network type of the IPv6 address that is used by the ALB instance is being changed.'."\n"
+ .' * If the ALB instance is in the **Active** state, the network type of the IPv6 address that is used by the ALB instance is changed.'."\n",
+ ],
+ 'LoadBalancerJoinSecurityGroup' => [
+ 'summary' => 'Adds an Application Load Balancer (ALB) instance to a security group.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'none',
+ 'abilityTreeCode' => '171521',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbKS6M4D',
+ 'FEATUREslb39XGK4',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'SecurityGroupIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The security group IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The security group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'sg-m5e7xkprgt1pi1ik****',
+ ],
+ 'required' => true,
+ 'maxItems' => 10,
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-h7kcw4g4nnvtqp****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => '创建结果',
+ 'description' => 'The task result.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'description' => 'The ID of the asynchronous task.'."\n",
+ 'type' => 'string',
+ 'example' => '8fe81f25-79a0-4fa0-9036-f2601fda****',
+ ],
+ 'RequestId' => [
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'D3B9AE45-F5DB-58E3-A4B5-EE58F1EC****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceAlreadyAssociated.SecurityGroup',
+ 'errorMessage' => 'The specified resource of %s is already associated.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.SecurityGroupNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.SecurityGroupNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.LbAssociatedAclCanNotJoinSecurityGroup',
+ 'errorMessage' => 'The operation is not allowed because of loadBalancer associated acl can not join security group.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Alb::2020-06-16::ListAsynJobs',
+ 'callbackInterval' => 3000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"8fe81f25-79a0-4fa0-9036-f2601fda****\\",\\n \\"RequestId\\": \\"D3B9AE45-F5DB-58E3-A4B5-EE58F1EC****\\"\\n}","type":"json"}]',
+ 'title' => 'LoadBalancerJoinSecurityGroup',
+ 'description' => '* By default, security groups are unavailable. To use security groups, contact your account manager.'."\n"
+ ."\n"
+ .'* Make sure that a security group is created. For more information about how to create security groups, see [CreateSecurityGroup](~~2679843~~).'."\n"
+ ."\n"
+ .'* Each ALB instance can be added to at most four security groups.'."\n"
+ ."\n"
+ .'* To query the security groups of an ALB instance, call the [GetLoadBalancerAttribute](~~2254835~~) operation.'."\n"
+ ."\n"
+ .'* GetLoadBalancerAttribute is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAsynJobs](~~2254893~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .' * If the task is in the Succeeded state, the ALB instance is added to the security group.'."\n"
+ .' * If the task is in the Processing state, the ALB instance is being added to the security group. In this case, you can query the task but cannot perform other operations.'."\n",
+ ],
+ 'LoadBalancerLeaveSecurityGroup' => [
+ 'summary' => 'Removes an Application Load Balancer (ALB) instance from a security group.',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'none',
+ 'abilityTreeCode' => '171520',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbKS6M4D',
+ 'FEATUREslb39XGK4',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'SecurityGroupIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The security group IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The security group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'sg-1nmf15kvwj37g2g1****',
+ ],
+ 'required' => true,
+ 'maxItems' => 10,
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-iv9gj3lpak6fbj****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The task result.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => '创建结果',
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'description' => 'The request ID.',
+ 'type' => 'string',
+ 'example' => 'EC0C96E4-7CCB-599C-9329-3A5DB6FF****',
+ ],
+ 'JobId' => [
+ 'description' => 'The ID of the asynchronous task.',
+ 'type' => 'string',
+ 'example' => '51c5b627-3500-487c-b17d-5cc583f0****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.SecurityGroupNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotAssociated.SecurityGroup',
+ 'errorMessage' => 'The specified resource of %s is not associated.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Alb::2020-06-16::ListAsynJobs',
+ 'callbackInterval' => 3000,
+ 'maxCallbackTimes' => 20,
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"EC0C96E4-7CCB-599C-9329-3A5DB6FF****\\",\\n \\"JobId\\": \\"51c5b627-3500-487c-b17d-5cc583f0****\\"\\n}","type":"json"}]',
+ 'title' => 'LoadBalancerLeaveSecurityGroup',
+ 'description' => '* LoadBalancerLeaveSecurityGroup is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAsynJobs](~~2254893~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .' * If the task is in the Succeeded state, the ALB instance is removed from the security group.'."\n"
+ .' * If the task is in the Processing state, the ALB instance is being removed from the security group. In this case, you can query the task but cannot perform other operations.'."\n",
+ ],
+ 'CreateListener' => [
+ 'summary' => 'Creates a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'abilityTreeCode' => '186',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ 'FEATUREslbK3ZR0L',
+ 'FEATUREslbN5IE4S',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '负载均衡标识',
+ 'description' => 'The ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-n5qw04uq8vavfe****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the value, but you must make sure that it is unique among all requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not set this parameter, the system automatically uses the value of **RequestId** as the value of **ClientToken**. **RequestId** may be different for each API request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a precheck. Valid values:'."\n"
+ ."\n"
+ .'* **true**: prechecks the request without creating a listener. The system checks the required parameters, request syntax, and limits. If the request fails the precheck, an error code is returned based on the cause of the failure. If the request passes the precheck, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): sends the API request. If the request passes the precheck, a 2xx HTTP status code is returned and the system proceeds to create a listener.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ListenerProtocol',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听协议',
+ 'description' => 'The listener protocol.'."\n"
+ ."\n"
+ .'Valid values: **HTTP**, **HTTPS**, and **QUIC**.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'HTTP',
+ ],
+ ],
+ [
+ 'name' => 'ListenerPort',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听端口',
+ 'description' => 'The frontend port that is used by the ALB instance.'."\n"
+ ."\n"
+ .'Valid values: **1 to 65535**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'example' => '80',
+ ],
+ ],
+ [
+ 'name' => 'ListenerDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听描述',
+ 'description' => 'The name of the listener.'."\n"
+ ."\n"
+ .'The description must be 2 to 256 characters in length, and can contain letters, digits, hyphens (-), forward slashes (/), periods (.), and underscores (\\_). Regular expressions are supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP_80',
+ ],
+ ],
+ [
+ 'name' => 'RequestTimeout',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '请求超时时间',
+ 'description' => 'The timeout period of a request. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **1 to 180**.'."\n"
+ ."\n"
+ .'Default value: **60**.'."\n"
+ ."\n"
+ .'If no response is received from the backend server during the request timeout period, ALB sends an `HTTP 504` error code to the client.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'minimum' => '1',
+ 'example' => '60',
+ 'default' => '60',
+ ],
+ ],
+ [
+ 'name' => 'IdleTimeout',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '连接空闲超时时间',
+ 'description' => 'The timeout period of an idle connection. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **1 to 60**.'."\n"
+ ."\n"
+ .'Default value: **15**.'."\n"
+ ."\n"
+ .'If no requests are received within the specified timeout period, ALB closes the current connection. When a new request is received, ALB establishes a new connection.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'minimum' => '1',
+ 'example' => '3',
+ 'default' => '15',
+ ],
+ ],
+ [
+ 'name' => 'GzipEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启Gzip压缩',
+ 'description' => 'Specifies whether to enable `Gzip` compression to compress specific types of files. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default): enables Gzip compression.'."\n"
+ .'* **false**: disables Gzip compression.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'Http2Enabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启HTTP/2特性',
+ 'description' => 'Specifies whether to enable `HTTP/2`. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default): enables HTTP/2.'."\n"
+ .'* **false**: disables HTTP/2.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'SecurityPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '安全策略',
+ 'description' => 'The ID of the security policy. System security policies and custom security policies are supported.'."\n"
+ ."\n"
+ .'Default value: **tls_cipher_policy\\_1\\_0** (system security policy).'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tls_cipher_policy_1_0',
+ ],
+ ],
+ [
+ 'name' => 'CaEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启双向认证',
+ 'description' => 'Specifies whether to enable mutual authentication. Valid values:'."\n"
+ ."\n"
+ .'* **true**: enables mutual authentication.'."\n"
+ .'* **false** (default): disables mutual authentication.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'XForwardedForConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'XForward字段相关的配置',
+ 'description' => 'The configuration of the XForward header.',
+ 'type' => 'object',
+ 'properties' => [
+ 'XForwardedForClientCertClientVerifyAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertClientVerifyEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertClientVerifyEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_client-verify-alias_123456',
+ ],
+ 'XForwardedForClientCertClientVerifyEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-clientverify 头字段获取对访问负载均衡实例客户端证书的校验结果。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Clientcert-clientverify` header to retrieve the verification result of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**: uses the X-Forwarded-Clientcert-clientverify header.'."\n"
+ .'* **false** (default): does not use the X-Forwarded-Clientcert-clientverify header.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertFingerprintAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertFingerprintEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertFingerprintEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_finger-print-alias_123456',
+ ],
+ 'XForwardedForClientCertFingerprintEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-fingerprint 头字段获取访问负载均衡实例客户端证书的指纹取值,HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Clientcert-fingerprint` header to retrieve the fingerprint of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**: uses the X-Forwarded-Clientcert-fingerprint header.'."\n"
+ .'* **false** (default): does not use the X-Forwarded-Clientcert-fingerprint header.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertIssuerDNAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertIssuerDNEnabled的值为‘On’的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertIssuerDNEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_issue-dn-alias_123456',
+ ],
+ 'XForwardedForClientCertIssuerDNEnabled' => [
+ 'title' => '是否通过 X-Forwarded-Clientcert-issuerdn 头字段获取访问负载均衡实例客户端证书的发行者信息。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Clientcert-issuerdn` header to retrieve information about the authority that issues the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**: uses the X-Forwarded-Clientcert-issuerdn header.'."\n"
+ .'* **false** (default): does not use the X-Forwarded-Clientcert-issuerdn header.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertSubjectDNAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertSubjectDNEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertSubjectDNEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_subject-dn-alias_123456',
+ ],
+ 'XForwardedForClientCertSubjectDNEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-subjectdn 头字段获取访问负载均衡实例客户端证书的所有者信息。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Clientcert-subjectdn` header to retrieve information about the owner of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**: uses the X-Forwarded-Clientcert-subjectdn header.'."\n"
+ .'* **false** (default): does not use the X-Forwarded-Clientcert-subjectdn header.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientSrcPortEnabled' => [
+ 'title' => '是否通过X-Forwarded-Client-Port 头字段获取访问负载均衡实例客户端的端口。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Client-srcport` header to retrieve the client port. Valid values:'."\n"
+ ."\n"
+ .'* **true**: uses the X-Forwarded-Client-srcport header.'."\n"
+ .'* **false** (default): does not use the X-Forwarded-Client-srcport header.'."\n"
+ ."\n"
+ .'> HTTP and HTTPS listeners support this parameter.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'XForwardedForEnabled' => [
+ 'title' => '是否开启通过X-Forwarded-For头字段获取来访者真实 IP',
+ 'description' => 'Specifies whether to use the `X-Forwarded-For` header to retrieve client IP addresses. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> HTTP and HTTPS listeners support this parameter.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'XForwardedForProcessingMode' => [
+ 'description' => 'Specifies how the `X-Forwarded-For` header is processed. This parameter takes effect only when **XForwardedForEnabled** is set to **true**. Valid values:'."\n"
+ ."\n"
+ .'* **append** (default)'."\n"
+ .'* **remove**'."\n"
+ ."\n"
+ .'> * If this parameter is set to **append**, ALB appends the IP address of the last hop to the existing `X-Forwarded-For` header in the request before the request is sent to backend servers.'."\n"
+ .'> * If this parameter is set to **remove**, ALB removes the `X-Forwarded-For` header in the request before the request is sent to backend servers, no matter whether the request carries the `X-Forwarded-For` header.'."\n"
+ .'> * This parameter is only available for HTTP and HTTPS listeners.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'append',
+ ],
+ 'XForwardedForProtoEnabled' => [
+ 'title' => '是否通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Proto` header to retrieve the listener protocol of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**: uses the X-Forwarded-Proto header.'."\n"
+ .'* **false** (default): does not use the X-Forwarded-Proto header.'."\n"
+ ."\n"
+ .'> HTTP, HTTPS, and QUIC listeners support this parameter.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForSLBIdEnabled' => [
+ 'title' => '是否通过SLB-ID头字段获取负载均衡实例ID。',
+ 'description' => 'Specifies whether to use the `SLB-ID` header to retrieve the ID of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**: uses the SLB-ID header.'."\n"
+ .'* **false** (default): does not use the SLB-ID header.'."\n"
+ ."\n"
+ .'> HTTP, HTTPS, and QUIC listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForSLBPortEnabled' => [
+ 'title' => '是否通过X-Forwarded-Port 头字段获取负载均衡实例的监听端口。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Port` header to retrieve the listener port of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**: uses the X-Forwarded-Port header.'."\n"
+ .'* **false** (default): does not use the X-Forwarded-Port header.'."\n"
+ ."\n"
+ .'> HTTP, HTTPS, and QUIC listeners support this parameter.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientSourceIpsEnabled' => [
+ 'description' => 'Specifies whether to allow the ALB instance to retrieve client IP addresses from the `X-Forwarded-For` header. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n"
+ ."\n"
+ .'> HTTP and HTTPS listeners support this parameter.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientSourceIpsTrusted' => [
+ 'description' => 'The trusted proxy IP address.'."\n"
+ ."\n"
+ .'ALB traverses `X-Forwarded-For` backwards and selects the first IP address that is not in the trusted IP list as the originating IP address of the client, which will be throttled if source IP address throttling is enabled.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.1.1.0/24',
+ ],
+ 'XForwardedForHostEnabled' => [
+ 'description' => 'Specifies whether to use the `X-Forwarded-Host` header to retrieve the client domain name. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n"
+ ."\n"
+ .'> This parameter is available for HTTP, HTTPS, and QUIC listeners.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'QuicConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'HTTPS启用QUIC时相关属性',
+ 'description' => 'Select a QUIC listener and associate it with the ALB instance.',
+ 'type' => 'object',
+ 'properties' => [
+ 'QuicListenerId' => [
+ 'title' => '需要关联的QUIC监听ID,HTTPS监听时有效,QuicUpgradeEnabled为true时必选',
+ 'description' => 'The ID of the QUIC listener that you want to associate with the HTTPS listener. Only HTTPS listeners support this parameter. This parameter is required when **QuicUpgradeEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'> The HTTPS listener and the QUIC listener must be added to the same ALB instance. Make sure that the QUIC listener is not associated with any other listeners.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'lsn-o4u54y73wq7b******',
+ ],
+ 'QuicUpgradeEnabled' => [
+ 'title' => '是否开启quic升级,HTTPS监听时有效',
+ 'description' => 'Specifies whether to enable QUIC upgrade. Valid values:'."\n"
+ ."\n"
+ .'* **true**: enables QUIC upgrade.'."\n"
+ .'* **false** (default): disables QUIC upgrade.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'Certificates',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '监听默认服务器证书列表,N当前取值范围为1',
+ 'description' => 'The details about each certificate.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the certificate.',
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '正式标识',
+ 'description' => 'The ID of the certificate. Only server certificates are supported. You can specify up to 20 certificate IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '103705*******',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 1,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'CaCertificates',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '监听默认CA证书列表,N当前取值范围为1',
+ 'description' => 'The certificate authority (CA) certificates. You can specify only one CA certificate.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The CA hierarchy.',
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '正式标识',
+ 'description' => 'The ID of the CA certificate.'."\n"
+ ."\n"
+ .'> This parameter is required if **CaEnabled** is set to **true**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123157*******',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 1,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'DefaultActions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '监听默认动作',
+ 'description' => 'The actions of the forwarding rule.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'ForwardGroupConfig' => [
+ 'title' => '转发组',
+ 'description' => 'The configuration of the forwarding action. You can specify at most 20 actions.',
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '服务器组列表',
+ 'description' => 'The destination server group to which requests are forwarded.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组ID',
+ 'description' => 'The ID of the server group to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sgp-8ilqs4axp6******',
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => true,
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'Type' => [
+ 'title' => '动作类型',
+ 'description' => 'The action type. You can specify only one action type. Valid value:'."\n"
+ ."\n"
+ .'**ForwardGroup**: forwards requests to multiple Server groups.',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'ForwardGroup',
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => true,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.',
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The ID of the asynchronous task.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'ListenerId' => [
+ 'title' => '监听标识',
+ 'description' => 'The ID of the listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsn-o4u54y73wq7b******',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876*******',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ResourceAlreadyExist.Listener',
+ 'errorMessage' => 'The specified resource %s is already exist.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerListenersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.CrossLoadBalancerQUICListener',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceAlreadyAssociated.Listener',
+ 'errorMessage' => 'The specified resource %s is already associated.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.SecurityPolicyAttachedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerAddedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.VpcId',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ServerGroupProtocolNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of ServerGroupProtocolNotSupport.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.GRPCServerGroup',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.LoadBalancerEditionAndConnectionDrain',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.LoadBalancerEditionAndSlowStartEnable',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter, please check the parameter input.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.SecurityPolicy',
+ 'errorMessage' => 'Authentication has failed for SecurityPolicy.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.Listener',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Certificate',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"ListenerId\\": \\"lsn-o4u54y73wq7b******\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876*******\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateListenerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <ListenerId>lsr-bp1bpn0kn908w4nbw****</ListenerId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</CreateListenerResponse>","errorExample":""}]',
+ 'title' => 'CreateListener',
+ 'description' => '## Usage notes'."\n"
+ ."\n"
+ .'**CreateListener** is an asynchronous operation. After you call this operation, the system returns a request ID. However, the operation is still being performed in the background. You can call the [GetListenerAttribute](~~214353~~) operation to query the status of the HTTP, HTTPS, or QUIC listener.'."\n"
+ ."\n"
+ .'* If the HTTP, HTTPS, or QUIC listener is in the **Provisioning** state, it indicates that the listener is being created.'."\n"
+ .'* If the HTTP, HTTPS, or QUIC listener is in the **Running** state, it indicates that the listener has been created successfully.'."\n",
+ ],
+ 'GetListenerAttribute' => [
+ 'summary' => 'Queries the details about a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '189',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ 'FEATUREslbK3ZR0L',
+ 'FEATUREslbN5IE4S',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听标识',
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The details about the listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AclConfig' => [
+ 'title' => 'ACL相关配置信息',
+ 'description' => 'The configurations of the access control lists (ACLs).'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AclRelations' => [
+ 'title' => '监听绑定的访问策略组',
+ 'description' => 'The IDs of the ACLs that are associated with the listener.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The structure of the ACL that is associated with the listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AclId' => [
+ 'title' => 'ACL标识',
+ 'description' => 'The ID of the ACL that is associated with the listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'acl-doc****',
+ ],
+ 'Status' => [
+ 'title' => 'ACL与监听关联的状态',
+ 'description' => 'Indicates whether the ACL is associated with the listener. Valid values:'."\n"
+ ."\n"
+ .'* **Associating**'."\n"
+ .'* **Associated**'."\n"
+ .'* **Dissociating**'."\n",
+ 'type' => 'string',
+ 'example' => 'Associating',
+ ],
+ ],
+ ],
+ ],
+ 'AclType' => [
+ 'title' => '访问控制类型',
+ 'description' => 'The type of the ACL. Valid values:'."\n"
+ ."\n"
+ .'* **White**: a whitelist. Only requests from the IP addresses or CIDR blocks in the network ACL are forwarded. Whitelists are applicable to scenarios in which you want to allow only specific IP addresses to access an application. Your service may be adversely affected if the whitelist is not properly configured. If a whitelist is configured for a listener, only requests from IP addresses that are on the whitelist are forwarded by the listener.'."\n"
+ ."\n"
+ .' If you enable a whitelist but do not add an IP address to the whitelist, the listener forwards all requests.'."\n"
+ ."\n"
+ .'* **Black**: a blacklist. Requests from the IP addresses or CIDR blocks in the network ACL are denied. Blacklists are suitable for scenarios in which you want to deny access from specific IP addresses or CIDR blocks to an application.'."\n"
+ ."\n"
+ .' If a blacklist is configured for a listener but no IP addresses are added to the blacklist, the listener forwards all requests.'."\n",
+ 'type' => 'string',
+ 'example' => 'White',
+ ],
+ ],
+ ],
+ 'Certificates' => [
+ 'title' => '监听默认服务器证书列表,N当前取值范围为1',
+ 'description' => 'A list of certificates.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the certificate.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '正式标识',
+ 'description' => 'The ID of the certificate. Only server certificates are supported.'."\n",
+ 'type' => 'string',
+ 'example' => '12315790212_166f8204689_1714763408_70998****',
+ ],
+ ],
+ ],
+ ],
+ 'CaCertificates' => [
+ 'title' => '监听默认CA证书列表,N当前取值范围为1',
+ 'description' => 'A list of default CA certificates.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '正式标识',
+ 'description' => 'The ID of the default CA certificate.'."\n",
+ 'type' => 'string',
+ 'example' => '139a00604bd-cn-east-hangzho****',
+ ],
+ 'Status' => [
+ 'title' => '证书状态',
+ 'description' => 'The status of the certificate.'."\n",
+ 'type' => 'string',
+ 'example' => 'Associated',
+ ],
+ 'IsDefault' => [
+ 'title' => '是否为默认证书',
+ 'description' => 'Indicates whether the certificate is a default certificate: Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ ],
+ 'CaEnabled' => [
+ 'title' => '是否开启双向认证',
+ 'description' => 'Indicates whether mutual authentication is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'DefaultActions' => [
+ 'title' => '默认动作',
+ 'description' => 'The actions of the default forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the default forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ForwardGroupConfig' => [
+ 'title' => '转发到服务器组',
+ 'description' => 'The configuration of the ForwardGroup action. This parameter is returned and takes effect when Type is set to **ForwardGroup**.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '服务器组列表',
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server groups to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组ID',
+ 'description' => 'The ID of the server group to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'example' => 'rsp-cige6j****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'Type' => [
+ 'title' => '类型',
+ 'description' => 'The type of the action.'."\n"
+ ."\n"
+ .'If **ForwardGroup** is returned, requests are forwarded to multiple vServer groups.'."\n",
+ 'type' => 'string',
+ 'example' => 'ForwardGroup',
+ ],
+ ],
+ ],
+ ],
+ 'GzipEnabled' => [
+ 'title' => '是否开启Gzip压缩',
+ 'description' => 'Indicates whether GZIP compression is enabled to compress specific types of files. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'Http2Enabled' => [
+ 'title' => '是否开启HTTP/2特性',
+ 'description' => 'Indicates whether HTTP/2 is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'IdleTimeout' => [
+ 'title' => '连接空闲超时时间',
+ 'description' => 'The timeout period of an idle connection. Unit: seconds.'."\n"
+ ."\n"
+ .'If no requests are received within the specified timeout period, Application Load Balancer (ALB) closes the current connection. When a request is received, ALB establishes a new connection.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'ListenerDescription' => [
+ 'title' => '监听描述',
+ 'description' => 'The name of the listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'ListenerId' => [
+ 'title' => '监听标识',
+ 'description' => 'The ID of the listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ 'ListenerPort' => [
+ 'title' => '监听端口',
+ 'description' => 'The frontend port that is used by the ALB instance.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ 'ListenerProtocol' => [
+ 'title' => '监听协议',
+ 'description' => 'The listener protocol. Valid values: **HTTP**, **HTTPS**, and **QUIC**.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP',
+ ],
+ 'ListenerStatus' => [
+ 'title' => '监听状态',
+ 'description' => 'The status of the listener. Valid values:'."\n"
+ ."\n"
+ .'* **Provisioning**'."\n"
+ .'* **Running**'."\n"
+ .'* **Configuring**'."\n"
+ .'* **Stopped**'."\n",
+ 'type' => 'string',
+ 'example' => 'Running',
+ ],
+ 'LoadBalancerId' => [
+ 'title' => '负载均衡标识',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'lb-bp1o94dp5i6ea****',
+ ],
+ 'LogConfig' => [
+ 'title' => '监听访问日志相关配置',
+ 'description' => 'The logging configuration.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AccessLogRecordCustomizedHeadersEnabled' => [
+ 'title' => '访问日志是否开启携带自定义Header',
+ 'description' => 'Indicates whether custom headers are recorded in the access log. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'AccessLogTracingConfig' => [
+ 'title' => '访问日志Xtrace相关的配置',
+ 'description' => 'The configuration of Xtrace. Xtrace is used to record requests sent to ALB.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TracingEnabled' => [
+ 'title' => 'Xtrace功能状态',
+ 'description' => 'Indicates whether Xtrace is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> You can set this parameter to **true** only if the AccessLogEnabled parameter is set to true.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'TracingSample' => [
+ 'title' => 'Xtrace功能状态',
+ 'description' => 'The sampling rate of Xtrace. Valid values: 1 to 10000.'."\n"
+ ."\n"
+ .'> If **TracingEnabled** is set to **true**, this parameter is valid.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '100',
+ ],
+ 'TracingType' => [
+ 'title' => 'xtrace的类型',
+ 'description' => 'The Xtrace type. Supported Xtrace type: **Zipkin**.'."\n"
+ ."\n"
+ .'> If **TracingEnabled** is set to **true**, this parameter is valid.'."\n",
+ 'type' => 'string',
+ 'example' => 'Zipkin',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'QuicConfig' => [
+ 'title' => 'HTTPS启用QUIC时相关属性',
+ 'description' => 'The configuration information when the listener is associated with a QUIC listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QuicListenerId' => [
+ 'title' => '需要关联的QUIC监听ID,HTTPS监听时有效,QuicUpgradeEnabled为true时必选',
+ 'description' => 'The ID of the QUIC listener. This parameter is returned when **QuicUpgradeEnabled** is set to **true**. Only HTTPS listeners support this parameter.'."\n"
+ ."\n"
+ .'> You must associate the HTTPS listener and the QUIC listener with the same ALB instance. In addition, make sure that the QUIC listener has never been associated with another listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsn-333',
+ ],
+ 'QuicUpgradeEnabled' => [
+ 'title' => '是否开启quic升级,HTTPS监听时有效',
+ 'description' => 'Indicates whether QUIC upgrade is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'RequestTimeout' => [
+ 'title' => '请求超时时间',
+ 'description' => 'The timeout period of a request. Unit: seconds.'."\n"
+ ."\n"
+ .'If no responses are received from the backend server within the specified timeout period, ALB returns an `HTTP 504` error code to the client.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '34',
+ ],
+ 'SecurityPolicyId' => [
+ 'title' => '安全策略',
+ 'description' => 'The security policy.'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'tls_cipher_policy_1_1',
+ ],
+ 'XForwardedForConfig' => [
+ 'title' => 'XForward字段相关的配置',
+ 'description' => 'The configuration of the XForward headers.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'XForwardedForClientCertClientVerifyAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertClientVerifyEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertClientVerifyEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name is 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'test_client-verify-alias_123456',
+ ],
+ 'XForwardedForClientCertClientVerifyEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-clientverify 头字段获取对访问负载均衡实例客户端证书的校验结果。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Clientcert-clientverify` header is used to retrieve the verification result of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertFingerprintAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertFingerprintEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertFingerprintEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name is 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'test_finger-print-alias_123456',
+ ],
+ 'XForwardedForClientCertFingerprintEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-fingerprint 头字段获取访问负载均衡实例客户端证书的指纹取值,HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Clientcert-fingerprint` header is used to retrieve the fingerprint of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertIssuerDNAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertIssuerDNEnabled的值为‘On’的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertIssuerDNEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name is 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'test_issue-dn-alias_123456',
+ ],
+ 'XForwardedForClientCertIssuerDNEnabled' => [
+ 'title' => '是否通过 X-Forwarded-Clientcert-issuerdn 头字段获取访问负载均衡实例客户端证书的发行者信息。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Clientcert-issuerdn` header is used to retrieve information about the authority that issues the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertSubjectDNAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertSubjectDNEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertSubjectDNEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name is 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'test_subject-dn-alias_123456',
+ ],
+ 'XForwardedForClientCertSubjectDNEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-subjectdn 头字段获取访问负载均衡实例客户端证书的所有者信息。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Clientcert-subjectdn` header is used to retrieve information about the owner of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientSrcPortEnabled' => [
+ 'title' => '是否通过X-Forwarded-Client-Port 头字段获取访问负载均衡实例客户端的端口。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Client-Port` header is used to retrieve the client port. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTP or HTTPS listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForEnabled' => [
+ 'title' => '是否开启通过X-Forwarded-For头字段获取来访者真实 IP',
+ 'description' => 'Indicates whether the `X-Forwarded-For` header is used to retrieve the client IP address. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> * If this parameter is set to **true**, the default value of the **XForwardedForProcessingMode** parameter is **append**. You can change it to **remove**.'."\n"
+ .'> * If this parameter is set to **false**, the `X-Forwarded-For` header in the request is not modified in any way before the request is sent to backend servers.'."\n"
+ .'> * This parameter is only available for HTTP and HTTPS listeners.',
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForProcessingMode' => [
+ 'description' => 'Specifies how the `X-Forwarded-For` header is processed. This parameter takes effect only when **XForwardedForEnabled** is set to **true**. Valid values:'."\n"
+ ."\n"
+ .'* **append** (default)'."\n"
+ .'* **remove**'."\n"
+ ."\n"
+ .'> * If this parameter is set to **append**, ALB appends the IP address of the last hop to the existing `X-Forwarded-For` header in the request before the request is sent to backend servers.'."\n"
+ .'> * If this parameter is set to **remove**, ALB removes the `X-Forwarded-For` header in the request before the request is sent to backend servers, no matter whether the request carries the `X-Forwarded-For` header.'."\n"
+ .'> * This parameter is only available for HTTP and HTTPS listeners.',
+ 'type' => 'string',
+ 'example' => 'append',
+ ],
+ 'XForwardedForProtoEnabled' => [
+ 'title' => '是否通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议。',
+ 'description' => 'Indicates whether the `X-Forwarded-Proto` header is used to retrieve the listening protocol. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTP, HTTPS, or QUIC listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForSLBIdEnabled' => [
+ 'title' => '是否通过SLB-ID头字段获取负载均衡实例ID。',
+ 'description' => 'Indicates whether the `SLB-ID` header is used to retrieve the ID of the CLB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTP, HTTPS, or QUIC listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForSLBPortEnabled' => [
+ 'title' => '是否通过X-Forwarded-Port 头字段获取负载均衡实例的监听端口。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Port` header is used to retrieve the listening port of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTP, HTTPS, or QUIC listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientSourceIpsEnabled' => [
+ 'description' => 'Indicates whether the `X-Forwarded-Client-Ip` header is used to retrieve the source port of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTP, HTTPS, or QUIC listener.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientSourceIpsTrusted' => [
+ 'description' => 'The trusted proxy IP address.'."\n"
+ ."\n"
+ .'ALB traverses `X-Forwarded-For` backward and selects the first IP address that is not on the trusted IP address list as the real IP address of the client. The IP address is used in source IP address throttling.'."\n",
+ 'type' => 'string',
+ 'example' => '10.1.1.0/24',
+ ],
+ 'XForwardedForHostEnabled' => [
+ 'description' => 'Specifies whether to use the `X-Forwarded-Host` header to retrieve the client domain name. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n"
+ ."\n"
+ .'> This parameter is available for HTTP, HTTPS, and QUIC listeners.',
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.',
+ 'type' => 'string',
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.',
+ 'type' => 'string',
+ 'example' => 'product',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"AclConfig\\": {\\n \\"AclRelations\\": [\\n {\\n \\"AclId\\": \\"acl-doc****\\",\\n \\"Status\\": \\"Associating\\"\\n }\\n ],\\n \\"AclType\\": \\"White\\"\\n },\\n \\"Certificates\\": [\\n {\\n \\"CertificateId\\": \\"123157*******\\"\\n }\\n ],\\n \\"CaCertificates\\": [\\n {\\n \\"CertificateId\\": \\"139a00*****\\",\\n \\"Status\\": \\"Associated\\",\\n \\"IsDefault\\": true\\n }\\n ],\\n \\"CaEnabled\\": false,\\n \\"DefaultActions\\": [\\n {\\n \\"ForwardGroupConfig\\": {\\n \\"ServerGroupTuples\\": [\\n {\\n \\"ServerGroupId\\": \\"sgp-i5qt20******\\"\\n }\\n ]\\n },\\n \\"Type\\": \\"ForwardGroup\\"\\n }\\n ],\\n \\"GzipEnabled\\": true,\\n \\"Http2Enabled\\": true,\\n \\"IdleTimeout\\": 2,\\n \\"ListenerDescription\\": \\"HTTP_80\\",\\n \\"ListenerId\\": \\"lsn-o4u54y73wq7b******\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"HTTP\\",\\n \\"ListenerStatus\\": \\"Running\\",\\n \\"LoadBalancerId\\": \\"alb-bd6oylbckp6k9x****\\",\\n \\"LogConfig\\": {\\n \\"AccessLogRecordCustomizedHeadersEnabled\\": true,\\n \\"AccessLogTracingConfig\\": {\\n \\"TracingEnabled\\": true,\\n \\"TracingSample\\": 100,\\n \\"TracingType\\": \\"Zipkin\\"\\n }\\n },\\n \\"QuicConfig\\": {\\n \\"QuicListenerId\\": \\"lsn-ek6ad66t****\\",\\n \\"QuicUpgradeEnabled\\": true\\n },\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\",\\n \\"RequestTimeout\\": 34,\\n \\"SecurityPolicyId\\": \\"tls_cipher_policy_1_1\\",\\n \\"XForwardedForConfig\\": {\\n \\"XForwardedForClientCertClientVerifyAlias\\": \\"test_client-verify-alias_123456\\",\\n \\"XForwardedForClientCertClientVerifyEnabled\\": true,\\n \\"XForwardedForClientCertFingerprintAlias\\": \\"test_finger-print-alias_123456\\",\\n \\"XForwardedForClientCertFingerprintEnabled\\": true,\\n \\"XForwardedForClientCertIssuerDNAlias\\": \\"test_issue-dn-alias_123456\\",\\n \\"XForwardedForClientCertIssuerDNEnabled\\": true,\\n \\"XForwardedForClientCertSubjectDNAlias\\": \\"test_subject-dn-alias_123456\\",\\n \\"XForwardedForClientCertSubjectDNEnabled\\": true,\\n \\"XForwardedForClientSrcPortEnabled\\": true,\\n \\"XForwardedForEnabled\\": true,\\n \\"XForwardedForProcessingMode\\": \\"append\\",\\n \\"XForwardedForProtoEnabled\\": true,\\n \\"XForwardedForSLBIdEnabled\\": true,\\n \\"XForwardedForSLBPortEnabled\\": true,\\n \\"XForwardedForClientSourceIpsEnabled\\": false,\\n \\"XForwardedForClientSourceIpsTrusted\\": \\"10.1.1.0/24\\",\\n \\"XForwardedForHostEnabled\\": false\\n },\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<GetListenerAttributeResponse>\\n <AclConfig>\\n <AclRelations>\\n <AclId>acl-doc****</AclId>\\n <Status>Associating</Status>\\n </AclRelations>\\n <AclType>White</AclType>\\n </AclConfig>\\n <Certificates>\\n <CertificateId>12315790212_166f8204689_1714763408_70998****</CertificateId>\\n </Certificates>\\n <CaCertificates>\\n <CertificateId>139a00604bd-cn-east-hangzho****</CertificateId>\\n <Status>Associated</Status>\\n <IsDefault>true</IsDefault>\\n </CaCertificates>\\n <CaEnabled>false</CaEnabled>\\n <DefaultActions>\\n <ForwardGroupConfig>\\n <ServerGroupTuples>\\n <ServerGroupId>rsp-cige6j****</ServerGroupId>\\n </ServerGroupTuples>\\n </ForwardGroupConfig>\\n <Type>ForwardGroup</Type>\\n </DefaultActions>\\n <GzipEnabled>true</GzipEnabled>\\n <Http2Enabled>true</Http2Enabled>\\n <IdleTimeout>2</IdleTimeout>\\n <ListenerDescription>HTTP_80</ListenerDescription>\\n <ListenerId>lsr-bp1bpn0kn908w4nbw****</ListenerId>\\n <ListenerPort>80</ListenerPort>\\n <ListenerProtocol>HTTP</ListenerProtocol>\\n <ListenerStatus>Running</ListenerStatus>\\n <LoadBalancerId>alb-bd6oylbckp6k9x****</LoadBalancerId>\\n <LogConfig>\\n <AccessLogRecordCustomizedHeadersEnabled>true</AccessLogRecordCustomizedHeadersEnabled>\\n <AccessLogTracingConfig>\\n <TracingEnabled>true</TracingEnabled>\\n <TracingSample>100</TracingSample>\\n <TracingType>Zipkin</TracingType>\\n </AccessLogTracingConfig>\\n </LogConfig>\\n <QuicConfig>\\n <QuicListenerId>lsn-333</QuicListenerId>\\n <QuicUpgradeEnabled>true</QuicUpgradeEnabled>\\n </QuicConfig>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <RequestTimeout>34</RequestTimeout>\\n <SecurityPolicyId>tls_cipher_policy_1_1</SecurityPolicyId>\\n <XForwardedForConfig>\\n <XForwardedForClientCertClientVerifyAlias>test_client-verify-alias_123456</XForwardedForClientCertClientVerifyAlias>\\n <XForwardedForClientCertClientVerifyEnabled>true</XForwardedForClientCertClientVerifyEnabled>\\n <XForwardedForClientCertFingerprintAlias>test_finger-print-alias_123456</XForwardedForClientCertFingerprintAlias>\\n <XForwardedForClientCertFingerprintEnabled>true</XForwardedForClientCertFingerprintEnabled>\\n <XForwardedForClientCertIssuerDNAlias>test_issue-dn-alias_123456</XForwardedForClientCertIssuerDNAlias>\\n <XForwardedForClientCertIssuerDNEnabled>true</XForwardedForClientCertIssuerDNEnabled>\\n <XForwardedForClientCertSubjectDNAlias>test_subject-dn-alias_123456</XForwardedForClientCertSubjectDNAlias>\\n <XForwardedForClientCertSubjectDNEnabled>true</XForwardedForClientCertSubjectDNEnabled>\\n <XForwardedForClientSrcPortEnabled>true</XForwardedForClientSrcPortEnabled>\\n <XForwardedForEnabled>true</XForwardedForEnabled>\\n <XForwardedForProtoEnabled>true</XForwardedForProtoEnabled>\\n <XForwardedForSLBIdEnabled>true</XForwardedForSLBIdEnabled>\\n <XForwardedForSLBPortEnabled>true</XForwardedForSLBPortEnabled>\\n <XForwardedForClientSourceIpsEnabled>false</XForwardedForClientSourceIpsEnabled>\\n <XForwardedForClientSourceIpsTrusted>10.1.1.0/24</XForwardedForClientSourceIpsTrusted>\\n </XForwardedForConfig>\\n</GetListenerAttributeResponse>","errorExample":""}]',
+ 'title' => 'GetListenerAttribute',
+ ],
+ 'DeleteListener' => [
+ 'summary' => 'Deletes a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听id',
+ 'description' => 'The ID of the Application Load Balancer (ALB) listener.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to delete a listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInUse.Listener',
+ 'errorMessage' => 'The specified resource %s is in use.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified resource is being configured, please try again later.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource of %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteListenerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</DeleteListenerResponse>","errorExample":""}]',
+ 'title' => 'DeleteListener',
+ 'description' => '**DeleteListener** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [GetListenerAttribute](~~2254865~~) to query the status of the task.'."\n"
+ ."\n"
+ .'* If the listener is in the **Deleting** state, the listener is being deleted.'."\n"
+ .'* If the listener cannot be found, the listener is deleted.'."\n",
+ ],
+ 'ListListeners' => [
+ 'summary' => 'Queries the listeners in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '190',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ 'FEATUREslbK3ZR0L',
+ 'FEATUREslbN5IE4S',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '用来标记当前开始读取的位置,置空表示从头开始。',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* If a value is returned for NextToken, you must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '本次读取的最大数据记录数量,此参数为可选参数,取值1-100,用户传入为空时,默认为20。',
+ 'description' => 'The maximum number of entries to return. This parameter is optional. Valid values: **1 to 100**. If you do not specify this parameter, the default value **20** is used.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '50',
+ ],
+ ],
+ [
+ 'name' => 'ListenerIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '监听ID列表,N最大支持20',
+ 'description' => 'The listener IDs. You can specify at most 20 listener IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '实例ID列表,N最大支持20',
+ 'description' => 'The ALB instance ID. You can specify at most 20 instance IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'lb-bp1b6c719dfa08ex*****',
+ ],
+ 'required' => false,
+ 'maxItems' => 21,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ListenerProtocol',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听协议',
+ 'description' => 'The listener protocol. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP**'."\n"
+ .'* **HTTPS**'."\n"
+ .'* **QUIC**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The information about the listeners.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Listeners' => [
+ 'title' => '监听列表',
+ 'description' => 'The listeners.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'DefaultActions' => [
+ 'title' => '默认动作',
+ 'description' => 'The default actions in the forwarding rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The action of the default forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ForwardGroupConfig' => [
+ 'title' => '转发到服务器组',
+ 'description' => 'The configuration of the forwarding rule action. This parameter takes effect only when the action is **ForwardGroup**.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '服务器组列表',
+ 'description' => 'The server groups to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组ID',
+ 'description' => 'The ID of the server group to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'example' => 'rsp-cige6j****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'Type' => [
+ 'title' => '类型',
+ 'description' => 'The action. **ForwardGroup**: forwards requests to multiple server groups.'."\n",
+ 'type' => 'string',
+ 'example' => 'ForwardGroup',
+ ],
+ ],
+ ],
+ ],
+ 'GzipEnabled' => [
+ 'title' => '是否开启Gzip压缩',
+ 'description' => 'Indicates whether GZIP compression is enabled to compress specific types of files. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'Http2Enabled' => [
+ 'title' => '是否开启HTTP/2特性',
+ 'description' => 'Indicates whether HTTP/2 is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'IdleTimeout' => [
+ 'title' => '连接空闲超时时间',
+ 'description' => 'The timeout period of an idle connection. Unit: seconds. Valid values: **1 to 60**.'."\n"
+ ."\n"
+ .'If no request is received within the specified timeout period, ALB closes the connection. ALB establishes the connection again when a new connection request is received.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '3',
+ ],
+ 'ListenerDescription' => [
+ 'title' => '监听描述',
+ 'description' => 'The name of the listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'ListenerId' => [
+ 'title' => '监听标识',
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ 'ListenerPort' => [
+ 'title' => '监听端口',
+ 'description' => 'The frontend port that is used by the ALB instance. Valid values: **1 to 65535**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ 'ListenerProtocol' => [
+ 'title' => '监听协议',
+ 'description' => 'The listener protocol of the instance. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP**'."\n"
+ .'* **HTTPS**'."\n"
+ .'* **QUIC**'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP',
+ ],
+ 'ListenerStatus' => [
+ 'title' => '监听状态',
+ 'description' => 'The status of the listener. Valid values:'."\n"
+ ."\n"
+ .'* **Provisioning**: The listener is being created.'."\n"
+ .'* **Running**: The listener is running.'."\n"
+ .'* **Configuring**: The listener is being configured.'."\n"
+ .'* **Stopped**: The listener is disabled.'."\n",
+ 'type' => 'string',
+ 'example' => 'Running',
+ ],
+ 'LoadBalancerId' => [
+ 'title' => '负载均衡标识',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'lb-bp1b6c719dfa08ex*****',
+ ],
+ 'LogConfig' => [
+ 'title' => '监听访问日志相关配置',
+ 'description' => 'The logging configurations.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AccessLogRecordCustomizedHeadersEnabled' => [
+ 'title' => '访问日志是否开启携带自定义Header',
+ 'description' => 'Indicates whether custom headers are carried in the access log. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'AccessLogTracingConfig' => [
+ 'title' => '访问日志Xtrace相关的配置',
+ 'description' => 'The configurations of xtrace.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TracingEnabled' => [
+ 'title' => 'Xtrace功能状态',
+ 'description' => 'Indicates whether xtrace is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter can be set to **true** only when the access log feature of ALB is enabled by setting **AccessLogEnabled** to true.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'TracingSample' => [
+ 'title' => 'Xtrace功能状态',
+ 'description' => 'The sampling rate of xtrace. Valid values: **1 to 10000**.'."\n"
+ ."\n"
+ .'> This parameter takes effect when **TracingEnabled** is set to **true**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '100',
+ ],
+ 'TracingType' => [
+ 'title' => 'xtrace的类型',
+ 'description' => 'The type of xtrace. The value is set to **Zipkin**.'."\n"
+ ."\n"
+ .'> This parameter takes effect when **TracingEnabled** is set to **true**.'."\n",
+ 'type' => 'string',
+ 'example' => 'Zipkin',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'QuicConfig' => [
+ 'title' => 'HTTPS启用QUIC时相关属性',
+ 'description' => 'The configurations of the QUIC listener associated with the ALB instance.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QuicListenerId' => [
+ 'title' => '需要关联的QUIC监听ID,HTTPS监听时有效,QuicUpgradeEnabled为true时必选',
+ 'description' => 'The ID of the QUIC listener associated with the ALB instance. This parameter is required if the **QuicUpgradeEnabled** parameter is set to **true**. Only HTTPS listeners support this parameter.'."\n"
+ ."\n"
+ .'> The existing listener and QUIC listener must be to the same ALB instance, and the QUIC listener has not been associated with an ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsr-bp1bpn908w4nbw****',
+ ],
+ 'QuicUpgradeEnabled' => [
+ 'title' => '是否开启quic升级,HTTPS监听时有效',
+ 'description' => 'Indicates whether QUIC upgrade is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'RequestTimeout' => [
+ 'title' => '请求超时时间',
+ 'description' => 'The timeout period of a request. Unit: seconds. Valid values: **1 to 180**.'."\n"
+ ."\n"
+ .'If no responses are received from the backend server within the specified timeout period, ALB returns an `HTTP 504` error code to the client.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '34',
+ ],
+ 'SecurityPolicyId' => [
+ 'title' => '安全策略',
+ 'description' => 'The security policy.'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'example' => 'tls_cipher_policy_1_1',
+ ],
+ 'XForwardedForConfig' => [
+ 'title' => 'XForward字段相关的配置',
+ 'description' => 'The configuration of the `XForward` header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'XForwardedForClientCertClientVerifyAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertClientVerifyEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertClientVerifyEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'example' => 'test_client-verify-alias_123456',
+ ],
+ 'XForwardedForClientCertClientVerifyEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-clientverify 头字段获取对访问负载均衡实例客户端证书的校验结果。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Clientcert-clientverify` header is used to obtain the verification result of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertFingerprintAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertFingerprintEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertFingerprintEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'example' => 'test_finger-print-alias_123456',
+ ],
+ 'XForwardedForClientCertFingerprintEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-fingerprint 头字段获取访问负载均衡实例客户端证书的指纹取值,HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Clientcert-fingerprint` header is used to retrieve the fingerprint of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertIssuerDNAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertIssuerDNEnabled的值为‘On’的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertIssuerDNEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'example' => 'test_issue-dn-alias_123456',
+ ],
+ 'XForwardedForClientCertIssuerDNEnabled' => [
+ 'title' => '是否通过 X-Forwarded-Clientcert-issuerdn 头字段获取访问负载均衡实例客户端证书的发行者信息。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Clientcert-issuerdn` header is used to retrieve information about the authority that issues the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientCertSubjectDNAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertSubjectDNEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertSubjectDNEnabled** is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'string',
+ 'example' => 'test_subject-dn-alias_123456',
+ ],
+ 'XForwardedForClientCertSubjectDNEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-subjectdn 头字段获取访问负载均衡实例客户端证书的所有者信息。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Clientcert-subjectdn` header is used to retrieve information about the owner of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientSrcPortEnabled' => [
+ 'title' => '是否通过X-Forwarded-Client-Port 头字段获取访问负载均衡实例客户端的端口。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Client-Port` header is used to retrieve the client port. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is returned only for HTTP and HTTPS listeners.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForEnabled' => [
+ 'title' => '是否开启通过X-Forwarded-For头字段获取来访者真实 IP',
+ 'description' => 'Specifies whether to use the `X-Forwarded-For` header to retrieve client IP addresses. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> * If this parameter is set to **true**, the default value of the **XForwardedForProcessingMode** parameter is **append**. You can change it to **remove**.'."\n"
+ .'> * If this parameter is set to **false**, the `X-Forwarded-For` header in the request is not modified in any way before the request is sent to backend servers.'."\n"
+ .'> * Both HTTP and HTTPS listeners support this parameter.',
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForProcessingMode' => [
+ 'description' => 'Specifies how the `X-Forwarded-For` header is processed. This parameter takes effect only when **XForwardedForEnabled** is set to **true**. Valid values:'."\n"
+ ."\n"
+ .'* **append** (default)'."\n"
+ .'* **remove**'."\n"
+ ."\n"
+ .'> * If this parameter is set to **append**, ALB appends the IP address of the last hop to the existing `X-Forwarded-For` header in the request before the request is sent to backend servers.'."\n"
+ .'> * If this parameter is set to **remove**, ALB removes the `X-Forwarded-For` header in the request before the request is sent to backend servers, no matter whether the request carries the `X-Forwarded-For` header.'."\n"
+ .'> * Both HTTP and HTTPS listeners support this parameter.',
+ 'type' => 'string',
+ 'example' => 'append',
+ ],
+ 'XForwardedForProtoEnabled' => [
+ 'title' => '是否通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议。',
+ 'description' => 'Indicates whether the `X-Forwarded-Proto` header is used to retrieve the listener protocol. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is supported by HTTP, HTTPS, and QUIC listeners.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForSLBIdEnabled' => [
+ 'title' => '是否通过SLB-ID头字段获取负载均衡实例ID。',
+ 'description' => 'Specifies whether to use the `SLB-ID` header to retrieve the ID of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is supported by HTTP, HTTPS, and QUIC listeners.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForSLBPortEnabled' => [
+ 'title' => '是否通过X-Forwarded-Port 头字段获取负载均衡实例的监听端口。HTTPS监听有效。',
+ 'description' => 'Indicates whether the `X-Forwarded-Port` header is used to retrieve the listener port of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is supported by HTTP, HTTPS, and QUIC listeners.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'XForwardedForClientSourceIpsEnabled' => [
+ 'description' => 'Indicates whether the X-Forwarded-For header is used to preserver client IP addresses for the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is returned only for HTTP and HTTPS listeners.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientSourceIpsTrusted' => [
+ 'description' => 'The trusted proxy IP address.'."\n"
+ ."\n"
+ .'ALB instances traverse the IP addresses in the `X-Forwarded-For` header from the rightmost IP address to the leftmost IP address. The first IP address that is not on the trusted IP address list is considered the client IP address. Requests from the client IP address are throttled.'."\n",
+ 'type' => 'string',
+ 'example' => '10.1.1.0/24',
+ ],
+ 'XForwardedForHostEnabled' => [
+ 'description' => 'Specifies whether to use the `X-Forwarded-Host` header to retrieve client domain names. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n"
+ ."\n"
+ .'> HTTP, HTTPS, and QUIC listeners all support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'example' => 'product',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'MaxResults' => [
+ 'title' => '本次请求所返回的最大记录条数。',
+ 'description' => 'The maximum number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'NextToken' => [
+ 'title' => '用来表示当前调用返回读取到的位置,空代表数据已经读取完毕。',
+ 'description' => 'The position where the query stopped. If this parameter is not returned, all data is queried.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'TotalCount' => [
+ 'title' => '本次请求条件下的数据总量。',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Listeners\\": [\\n {\\n \\"DefaultActions\\": [\\n {\\n \\"ForwardGroupConfig\\": {\\n \\"ServerGroupTuples\\": [\\n {\\n \\"ServerGroupId\\": \\"sgp-i5qt20******\\"\\n }\\n ]\\n },\\n \\"Type\\": \\"ForwardGroup\\"\\n }\\n ],\\n \\"GzipEnabled\\": false,\\n \\"Http2Enabled\\": false,\\n \\"IdleTimeout\\": 3,\\n \\"ListenerDescription\\": \\"HTTP_80\\",\\n \\"ListenerId\\": \\"lsn-o4u34y73wq7b******\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"HTTP\\",\\n \\"ListenerStatus\\": \\"Running\\",\\n \\"LoadBalancerId\\": \\"alb-bd6oylbckp6k9x****\\",\\n \\"LogConfig\\": {\\n \\"AccessLogRecordCustomizedHeadersEnabled\\": true,\\n \\"AccessLogTracingConfig\\": {\\n \\"TracingEnabled\\": true,\\n \\"TracingSample\\": 100,\\n \\"TracingType\\": \\"Zipkin\\"\\n }\\n },\\n \\"QuicConfig\\": {\\n \\"QuicListenerId\\": \\"lsn-o4u54y73wq7b******\\",\\n \\"QuicUpgradeEnabled\\": true\\n },\\n \\"RequestTimeout\\": 34,\\n \\"SecurityPolicyId\\": \\"tls_cipher_policy_1_1\\",\\n \\"XForwardedForConfig\\": {\\n \\"XForwardedForClientCertClientVerifyAlias\\": \\"test_client-verify-alias_123456\\",\\n \\"XForwardedForClientCertClientVerifyEnabled\\": true,\\n \\"XForwardedForClientCertFingerprintAlias\\": \\"test_finger-print-alias_123456\\",\\n \\"XForwardedForClientCertFingerprintEnabled\\": true,\\n \\"XForwardedForClientCertIssuerDNAlias\\": \\"test_issue-dn-alias_123456\\",\\n \\"XForwardedForClientCertIssuerDNEnabled\\": true,\\n \\"XForwardedForClientCertSubjectDNAlias\\": \\"test_subject-dn-alias_123456\\",\\n \\"XForwardedForClientCertSubjectDNEnabled\\": true,\\n \\"XForwardedForClientSrcPortEnabled\\": true,\\n \\"XForwardedForEnabled\\": true,\\n \\"XForwardedForProcessingMode\\": \\"append\\",\\n \\"XForwardedForProtoEnabled\\": true,\\n \\"XForwardedForSLBIdEnabled\\": true,\\n \\"XForwardedForSLBPortEnabled\\": true,\\n \\"XForwardedForClientSourceIpsEnabled\\": false,\\n \\"XForwardedForClientSourceIpsTrusted\\": \\"10.1.1.0/24\\",\\n \\"XForwardedForHostEnabled\\": false\\n },\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"<ListListenersResponse>\\n <Listeners>\\n <DefaultActions>\\n <ForwardGroupConfig>\\n <ServerGroupTuples>\\n <ServerGroupId>rsp-cige6j****</ServerGroupId>\\n </ServerGroupTuples>\\n </ForwardGroupConfig>\\n <Type>ForwardGroup</Type>\\n </DefaultActions>\\n <GzipEnabled>false</GzipEnabled>\\n <Http2Enabled>false</Http2Enabled>\\n <IdleTimeout>3</IdleTimeout>\\n <ListenerDescription>HTTP_80</ListenerDescription>\\n <ListenerId>lsr-bp1bpn0kn908w4nbw****</ListenerId>\\n <ListenerPort>80</ListenerPort>\\n <ListenerProtocol>HTTP</ListenerProtocol>\\n <ListenerStatus>Running</ListenerStatus>\\n <LoadBalancerId>alb-bd6oylbckp6k9x****</LoadBalancerId>\\n <LogConfig>\\n <AccessLogRecordCustomizedHeadersEnabled>true</AccessLogRecordCustomizedHeadersEnabled>\\n <AccessLogTracingConfig>\\n <TracingEnabled>true</TracingEnabled>\\n <TracingSample>100</TracingSample>\\n <TracingType>Zipkin</TracingType>\\n </AccessLogTracingConfig>\\n </LogConfig>\\n <QuicConfig>\\n <QuicListenerId>lsr-bp1bpn908w4nbw****</QuicListenerId>\\n <QuicUpgradeEnabled>true</QuicUpgradeEnabled>\\n </QuicConfig>\\n <RequestTimeout>34</RequestTimeout>\\n <SecurityPolicyId>tls_cipher_policy_1_1</SecurityPolicyId>\\n <XForwardedForConfig>\\n <XForwardedForClientCertClientVerifyAlias>test_client-verify-alias_123456</XForwardedForClientCertClientVerifyAlias>\\n <XForwardedForClientCertClientVerifyEnabled>true</XForwardedForClientCertClientVerifyEnabled>\\n <XForwardedForClientCertFingerprintAlias>test_finger-print-alias_123456</XForwardedForClientCertFingerprintAlias>\\n <XForwardedForClientCertFingerprintEnabled>true</XForwardedForClientCertFingerprintEnabled>\\n <XForwardedForClientCertIssuerDNAlias>test_issue-dn-alias_123456</XForwardedForClientCertIssuerDNAlias>\\n <XForwardedForClientCertIssuerDNEnabled>true</XForwardedForClientCertIssuerDNEnabled>\\n <XForwardedForClientCertSubjectDNAlias>test_subject-dn-alias_123456</XForwardedForClientCertSubjectDNAlias>\\n <XForwardedForClientCertSubjectDNEnabled>true</XForwardedForClientCertSubjectDNEnabled>\\n <XForwardedForClientSrcPortEnabled>true</XForwardedForClientSrcPortEnabled>\\n <XForwardedForEnabled>true</XForwardedForEnabled>\\n <XForwardedForProtoEnabled>true</XForwardedForProtoEnabled>\\n <XForwardedForSLBIdEnabled>true</XForwardedForSLBIdEnabled>\\n <XForwardedForSLBPortEnabled>true</XForwardedForSLBPortEnabled>\\n <XForwardedForClientSourceIpsEnabled>false</XForwardedForClientSourceIpsEnabled>\\n <XForwardedForClientSourceIpsTrusted>10.1.1.0/24</XForwardedForClientSourceIpsTrusted>\\n </XForwardedForConfig>\\n </Listeners>\\n <MaxResults>50</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <TotalCount>1000</TotalCount>\\n</ListListenersResponse>","errorExample":""}]',
+ 'title' => 'ListListeners',
+ ],
+ 'StartListener' => [
+ 'summary' => 'Enables a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听id',
+ 'description' => 'The ID of the Application Load Balancer (ALB) listener.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the **DryRunOperation** error code is returned.'."\n"
+ .'* **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to enable a listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified resource of %s is being configured, please try again later.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\"\\n}","errorExample":""},{"type":"xml","example":"<StartListenerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</StartListenerResponse>","errorExample":""}]',
+ 'title' => 'StartListener',
+ 'description' => '**StartListener** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [GetListenerAttribute](~~2254865~~) to query the status of the task.'."\n"
+ ."\n"
+ .'* If a listener is in the **Configuring** state, the listener is being enabled.'."\n"
+ .'* If a listener is in the **Running** state, the listener is enabled.'."\n",
+ ],
+ 'StopListener' => [
+ 'summary' => 'Disables a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听id',
+ 'description' => 'The ID of the Application Load Balancer (ALB) listener.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to disable a listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified resource of %s is being configured, please try again later.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","errorExample":""},{"type":"xml","example":"<StopListenerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</StopListenerResponse>","errorExample":""}]',
+ 'title' => 'StopListener',
+ 'description' => '**StopListener** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetListenerAttribute](~~2254865~~) operation to query the status of the task:'."\n"
+ ."\n"
+ .'* If a listener is in the **Configuring** state, the listener is being disabled.'."\n"
+ .'* If a listener is in the **Stopped** state, the listener is disabled.'."\n",
+ ],
+ 'UpdateListenerAttribute' => [
+ 'summary' => 'Updates the attributes of a listener, such as the name and the default action.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'abilityTreeCode' => '187',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ 'FEATUREslbK3ZR0L',
+ 'FEATUREslbN5IE4S',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听标识',
+ 'description' => 'The ID of the Application Load Balancer (ALB) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ListenerDescription',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听描述',
+ 'description' => 'The name of the listener.'."\n"
+ ."\n"
+ .'The name must be 2 to 256 characters in length, and can contain letters, digits, commas (,), periods (.), semicolons (;), forward slashes (/), at signs (@), underscores (\\_), and hyphens (-).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP_80',
+ ],
+ ],
+ [
+ 'name' => 'RequestTimeout',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '请求超时时间',
+ 'description' => 'The timeout period of a request. Unit: seconds. Valid values: **1 to 180**.'."\n"
+ ."\n"
+ .'If no response is received from the backend server within the specified timeout period, ALB returns an `HTTP 504` error code to the client.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'minimum' => '1',
+ 'example' => '3',
+ ],
+ ],
+ [
+ 'name' => 'IdleTimeout',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '连接空闲超时时间',
+ 'description' => 'The timeout period for idle connections. Unit: seconds. Valid values: **1 to 60**'."\n"
+ ."\n"
+ .'If no requests are received within the specified timeout period, ALB closes the current connection. When another request is received, ALB establishes a new connection.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'minimum' => '1',
+ 'example' => '15',
+ ],
+ ],
+ [
+ 'name' => 'GzipEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启Gzip压缩',
+ 'description' => 'Specifies whether to enable GZIP compression for specific types of files. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'Http2Enabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启HTTP/2特性',
+ 'description' => 'Specifies whether to enable HTTP/2. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'SecurityPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '安全策略',
+ 'description' => 'The security policy ID. System security policies and custom security policies are supported.'."\n"
+ ."\n"
+ .'> This parameter is available only when you create an HTTPS listener.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'tls_cipher_policy_1_0',
+ ],
+ ],
+ [
+ 'name' => 'CaEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启双向认证',
+ 'description' => 'Specifies whether to enable mutual authentication. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'XForwardedForConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'XForward字段相关的配置',
+ 'description' => 'The configurations of the X-Forwarded-For header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'XForwardedForClientCertClientVerifyAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertClientVerifyEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. The header takes effect only when you set **XForwardedForClientCertClientVerifyEnabled **to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length. It can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTPS listeners.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_client-verify-alias_123456',
+ ],
+ 'XForwardedForClientCertClientVerifyEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-clientverify 头字段获取对访问负载均衡实例客户端证书的校验结果。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Clientcert-clientverify` header to retrieve the verification result of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTPS listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientCertFingerprintAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertFingerprintEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. The header takes effect only when you set **XForwardedForClientCertFingerprintEnabled** to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length. It can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTPS listeners.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_finger-print-alias_123456',
+ ],
+ 'XForwardedForClientCertFingerprintEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-fingerprint 头字段获取访问负载均衡实例客户端证书的指纹取值,HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Clientcert-fingerprint` header to retrieve the fingerprint of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTPS listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientCertIssuerDNAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertIssuerDNEnabled的值为‘On’的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. The header takes effect only when you set **XForwardedForClientCertIssuerDNEnabled** to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length. It can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTPS listeners.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_issue-dn-alias_123456',
+ ],
+ 'XForwardedForClientCertIssuerDNEnabled' => [
+ 'title' => '是否通过 X-Forwarded-Clientcert-issuerdn 头字段获取访问负载均衡实例客户端证书的发行者信息。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Clientcert-issuerdn` header to retrieve information about the authority that issues the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTPS listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientCertSubjectDNAlias' => [
+ 'title' => '自定义HEADER头名称,只有当XForwardedForClientCertSubjectDNEnabled的值为true的时候,此值才会生效;否则该值不会生效。HTTPS监听有效',
+ 'description' => 'The name of the custom header. This parameter is valid only if the **XForwardedForClientCertSubjectDNEnabled** parameter is set to **true**.'."\n"
+ ."\n"
+ .'The name must be 1 to 40 characters in length. It can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTPS listeners.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_subject-dn-alias_123456',
+ ],
+ 'XForwardedForClientCertSubjectDNEnabled' => [
+ 'title' => '是否通过X-Forwarded-Clientcert-subjectdn 头字段获取访问负载均衡实例客户端证书的所有者信息。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Clientcert-subjectdn` header to retrieve information about the owner of the client certificate. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTPS listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientSrcPortEnabled' => [
+ 'title' => '是否通过X-Forwarded-Client-Port 头字段获取访问负载均衡实例客户端的端口。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Client-srcport` header to retrieve the client port. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTP and HTTPS listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForEnabled' => [
+ 'title' => '是否开启通过X-Forwarded-For头字段获取来访者真实 IP',
+ 'description' => 'Specifies whether to use the `X-Forwarded-For` header to retrieve the client IP address. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> * If this parameter is set to **true**, the default value of the **XForwardedForProcessingMode** parameter is **append**. You can change it to **remove**.'."\n"
+ .'> * If this parameter is set to **false**, the `X-Forwarded-For` header in the request is not modified in any way before the request is sent to backend servers.'."\n"
+ .'> * This parameter is only available for HTTP and HTTPS listeners.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'XForwardedForProcessingMode' => [
+ 'description' => 'Specifies how the `X-Forwarded-For` header is processed. This parameter takes effect only when **XForwardedForEnabled** is set to **true**. Valid values:'."\n"
+ ."\n"
+ .'* **append** (default)'."\n"
+ .'* **remove**'."\n"
+ ."\n"
+ .'> * If this parameter is set to **append**, ALB appends the IP address of the last hop to the existing `X-Forwarded-For` header in the request before the request is sent to backend servers.'."\n"
+ .'> * If this parameter is set to **remove**, ALB removes the `X-Forwarded-For` header in the request before the request is sent to backend servers, no matter whether the request carries the `X-Forwarded-For` header.'."\n"
+ .'> * This parameter is only available for HTTP and HTTPS listeners.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'append',
+ ],
+ 'XForwardedForProtoEnabled' => [
+ 'title' => '是否通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Proto` header to retrieve the listener protocol. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available for HTTP, HTTPS, and QUIC listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForSLBIdEnabled' => [
+ 'title' => '是否通过SLB-ID头字段获取负载均衡实例ID。',
+ 'description' => 'Specifies whether to use the `SLB-ID` header to retrieve the ID of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available for HTTP, HTTPS, and QUIC listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForSLBPortEnabled' => [
+ 'title' => '是否通过X-Forwarded-Port 头字段获取负载均衡实例的监听端口。HTTPS监听有效。',
+ 'description' => 'Specifies whether to use the `X-Forwarded-Port` header to retrieve the listener port of the ALB instance. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is available for HTTP, HTTPS, and QUIC listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientSourceIpsEnabled' => [
+ 'description' => 'Specifies whether to use the X-Forwarded-For header to preserve client IP addresses. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter is only available for HTTP and HTTPS listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'XForwardedForClientSourceIpsTrusted' => [
+ 'description' => 'The trusted proxy IP address.'."\n"
+ ."\n"
+ .'ALB instances traverse the IP addresses in the `X-Forwarded-For` header from the rightmost IP address to the leftmost IP address. The first IP address that is not on the trusted IP address list is considered the client IP address. Requests from the client IP address are throttled.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10.1.1.0/24',
+ ],
+ 'XForwardedForHostEnabled' => [
+ 'description' => 'Specifies whether to use the `X-Forwarded-Host` header to retrieve the client domain name. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n"
+ ."\n"
+ .'> This parameter is available for HTTP, HTTPS, and QUIC listeners.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'QuicConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'HTTPS启用QUIC时相关属性',
+ 'description' => 'The configuration information when the listener is associated with a QUIC listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QuicListenerId' => [
+ 'title' => '需要关联的QUIC监听ID,HTTPS监听时有效,QuicUpgradeEnabled为true时必选',
+ 'description' => 'The QUIC listener ID. This parameter is required if **QuicUpgradeEnabled** is set to **true**. Only HTTPS listeners support this parameter.'."\n"
+ ."\n"
+ .'> You must add the HTTPS listener and the QUIC listener to the same ALB instance. In addition, make sure that the QUIC listener has never been associated with another listener.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'lsn-333',
+ ],
+ 'QuicUpgradeEnabled' => [
+ 'title' => '是否开启quic升级,HTTPS监听时有效',
+ 'description' => 'Specifies whether to enable QUIC upgrade. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> Only HTTPS listeners support this parameter.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'Certificates',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '监听默认服务器证书列表,N当前取值范围为1',
+ 'description' => 'The certificates. You can add at most 20 certificates.'."\n"
+ ."\n"
+ .'> Only server certificates are supported.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The certificate.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '正式标识',
+ 'description' => 'The certificate ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '12315790212_166f8204689_1714763408_70998****',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 2,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'CaCertificates',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '监听默认CA证书列表,N当前取值范围为1',
+ 'description' => 'The CA certificate. You can specify only one CA certificate.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The CA certificate.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '正式标识',
+ 'description' => 'The ID of the CA certificate.'."\n"
+ ."\n"
+ .'> This parameter is required if **CaEnabled** is set to **true**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123359******',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 1,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'DefaultActions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '监听默认动作',
+ 'description' => 'The actions of the default forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The action of the default forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ForwardGroupConfig' => [
+ 'title' => '转发组',
+ 'description' => 'The forwarding action. This parameter takes effect only when you set **Type** to **ForwardGroup**. You can specify at most 20 actions.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '服务器组列表',
+ 'description' => 'The server groups to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组ID',
+ 'description' => 'The ID of the server group to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'rsp-cige6j5e7p****',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '动作类型',
+ 'description' => 'The action type. You can specify only one type.'."\n"
+ ."\n"
+ .'Set the value to **ForwardGroup**, which specifies that requests are forwarded to multiple server groups.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'ForwardGroup',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.CrossLoadBalancerQUICListener',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceAlreadyAssociated.Listener',
+ 'errorMessage' => 'The specified resource %s is already associated.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.GRPCServerGroup',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceAlreadyAssociated.Certificate',
+ 'errorMessage' => 'The specified resource %s is already associated.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.SecurityPolicyAttachedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerAddedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ServerGroupProtocolNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of ServerGroupProtocolNotSupport.',
+ ],
+ [
+ 'errorCode' => 'UnsupportedFeature.FullTraceHttps',
+ 'errorMessage' => 'The feature of FullTraceHttps is not supported for current instance.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified resource of %s is being configured, please try again later.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.VpcId',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter, please check the parameter input.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Certificate',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateListenerAttributeResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</UpdateListenerAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateListenerAttribute',
+ 'description' => '**UpdateListenerAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetListenerAttribute](~~2254865~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .'* If a listener is in the **Configuring** state, the configuration of the listener is being modified.'."\n"
+ .'* If a listener is in the **Running** state, the configuration of the listener is modified.'."\n",
+ ],
+ 'UpdateListenerLogConfig' => [
+ 'summary' => 'Updates the log configuration of a listener, such as the access log configuration.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听标识',
+ 'description' => 'The ID of the Application Load Balancer (ALB) listener.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a **2xx HTTP** status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'AccessLogRecordCustomizedHeadersEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启携带自定义Header',
+ 'description' => 'Specifies whether to record custom headers in the access log. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n"
+ ."\n"
+ .'> You can set this parameter to **true** only if the access log feature is enabled by specifying **AccessLogEnabled**.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'AccessLogTracingConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '访问日志xtrace字段相关的配置',
+ 'description' => 'The configuration information about the Xtrace feature.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TracingEnabled' => [
+ 'title' => 'Xtrace功能状态',
+ 'description' => 'Specifies whether to enable the Xtrace feature. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n"
+ ."\n"
+ .'> You can set this parameter to **true** only if the access log feature is enabled by specifying **AccessLogEnabled**.'."\n",
+ 'type' => 'boolean',
+ 'required' => true,
+ 'example' => 'true',
+ ],
+ 'TracingSample' => [
+ 'title' => 'xtrace的采样率',
+ 'description' => 'The sampling rate of the Xtrace feature.'."\n"
+ ."\n"
+ .'Valid values: **1 to 10000**.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **TracingEnabled** to **true**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ 'TracingType' => [
+ 'title' => 'xtrace的类型',
+ 'description' => 'The type of Xtrace. Set the value to **Zipkin**.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **TracingEnabled** to **true**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Zipkin',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to update the configuration of a listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer',
+ 'errorMessage' => 'The business status of %s [%s]  is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.AccessLogDisabled',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified resource of %s is being configured, please try again later.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateListenerLogConfigResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</UpdateListenerLogConfigResponse>","errorExample":""}]',
+ 'title' => 'UpdateListenerLogConfig',
+ 'description' => '**UpdateListenerLogConfig** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [GetListenerAttribute](~~2254865~~) to query the status of the task:'."\n"
+ ."\n"
+ .'* If a listener is in the **Configuring** state, the log configuration of the listener is being modified.'."\n"
+ .'* If a listener is in the **Running** state, the log configuration of the listener is modified.'."\n"
+ ."\n"
+ .'> You can update the log configuration of a listener only after you enable the access log feature.'."\n",
+ ],
+ 'GetListenerHealthStatus' => [
+ 'summary' => 'Queries the health check status of a listener and its forwarding rules.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听Id',
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'IncludeRule',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否包含转发规则健康检查结果',
+ 'description' => 'Specifies whether to return the health check results of forwarding rules. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The token that determines the start point of the query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query or no next queries are to be sent, ignore this parameter.'."\n"
+ .'* If a next query is to be sent, set the value to the value of **NextToken** that is returned from the last call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The number of entries to return on each page. Valid values: **1** to **30**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The health check status of the listener and its forwarding rules.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ListenerHealthStatus' => [
+ 'title' => '监听健康检查结果',
+ 'description' => 'The health check status of the server groups associated with the listener.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The health check status of the server group associated with the listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ListenerId' => [
+ 'title' => '监听Id',
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ 'ListenerPort' => [
+ 'title' => '监听的端口号',
+ 'description' => 'The listener port.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ 'ListenerProtocol' => [
+ 'title' => '监听的协议',
+ 'description' => 'The listener protocol.'."\n",
+ 'type' => 'string',
+ 'example' => 'http',
+ ],
+ 'ServerGroupInfos' => [
+ 'title' => '服务器组健康检查结果',
+ 'description' => 'The information about the server group.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the server group.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckEnabled' => [
+ 'title' => '健康检查开启/关闭',
+ 'description' => 'Indicates whether health checks are enabled. If **on** is returned, it indicates that health checks are enabled.'."\n",
+ 'type' => 'string',
+ 'example' => 'on',
+ ],
+ 'NonNormalServers' => [
+ 'title' => '处于非正常状态的后端服务器',
+ 'description' => 'A list of unhealthy backend servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'A list of unhealthy backend servers.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Port' => [
+ 'title' => '后端服务器端口',
+ 'description' => 'The backend port.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '90',
+ ],
+ 'Reason' => [
+ 'title' => 'status为非正常状态时的详细异常原因',
+ 'description' => 'The cause for the unhealthy state of the backend servers.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ActualResponse' => [
+ 'title' => '后端实际的返回码信息',
+ 'description' => 'The HTTP status code returned from the server, for example, **302**.'."\n"
+ ."\n"
+ .'> A value is returned only if `ReasonCode` is set to **RESPONSE_MISMATCH**.'."\n",
+ 'type' => 'string',
+ 'example' => '302',
+ ],
+ 'ExpectedResponse' => [
+ 'title' => '用户预期的后端返回码信息',
+ 'description' => 'The HTTP status code returned after backend servers pass health checks.'."\n"
+ ."\n"
+ .'Valid values: **HTTP\\_2xx**, **HTTP\\_3xx**, **HTTP\\_4xx**, and **HTTP\\_5xx**. Multiple status codes are separated by commas (,).'."\n"
+ ."\n"
+ .'> This value is returned only if **ReasonCode** is set to **RESPONSE_MISMATCH**.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP_2xx',
+ ],
+ 'ReasonCode' => [
+ 'title' => '失败reasonCode',
+ 'description' => 'The reason why the value of **Status** is Unhealthy. Only HTTP and HTTPS listeners support this parameter.'."\n"
+ ."\n"
+ .'* **CONNECT_TIMEOUT**: ALB failed to connect to the backend server within the specified period of time.'."\n"
+ .'* **CONNECT_FAILED**: ALB failed to connect to the backend server.'."\n"
+ .'* **RECV_RESPONSE_FAILED**: ALB failed to receive a response from the backend server.'."\n"
+ .'* **RECV_RESPONSE_TIMEOUT**: ALB failed to receive a response from the backend server within the specified period of time.'."\n"
+ .'* **SEND_REQUEST_FAILED**: ALB failed to send a request to the backend server.'."\n"
+ .'* **SEND_REQUEST_TIMEOUT**: ALB failed to send a request to the backend server within the specified period of time.'."\n"
+ .'* **RESPONSE_FORMAT_ERROR**: The format of the response from the backend server is invalid.'."\n"
+ .'* **RESPONSE_MISMATCH**: The HTTP status code returned from the backend server is not the expected one.'."\n",
+ 'type' => 'string',
+ 'example' => 'RESPONSE_MISMATCH',
+ ],
+ ],
+ ],
+ 'ServerId' => [
+ 'title' => '后端服务器id',
+ 'description' => 'The ID of the backend server.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-bp1bfa08ex*****',
+ ],
+ 'ServerIp' => [
+ 'title' => '后端服务器Ip',
+ 'description' => 'The IP address of the backend server.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.8.10',
+ ],
+ 'Status' => [
+ 'title' => '健康检查状态',
+ 'description' => 'The status of the health check. Valid values: Valid values:'."\n"
+ ."\n"
+ .'* **Initial**: indicates that health checks are configured for the NLB instance, but no data was found.'."\n"
+ .'* **Unhealthy**: indicates that the backend server consecutively fails health checks.'."\n"
+ .'* **Unused**: indicates that the weight of the backend server is 0.'."\n"
+ .'* **Unavailable**: indicates that health checks are disabled.'."\n",
+ 'type' => 'string',
+ 'example' => 'Initial',
+ ],
+ ],
+ ],
+ ],
+ 'ServerGroupId' => [
+ 'title' => '服务器组ID',
+ 'description' => 'The ID of the server group that is associated with the listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'vsp-bp1qjwo61pqz3ahltv****',
+ ],
+ 'ActionType' => [
+ 'title' => '服务器组使用类型',
+ 'description' => 'The action specified for the server group. Valid values:'."\n"
+ ."\n"
+ .'* **ForwardGroup**: distributes requests to server groups.'."\n"
+ .'* **TrafficMirror**: mirrors requests to server groups.'."\n",
+ 'type' => 'string',
+ 'example' => 'TrafficMirror',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'RequestId' => [
+ 'title' => '请求Id',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ 'RuleHealthStatus' => [
+ 'title' => '转发规则健康检查结果',
+ 'description' => 'The health check status of the forwarding rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The health check status of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RuleId' => [
+ 'title' => '转发规则ID',
+ 'description' => 'The ID of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'example' => 'rule-hp34s2h0xx1ht4nwo****',
+ ],
+ 'ServerGroupInfos' => [
+ 'title' => '服务器组健康检查结果',
+ 'description' => 'The server groups.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckEnabled' => [
+ 'title' => '健康检查开启/关闭',
+ 'description' => 'Indicates whether health checks are enabled. If **on** is returned, it indicates that health checks are enabled.'."\n",
+ 'type' => 'string',
+ 'example' => 'on',
+ ],
+ 'NonNormalServers' => [
+ 'title' => '处于非正常状态的后端服务器',
+ 'description' => 'A list of unhealthy backend servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'A list of unhealthy backend servers.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Port' => [
+ 'title' => '后端服务器端口',
+ 'description' => 'The backend port.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '90',
+ ],
+ 'Reason' => [
+ 'title' => 'status为非正常状态时的详细异常原因',
+ 'description' => 'The cause for the unhealthy state of the backend servers.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ActualResponse' => [
+ 'title' => '后端实际的返回码信息',
+ 'description' => 'The HTTP status code returned from the server, for example, **302**.'."\n"
+ ."\n"
+ .'> A value is returned only if **ReasonCode** is set to **RESPONSE_MISMATCH**.'."\n",
+ 'type' => 'string',
+ 'example' => '302',
+ ],
+ 'ExpectedResponse' => [
+ 'title' => '用户预期的后端返回码信息',
+ 'description' => 'The HTTP status code returned after backend servers pass health checks.'."\n"
+ ."\n"
+ .'Valid values: **HTTP\\_2xx**, **HTTP\\_3xx**, **HTTP\\_4xx**, and **HTTP\\_5xx**. Multiple status codes are separated by commas (,).'."\n"
+ ."\n"
+ .'> A value is returned only if **ReasonCode** is set to **RESPONSE_MISMATCH**.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP_2xx',
+ ],
+ 'ReasonCode' => [
+ 'title' => '失败reasonCode',
+ 'description' => 'The reason why the value of **Status** is Unhealthy. Only forwarding rules for HTTP and HTTPS listeners support this parameter.'."\n"
+ ."\n"
+ .'* **CONNECT_TIMEOUT**: ALB failed to connect to the backend server within the specified period of time.'."\n"
+ .'* **CONNECT_FAILED**: ALB failed to connect to the backend server.'."\n"
+ .'* **RECV_RESPONSE_FAILED**: ALB failed to receive a response from the backend server.'."\n"
+ .'* **RECV_RESPONSE_TIMEOUT**: ALB failed to receive a response from the backend server within the specified period of time.'."\n"
+ .'* **SEND_REQUEST_FAILED**: ALB failed to send a request to the backend server.'."\n"
+ .'* **SEND_REQUEST_TIMEOUT**: ALB failed to send a request to the backend server within the specified period of time.'."\n"
+ .'* **RESPONSE_FORMAT_ERROR**: The format of the response from the backend server is invalid.'."\n"
+ .'* **RESPONSE_MISMATCH**: The HTTP status code returned from the backend server is not the expected one.'."\n",
+ 'type' => 'string',
+ 'example' => 'RESPONSE_MISMATCH',
+ ],
+ ],
+ ],
+ 'ServerId' => [
+ 'title' => '后端服务器Id',
+ 'description' => 'The ID of the backend server.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-bp1bfa08ex****',
+ ],
+ 'ServerIp' => [
+ 'title' => '后端服务器ID',
+ 'description' => 'The IP address of the server group.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.2.11',
+ ],
+ 'Status' => [
+ 'title' => '健康检查状态',
+ 'description' => 'The status of the health check. Valid values: Valid values:'."\n"
+ ."\n"
+ .'* **Initial**: indicates that health checks are configured for the NLB instance, but no data was found.'."\n"
+ .'* **Unhealthy**: indicates that the backend server consecutively fails health checks.'."\n"
+ .'* **Unused**: indicates that the weight of the backend server is 0.'."\n"
+ .'* **Unavailable**: indicates that health checks are disabled.'."\n",
+ 'type' => 'string',
+ 'example' => 'Initial',
+ ],
+ ],
+ ],
+ ],
+ 'ServerGroupId' => [
+ 'title' => '服务器组ID',
+ 'description' => 'The ID of the server group that is associated with the listener.'."\n",
+ 'type' => 'string',
+ 'example' => 'vsp-bp1qjwo61pqz3ahlt****',
+ ],
+ 'ActionType' => [
+ 'title' => '服务器组使用类型',
+ 'description' => 'The action specified for the server group.'."\n",
+ 'type' => 'string',
+ 'example' => 'TrafficMirror',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'NextToken' => [
+ 'title' => '下一页标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"ListenerHealthStatus\\": [\\n {\\n \\"ListenerId\\": \\"lsn-o4u54y73wq7b******\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"http\\",\\n \\"ServerGroupInfos\\": [\\n {\\n \\"HealthCheckEnabled\\": \\"on\\",\\n \\"NonNormalServers\\": [\\n {\\n \\"Port\\": 90,\\n \\"Reason\\": {\\n \\"ActualResponse\\": \\"302\\",\\n \\"ExpectedResponse\\": \\"HTTP_2xx\\",\\n \\"ReasonCode\\": \\"RESPONSE_MISMATCH\\"\\n },\\n \\"ServerId\\": \\"i-uf62h8v******\\",\\n \\"ServerIp\\": \\"192.168.8.10\\",\\n \\"Status\\": \\"Initial\\"\\n }\\n ],\\n \\"ServerGroupId\\": \\"sgp-8ilqs4axp6******\\",\\n \\"ActionType\\": \\"TrafficMirror\\"\\n }\\n ]\\n }\\n ],\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876F******\\",\\n \\"RuleHealthStatus\\": [\\n {\\n \\"RuleId\\": \\"rule-hp34s2h0xx1ht4nwo****\\",\\n \\"ServerGroupInfos\\": [\\n {\\n \\"HealthCheckEnabled\\": \\"on\\",\\n \\"NonNormalServers\\": [\\n {\\n \\"Port\\": 90,\\n \\"Reason\\": {\\n \\"ActualResponse\\": \\"302\\",\\n \\"ExpectedResponse\\": \\"HTTP_2xx\\",\\n \\"ReasonCode\\": \\"RESPONSE_MISMATCH\\"\\n },\\n \\"ServerId\\": \\"i-uf62h8v******\\",\\n \\"ServerIp\\": \\"192.168.2.11\\",\\n \\"Status\\": \\"Initial\\"\\n }\\n ],\\n \\"ServerGroupId\\": \\"sgp-8ilqs4axp6******\\",\\n \\"ActionType\\": \\"TrafficMirror\\"\\n }\\n ]\\n }\\n ],\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\"\\n}","errorExample":""},{"type":"xml","example":"<GetListenerHealthStatusResponse>\\n <ListenerHealthStatus>\\n <ListenerId>lsr-bp1bpn0kn908w4nbw****</ListenerId>\\n <ListenerPort>80</ListenerPort>\\n <ListenerProtocol>http</ListenerProtocol>\\n <ServerGroupInfos>\\n <HealthCheckEnabled>on</HealthCheckEnabled>\\n <NonNormalServers>\\n <Port>90</Port>\\n <Reason>\\n <ActualResponse>302</ActualResponse>\\n <ExpectedResponse>HTTP_2xx</ExpectedResponse>\\n <ReasonCode>RESPONSE_MISMATCH</ReasonCode>\\n </Reason>\\n <ServerId>rg-bp1bfa08ex*****</ServerId>\\n <ServerIp>192.168.8.10</ServerIp>\\n <Status>Initial</Status>\\n </NonNormalServers>\\n <ServerGroupId>vsp-bp1qjwo61pqz3ahltv****</ServerGroupId>\\n <ActionType>TrafficMirror</ActionType>\\n </ServerGroupInfos>\\n </ListenerHealthStatus>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n <RuleHealthStatus>\\n <RuleId>rule-hp34s2h0xx1ht4nwo****</RuleId>\\n <ServerGroupInfos>\\n <HealthCheckEnabled>on</HealthCheckEnabled>\\n <NonNormalServers>\\n <Port>90</Port>\\n <Reason>\\n <ActualResponse>302</ActualResponse>\\n <ExpectedResponse>HTTP_2xx</ExpectedResponse>\\n <ReasonCode>RESPONSE_MISMATCH</ReasonCode>\\n </Reason>\\n <ServerId>rg-bp1bfa08ex****</ServerId>\\n <ServerIp>192.168.2.11</ServerIp>\\n <Status>Initial</Status>\\n </NonNormalServers>\\n <ServerGroupId>vsp-bp1qjwo61pqz3ahlt****</ServerGroupId>\\n <ActionType>TrafficMirror</ActionType>\\n </ServerGroupInfos>\\n </RuleHealthStatus>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n</GetListenerHealthStatusResponse>","errorExample":""}]',
+ 'title' => 'GetListenerHealthStatus',
+ ],
+ 'AddServersToServerGroup' => [
+ 'summary' => 'Adds backend servers to a server group.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbULKWF1',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ServerGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '后端服务器Id',
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sgp-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'Servers',
+ 'in' => 'formData',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '后端服务器列表',
+ 'description' => 'The backend servers. You can specify at most 200 servers in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the backend server.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Description' => [
+ 'title' => '描述信息',
+ 'description' => 'The description of the backend server. The description must be 2 to 256 characters in length and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Port' => [
+ 'title' => '后端端口号',
+ 'description' => 'The port that is used by the backend server. Valid values: **1** to **65535**. You can specify at most 200 servers in each call.'."\n"
+ ."\n"
+ .'> This parameter is required if you set **ServerType** to **Ecs**, **Eni**, **Eci**, or **Ip**. You do not need to set this parameter if **ServerType** is set to **Fc**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => '80',
+ ],
+ 'ServerId' => [
+ 'title' => '后端服务器id',
+ 'description' => 'The ID of the server group. You can specify at most 200 servers in each call.'."\n"
+ ."\n"
+ .'* If the server group is of the **Instance** type, set ServerId to the ID of a resource of the **Ecs**, **Eni**, or **Eci** type.'."\n"
+ .'* If the server group is of the **Ip** type, set this parameter to IP addresses.'."\n"
+ .'* If the server group is of the **Fc** type, set ServerId to an Alibaba Cloud Resource Name (ARN).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ecs-bp67acfmxazb4p****',
+ ],
+ 'ServerIp' => [
+ 'title' => '后端服务器ip',
+ 'description' => 'The IP address of the backend server. You can specify at most 200 servers in each call.'."\n"
+ ."\n"
+ .'> You do not need to set this parameter if you set **ServerType** to **Fc**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.1.1',
+ ],
+ 'ServerType' => [
+ 'title' => '后端服务器类型',
+ 'description' => 'The type of the backend server. You can specify at most 200 servers in each call. Default values:'."\n"
+ ."\n"
+ .'* **Ecs**: Elastic Compute Service (ECS) instance'."\n"
+ .'* **Eni**: elastic network interface (ENI)'."\n"
+ .'* **Eci**: elastic container instance'."\n"
+ .'* **Ip**: IP address'."\n"
+ .'* **Fc**: Function Compute'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'Ecs',
+ ],
+ 'Weight' => [
+ 'title' => '后端服务器权重',
+ 'description' => 'The weight of the backend server. Valid values: **0** to **100**. Default value: **100**. If the value is set to **0**, no requests are forwarded to the server. You can specify at most 200 servers in each call.'."\n"
+ ."\n"
+ .'> You do not need to set this parameter if you set **ServerType** to **Fc**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ 'RemoteIpEnabled' => [
+ 'title' => '是否是远端ip',
+ 'description' => 'Specifies whether to enable the remote IP feature. You can specify at most 200 servers in each call. Default values:'."\n"
+ ."\n"
+ .'* **true**: enables the feature.'."\n"
+ .'* **false**: disables the feature.'."\n"
+ ."\n"
+ .'> This parameter takes effect only when **ServerType** is set to **Ip**.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ 'required' => false,
+ 'title' => '后端服务器',
+ ],
+ 'required' => true,
+ 'maxItems' => 200,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: prechecks the request, but does not add a backend server to a server group. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The ID of the asynchronous job.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerAddedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.ServerGroup',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'Conflict.BackendServer',
+ 'errorMessage' => 'There is already %s having the same configuration with %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.VpcVportNotFound',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Eni',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInUse.IP',
+ 'errorMessage' => 'The specified resource %s is in use.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.NoAvailableVSwitch',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.VgwVipNotFound',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.CloudBox',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.Type',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.VpcId',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring',
+ 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.',
+ ],
+ [
+ 'errorCode' => 'DuplicatedParam.BackendServer',
+ 'errorMessage' => 'The param of %s is duplicated.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.EciNotSupportJobType',
+ 'errorMessage' => 'The operation is not allowed because of eci not support job type.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.ServerIp',
+ 'errorMessage' => 'The param of ServerIp is illegal.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ServerType',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'ServiceUnavailable',
+ 'errorMessage' => 'The request has failed due to a temporary failure of the server.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.ServerGroup',
+ 'errorMessage' => 'Authentication has failed for ServerGroup.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Ecs',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Eci',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Eni',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34******\\"\\n}","errorExample":""},{"type":"xml","example":"<AddServersToServerGroupResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</AddServersToServerGroupResponse>","errorExample":""}]',
+ 'title' => 'AddServersToServerGroup',
+ 'description' => '**AddServersToServerGroup** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background.'."\n"
+ ."\n"
+ .'1. You can call the [ListServerGroups](~~213627~~) operation to query the status of a server group.'."\n"
+ ."\n"
+ .'* If a server group is in the **Configuring** state, it indicates that the server group is being modified.'."\n"
+ .'* If a server group is in the **Available** state, it indicates that the server group is running.'."\n"
+ ."\n"
+ .'2. You can call the [ListServerGroupServers](~~213628~~) operation to query the status of a backend server.'."\n"
+ ."\n"
+ .'* If a backend server is in the **Adding** state, it indicates that the backend server is being added to a server group.'."\n"
+ .'* If a backend server is in the **Available** state, it indicates that the server is running.',
+ ],
+ 'CreateServerGroup' => [
+ 'summary' => 'Creates a server group in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '163',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbULKWF1',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ServerGroupName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器组名称',
+ 'description' => 'The name of the server group. The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sg-atstuj3rtoptyui****',
+ ],
+ ],
+ [
+ 'name' => 'ServerGroupType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器组类型',
+ 'description' => 'The type of server group. Valid values:'."\n"
+ ."\n"
+ .'* **Instance** (default): allows you to add servers by specifying **Ecs**, **Eni**, or **Eci**.'."\n"
+ .'* **Ip**: allows you to add servers by specifying IP addresses.'."\n"
+ .'* **Fc**: allows you to add servers by specifying functions of Function Compute.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Instance',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'VpcId',
+ 'description' => 'The ID of the virtual private cloud (VPC). You can add only servers that are deployed in the specified VPC to the server group.'."\n"
+ ."\n"
+ .'> This parameter takes effect when the **ServerGroupType** parameter is set to **Instance** or **Ip**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-bp15zckdt37pq72zv****',
+ ],
+ ],
+ [
+ 'name' => 'Scheduler',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '调度策略',
+ 'description' => 'The scheduling algorithm. Valid values:'."\n"
+ ."\n"
+ .'* **Wrr** (default): The weighted round-robin algorithm is used. Backend servers that have higher weights receive more requests than those that have lower weights.'."\n"
+ .'* **Wlc**: The weighted least connections algorithm is used. Requests are distributed based on the weights and the number of connections to backend servers. If two backend servers have the same weight, the backend server that has fewer connections is expected to receive more requests.'."\n"
+ .'* **Sch**: The consistent hashing algorithm is used. Requests from the same source IP address are distributed to the same backend server.'."\n"
+ ."\n"
+ .'> This parameter takes effect when the **ServerGroupType** parameter is set to **Instance** or **Ip**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Wrr',
+ ],
+ ],
+ [
+ 'name' => 'Protocol',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '后端协议类型',
+ 'description' => 'The backend protocol. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP**: allows you to associate an HTTPS, HTTP, or QUIC listener with the server group. This is the default value.'."\n"
+ .'* **HTTPS**: allows you to associate HTTPS listeners with backend servers.'."\n"
+ .'* **gRPC**: allows you to associate an HTTPS or QUIC listener with the server group.'."\n"
+ ."\n"
+ .'> You do not need to specify a backend protocol if you set **ServerGroupType** to **Fc**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组id',
+ 'description' => 'The ID of the resource group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '健康检查配置',
+ 'description' => 'The configuration of the health check feature.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckConnectPort' => [
+ 'title' => '健康检查端口',
+ 'description' => 'The backend port that is used for health checks.'."\n"
+ ."\n"
+ .'Valid values: **0** to **65535**'."\n"
+ ."\n"
+ .'The default value is **0**, which specifies that the port of a backend server is used for health checks.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '65535',
+ 'minimum' => '0',
+ 'example' => '80',
+ 'default' => '0',
+ ],
+ 'HealthCheckEnabled' => [
+ 'title' => '是否启用健康检查',
+ 'description' => 'Specifies whether to enable the health check feature. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> If the **ServerGroupType** parameter is set to **Instance** or **Ip**, the health check feature is enabled by default. If the **ServerGroupType** parameter is set to **Fc**, the health check feature is disabled by default.'."\n",
+ 'type' => 'boolean',
+ 'required' => true,
+ 'example' => 'true',
+ ],
+ 'HealthCheckHost' => [
+ 'title' => '健康检查域名',
+ 'description' => 'The domain name that is used for health checks.'."\n"
+ ."\n"
+ .'* **Backend Server Internal IP** (default): Use the internal IP address of backend servers as the health check domain name.'."\n"
+ ."\n"
+ .'* **Custom Domain Name**: Enter a domain name.'."\n"
+ ."\n"
+ .' * The domain name must be 1 to 80 characters in length.'."\n"
+ .' * The domain name can contain lowercase letters, digits, hyphens (-), and periods (.).'."\n"
+ .' * The domain name must contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .' * The rightmost domain label of the domain name can contain only letters, and cannot contain digits or hyphens (-).'."\n"
+ .' * The domain name cannot start or end with a hyphen (-).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'HealthCheckCodes' => [
+ 'title' => '健康检查正常的状态码',
+ 'description' => 'The HTTP status code that indicates healthy backend servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP status code that indicates healthy backend servers.'."\n"
+ ."\n"
+ .'* When **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx** (default value), **http\\_3xx**, **http\\_4xx**, and **http\\_5xx**. Separate multiple HTTP status codes with commas (,).'."\n"
+ .'* If **HealthCheckProtocol** is set to **gRPC**, the valid values for **HealthCheckCodes** are from **0 to 99**. The default value is **0**. Value ranges are supported. You can specify at most 20 value ranges. Separate multiple value ranges with commas (,).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'http_2xx',
+ 'title' => '健康检查正常的状态码',
+ ],
+ 'required' => false,
+ ],
+ 'HealthCheckHttpVersion' => [
+ 'title' => '健康检查HTTP协议版本',
+ 'description' => 'The version of the HTTP protocol. Valid values: **HTTP1.0** and **HTTP1.1**. Default value: HTTP1.1.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP1.1',
+ 'default' => 'HTTP1.1',
+ ],
+ 'HealthCheckInterval' => [
+ 'title' => '健康检查间隔',
+ 'description' => 'The interval at which health checks are performed. Unit: seconds'."\n"
+ ."\n"
+ .'Valid values: **1** to **50**'."\n"
+ ."\n"
+ .'Default value: **2**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '50',
+ 'minimum' => '1',
+ 'example' => '2',
+ 'default' => '2',
+ ],
+ 'HealthCheckMethod' => [
+ 'title' => '健康检查方法',
+ 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
+ .'* **POST**: By default, gRPC health checks use the POST method.'."\n"
+ .'* **HEAD** (default): By default, HTTP and HTTPS use the HEAD method.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HEAD',
+ ],
+ 'HealthCheckPath' => [
+ 'title' => '健康检查Path',
+ 'description' => 'The URL that is used for health checks.'."\n"
+ ."\n"
+ .'The URL must be 1 to 80 characters in length, and can contain letters, digits, and the following special characters: `- / . % ? # & =`. It can also contain the following extended characters: `_ ; ~ ! ( ) * [ ] @ $ ^ : \' , +`. The URL must start with a forward slash (/).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test/index.html',
+ ],
+ 'HealthCheckProtocol' => [
+ 'title' => '健康检查协议类型',
+ 'description' => 'The protocol that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP**: HTTP health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers.'."\n"
+ .'* **HTTPS**: HTTPS health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers. HTTPS provides higher security than HTTP because HTTPS supports data encryption.'."\n"
+ .'* **TCP**: TCP health checks send TCP SYN packets to a backend server to probe the availability of backend servers.'."\n"
+ .'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to check whether the backend server is healthy.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ 'default' => 'HTTP',
+ ],
+ 'HealthCheckTimeout' => [
+ 'title' => '健康检查超时时间',
+ 'description' => 'The timeout period of a health check response. If a backend server does not respond within the specified timeout period, the backend server is declared unhealthy. Unit: seconds'."\n"
+ ."\n"
+ .'Valid values: **1** to **300**'."\n"
+ ."\n"
+ .'Default value: **5**'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '300',
+ 'minimum' => '1',
+ 'example' => '5',
+ 'default' => '5',
+ ],
+ 'HealthyThreshold' => [
+ 'title' => '健康检查成功判定阈值',
+ 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health check status of the backend server changes from **fail** to **success**.'."\n"
+ ."\n"
+ .'Valid values: **2** to **10**'."\n"
+ ."\n"
+ .'Default value: **3**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '10',
+ 'minimum' => '2',
+ 'example' => '3',
+ 'default' => '3',
+ ],
+ 'UnhealthyThreshold' => [
+ 'title' => '健康检查不成功判定阈值',
+ 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health check status of the backend server changes from **success** to **fail**.'."\n"
+ ."\n"
+ .'Valid values: **2** to **10**'."\n"
+ ."\n"
+ .'Default value: **3**'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '10',
+ 'minimum' => '2',
+ 'example' => '3',
+ 'default' => '3',
+ ],
+ ],
+ 'required' => true,
+ ],
+ ],
+ [
+ 'name' => 'StickySessionConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '会话保持配置',
+ 'description' => 'The configuration of session persistence.'."\n"
+ ."\n"
+ .'> This parameter takes effect when the **ServerGroupType** parameter is set to **Instance** or **Ip**.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Cookie' => [
+ 'title' => '服务器上配置的Cookie',
+ 'description' => 'The cookie that you want to configure for the server.'."\n"
+ ."\n"
+ .'The cookie must be 1 to 200 characters in length, and can contain only ASCII letters and digits. It cannot contain commas (,), semicolons (;), or space characters. It cannot start with a dollar sign ($).'."\n"
+ ."\n"
+ .'> This parameter takes effect only when **StickySessionEnabled** is set to **true** and **StickySessionType** is set to **server**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'B490B5EBF6F3CD402E515D22BCDA****',
+ ],
+ 'CookieTimeout' => [
+ 'title' => '服务器上配置的Cookie',
+ 'description' => 'The maximum amount of time to wait before the session cookie expires. Unit: seconds'."\n"
+ ."\n"
+ .'Valid values: **1** to **86400**'."\n"
+ ."\n"
+ .'Default value: **1000**'."\n"
+ ."\n"
+ .'> This parameter takes effect only when **StickySessionEnabled** is set to **true** and **StickySessionType** is set to **Insert**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '86400',
+ 'minimum' => '1',
+ 'example' => '1000',
+ 'default' => '1000',
+ ],
+ 'StickySessionEnabled' => [
+ 'title' => '是否启用会话保持',
+ 'description' => 'Specifies whether to enable session persistence. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> This parameter takes effect when the **ServerGroupType** parameter is set to **Instance** or **Ip**.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'StickySessionType' => [
+ 'title' => '会话保持类型',
+ 'description' => 'The method that is used to handle cookies. Valid values:'."\n"
+ ."\n"
+ .'* **Insert** (default value): inserts a cookie. The first time a client accesses ALB, ALB inserts the SERVERID cookie into the HTTP or HTTPS response packet. Subsequent requests from the client that carry this cookie are forwarded to the same backend server as the first request.'."\n"
+ .'* **Server**: rewrites a cookie. ALB rewrites the custom cookies in requests from a client. Subsequent requests from the client that carry the new cookie are forwarded to the same backend server as the first request.'."\n"
+ ."\n"
+ .'> This parameter takes effect when the **StickySessionEnabled** parameter is set to **true**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Insert',
+ 'default' => 'Insert',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Ipv6Enabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启Ipv6',
+ 'description' => 'Specifies whether to enable Ipv6.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'UpstreamKeepaliveEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启后端长链接',
+ 'description' => 'Specifies whether to enable persistent TCP connections.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ServiceName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器名称',
+ 'description' => 'This parameter is available only if the ALB Ingress controller is used. In this case, set this parameter to the name of the `Kubernetes Service` that is associated with the server group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ [
+ 'name' => 'UchConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'url一致性hash参数配置',
+ 'description' => 'The configuration of consistent hashing based on URLs.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Type' => [
+ 'title' => '参数类型',
+ 'description' => 'The type of the parameter.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'QueryString',
+ ],
+ 'Value' => [
+ 'title' => '一致性hash参数值',
+ 'description' => 'The parameter value for consistent hashing.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'abc',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'ConnectionDrainConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The configurations of connection draining.'."\n"
+ ."\n"
+ .'After connection draining is enabled, ALB maintains data transmission for a period of time after the backend server is removed or declared unhealthy.'."\n"
+ ."\n\n"
+ .'>* Basic ALB instances do not support connection draining. Standard and WAF-enabled ALB instances support connection draining.'."\n"
+ .'>* Server groups of the instance and IP types support connection draining. Server groups of the Function Compute type do not support connection draining.',
+ 'type' => 'object',
+ 'properties' => [
+ 'ConnectionDrainEnabled' => [
+ 'description' => 'Specifies whether to enable connection draining. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'ConnectionDrainTimeout' => [
+ 'description' => 'The timeout period of connection draining.'."\n"
+ ."\n"
+ .'Valid values: **0** to **900**.'."\n"
+ ."\n"
+ .'Default value: **300**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '300',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'SlowStartConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The configurations of slow starts.'."\n"
+ .'After slow starts are enabled, SLB prefetches data to newly added backend servers. Requests distributed to the backend servers gradually increase.'."\n"
+ ."\n"
+ .'> - Basic SLB instances do not support slow starts. Standard and WAF-enabled SLB instances support slow starts. '."\n"
+ .'>* Server groups of the server and IP types support slow starts. Server groups of the Function Compute type do not support slow starts.'."\n"
+ .'>* Slow start is supported only by the weighted round-robin scheduling algorithm.',
+ 'type' => 'object',
+ 'properties' => [
+ 'SlowStartEnabled' => [
+ 'description' => 'Specifies whether to enable slow starts. Valid values:'."\n"
+ ."\n"
+ .'- true'."\n"
+ ."\n"
+ .'- false(default)',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'SlowStartDuration' => [
+ 'description' => 'The duration of a slow start.'."\n"
+ .'Valid values: 30 to 900.'."\n"
+ .'Default value: 30.',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '30',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tag.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'CrossZoneEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Specifies whether to enable cross-zone load balancing. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> * Basic ALB instances do not support server groups that have cross-zone load balancing disabled. Only Standard and WAF-enabled ALB instances support server groups that have cross-zone load balancing.'."\n"
+ .'> * Cross-zone load balancing can be disabled for server groups of the server and IP type, but not for server groups of the Function Compute type.'."\n"
+ .'> * When cross-zone load balancing is disabled, session persistence cannot be enabled.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The ID of the asynchronous job.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'ServerGroupId' => [
+ 'title' => '服务器组id',
+ 'description' => 'The ID of the server group.'."\n",
+ 'type' => 'string',
+ 'example' => 'sg-atstuj3rtoptyui****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'QuotaExceeded.ServerGroupsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.LoadBalancerEditionAndSlowStartEnable',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ServerGroupSchedulerAndSlowStartEnable',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.SlowStartDuration',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'UnsupportedFeature.SlowStart',
+ 'errorMessage' => 'The feature of %s is not supported.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.LoadBalancerEditionAndConnectionDrain',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.ConnectionDrainTimeout',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'UnsupportedFeature.ConnectionDrain',
+ 'errorMessage' => 'The feature of %s is not supported.',
+ ],
+ [
+ 'errorCode' => 'NotExist.ResourceGroup',
+ 'errorMessage' => 'ResourceGroup does not exist.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.VpcNotSupportIpv6',
+ 'errorMessage' => 'The operation is not allowed because of VpcNotSupportIpv6.',
+ ],
+ [
+ 'errorCode' => 'UnsupportedFeature.FcServerGroup',
+ 'errorMessage' => 'Server groups of type FC are not supported.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Vpc',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\",\\n \\"ServerGroupId\\": \\"sgp-8ilqs4axp6******\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateServerGroupResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <ServerGroupId>sg-atstuj3rtoptyui****</ServerGroupId>\\n</CreateServerGroupResponse>","errorExample":""}]',
+ 'title' => 'CreateServerGroup',
+ 'description' => '**CreateServerGroup** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [ListServerGroups](~~213627~~) to query the status of a server group.'."\n"
+ ."\n"
+ .'* If a server group is in the **Creating** state, it indicates that the server group is being created.'."\n"
+ .'* If a server group is in the **Available** state, it indicates that the server group is created.'."\n",
+ ],
+ 'DeleteServerGroup' => [
+ 'summary' => 'Deletes a server group.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'title' => '幂等参数',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'ServerGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器组id',
+ 'description' => 'The ID of the server group.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sgp-cige6j****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否DryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => 'job',
+ 'description' => 'The ID of the asynchronous job.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.ServerGroup',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInUse.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is in use.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring',
+ 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.ServerGroup',
+ 'errorMessage' => 'Authentication has failed for ServerGroup.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteServerGroupResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</DeleteServerGroupResponse>","errorExample":""}]',
+ 'title' => 'DeleteServerGroup',
+ 'description' => '**DeleteServerGroup** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListServerGroups](~~213627~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .'* If a server group is in the **Deleting** state, it indicates that the server group is being deleted.'."\n"
+ .'* If a specified server group cannot be found, it indicates that the server group has been deleted.'."\n",
+ ],
+ 'UpdateServerGroupAttribute' => [
+ 'summary' => 'Modifies the configurations of a server group, such as health checks, session persistence, the server group name, the routing algorithm, and the protocol.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '165',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbULKWF1',
+ 'FEATUREslbVRSQEA',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ServerGroupName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'Acl名称',
+ 'description' => 'The server group name.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ [
+ 'name' => 'Scheduler',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '调度策略',
+ 'description' => 'The scheduling algorithm. Valid values:'."\n"
+ ."\n"
+ .'* **Wrr**: the weighted round robin algorithm. Backend servers that have higher weights receive more requests than those that have lower weights.'."\n"
+ .'* **Wlc**: the weighted least connections algorithm. Requests are distributed based on the weights and the number of connections to backend servers. If two backend servers have the same weight, the backend server that has fewer connections is expected to receive more requests.'."\n"
+ .'* **Sch**: the consistent hashing algorithm. Requests from the same source IP address are distributed to the same backend server.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Wrr',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: checks the request without performing the operation. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx` HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '健康检查配置',
+ 'description' => 'The configuration of health checks.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckConnectPort' => [
+ 'title' => '健康检查端口',
+ 'description' => 'The backend port that is used for health checks.'."\n"
+ ."\n"
+ .'Valid values: **0** to **65535**.'."\n"
+ ."\n"
+ .'If you set the value to **0**, the backend port is used for health checks.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckEnabled** to **true**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '65535',
+ 'minimum' => '0',
+ 'example' => '80',
+ ],
+ 'HealthCheckEnabled' => [
+ 'title' => '是否启用健康检查',
+ 'description' => 'Specifies whether to enable the health check feature. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'HealthCheckHost' => [
+ 'title' => '健康检查域名',
+ 'description' => 'The domain name that is used for health checks.'."\n"
+ ."\n"
+ .'* **Backend Server Internal IP** (default): Use the internal IP address of backend servers as the health check domain name.'."\n"
+ ."\n"
+ .'* **Custom Domain Name**: Enter a domain name.'."\n"
+ ."\n"
+ .' * The domain name must be 1 to 80 characters in length.'."\n"
+ .' * The domain name can contain lowercase letters, digits, hyphens (-), and periods (.).'."\n"
+ .' * The domain name must contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .' * The rightmost domain label of the domain name can contain only letters, and cannot contain digits or hyphens (-).'."\n"
+ .' * The domain name cannot start or end with a hyphen (-).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'example.com',
+ ],
+ 'HealthCheckCodes' => [
+ 'title' => '健康检查正常的状态码',
+ 'description' => 'The HTTP status codes that indicate healthy backend servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP status codes that indicate healthy backend servers.'."\n"
+ ."\n"
+ .'* When **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx** (default value), **http\\_3xx**, **http\\_4xx**, and **http\\_5xx**. Separate multiple HTTP status codes with commas (,).'."\n"
+ .'* When **HealthCheckProtocol** is set to **gRPC**, the valid values for **HealthCheckCodes** are from **0 to 99**. The default value is **0**. Value ranges are supported. You can specify at most 20 value ranges. Separate multiple value ranges with commas (,).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckEnabled** to **true** and **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '200',
+ ],
+ 'required' => false,
+ ],
+ 'HealthCheckHttpVersion' => [
+ 'title' => '健康检查HTTP协议版本',
+ 'description' => 'The HTTP version that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP1.0**'."\n"
+ .'* **HTTP1.1**'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckEnabled** to true and **HealthCheckProtocol** to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP1.1',
+ ],
+ 'HealthCheckInterval' => [
+ 'title' => '健康检查间隔',
+ 'description' => 'The interval at which health checks are performed. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **1** to **50**.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckEnabled** to **true**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '50',
+ 'minimum' => '1',
+ 'example' => '5',
+ ],
+ 'HealthCheckMethod' => [
+ 'title' => '健康检查方法',
+ 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
+ .'* **POST**: gRPC health checks use the POST method by default.'."\n"
+ .'* **HEAD**: HTTP and HTTPS health checks use the HEAD method by default.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckEnabled** to true and **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HEAD',
+ ],
+ 'HealthCheckPath' => [
+ 'title' => '健康检查Path',
+ 'description' => 'The URL that is used for health checks.'."\n"
+ ."\n"
+ .'The URL must be 1 to 80 characters in length, and can contain letters, digits, and the following special characters: `- / . % ? # & =`. It can also contain the following extended characters: `_ ; ~ ! ( ) * [ ] @ $ ^ : \' , +`. The URL must start with a forward slash (`/`).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckEnabled** to **true** and **HealthCheckProtocol** to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test/index.html',
+ ],
+ 'HealthCheckProtocol' => [
+ 'title' => '健康检查协议类型',
+ 'description' => 'The protocol that you want to use for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP**: HTTP health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers.'."\n"
+ .'* **HTTPS**: HTTPS health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers. HTTPS supports encryption and provides higher security than HTTP.'."\n"
+ .'* **TCP**: TCP health checks send TCP SYN packets to a backend server to probe the availability of backend servers.'."\n"
+ .'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to check whether the backend server is healthy.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ 'HealthCheckTimeout' => [
+ 'title' => '健康检查超时时间',
+ 'description' => 'The timeout period of a health check response. If a backend ECS instance does not respond within the specified timeout period, the ECS instance fails the health check. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **1** to **300**.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckEnabled** to **true**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '300',
+ 'minimum' => '1',
+ 'example' => '3',
+ ],
+ 'HealthyThreshold' => [
+ 'title' => '健康检查成功判定阈值',
+ 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it can be declared healthy. In this case, the health check status of the backend server changes from **fail** to **success**.'."\n"
+ ."\n"
+ .'Valid values: **2** to **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '10',
+ 'minimum' => '2',
+ 'example' => '4',
+ ],
+ 'UnhealthyThreshold' => [
+ 'title' => '健康检查不成功判定阈值',
+ 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it can be declared unhealthy. In this case, the health check status of the backend server changes from **success** to **fail**.'."\n"
+ ."\n"
+ .'Valid values: **2** to **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '10',
+ 'minimum' => '2',
+ 'example' => '4',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'StickySessionConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '会话保持配置',
+ 'description' => 'The configuration of session persistence.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Cookie' => [
+ 'title' => '服务器上配置的Cookie',
+ 'description' => 'The cookie to be configured on the server.'."\n"
+ ."\n"
+ .'The cookie must be 1 to 200 characters in length and can contain only ASCII characters and digits. It cannot contain commas (,), semicolons (;), or space characters. It cannot start with a dollar sign ($).'."\n"
+ ."\n"
+ .'> This parameter takes effect when the **StickySessionEnabled** parameter is set to **true** and the **StickySessionType** parameter is set to **Server**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'B490B5EBF6F3CD402E515D22BCDA1598',
+ ],
+ 'CookieTimeout' => [
+ 'title' => '服务器上配置的Cookie',
+ 'description' => 'The timeout period of a cookie. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **1** to **86400**.'."\n"
+ ."\n"
+ .'> This parameter takes effect when the **StickySessionEnabled** parameter is set to **true** and the **StickySessionType** parameter is set to **Insert**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '86400',
+ 'minimum' => '1',
+ 'example' => '1000',
+ ],
+ 'StickySessionEnabled' => [
+ 'title' => '是否启用会话保持',
+ 'description' => 'Specifies whether to enable session persistence. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'StickySessionType' => [
+ 'title' => '会话保持类型',
+ 'description' => 'The method that is used to handle a cookie. Valid values:'."\n"
+ ."\n"
+ .'* **Insert**: inserts a cookie.'."\n"
+ ."\n"
+ .'ALB inserts a cookie (SERVERID) into the first HTTP or HTTPS response packet that is sent to a client. The next request from the client contains this cookie and the listener forwards this request to the recorded backend server.'."\n"
+ ."\n"
+ .'* **Server**: rewrites a cookie.'."\n"
+ ."\n"
+ .'When ALB detects a user-defined cookie, it overwrites the original cookie with the user-defined cookie. Subsequent requests to ALB carry this user-defined cookie, and ALB determines the destination servers of the requests based on the cookies.'."\n"
+ ."\n"
+ .'> This parameter takes effect when the **StickySessionEnabled** parameter is set to **true** for the server group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Insert',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'ServerGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器组Id',
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sgp-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'UpstreamKeepaliveEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否开启后端长链接',
+ 'description' => 'Specifies whether to enable persistent TCP connections.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'ServiceName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器名称',
+ 'description' => 'This parameter is available only if the ALB Ingress controller is used. In this case, set this parameter to the name of the `Kubernetes Service` that is associated with the server group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test2',
+ ],
+ ],
+ [
+ 'name' => 'UchConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'url一致性hash参数配置',
+ 'description' => 'The configurations of consistent hashing based on URLs.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Type' => [
+ 'title' => '参数类型',
+ 'description' => 'The type of the parameter. Only query strings are supported.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'QueryString',
+ ],
+ 'Value' => [
+ 'title' => '一致性hash参数值',
+ 'description' => 'The value of the parameter used for consistent hashing.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'abc',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'ConnectionDrainConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The configurations of connection draining.'."\n"
+ ."\n"
+ .'After connection draining is enabled, SLB remains data transmission for a period of time after a backend server is removed or declared unhealthy.'."\n"
+ ."\n"
+ .'> * Basic SLB instances do not support connection draining. Standard and WAF-enabled SLB instances support connection draining.'."\n"
+ .'> * Server groups of the server and IP types support connection draining. Server groups of the Function Compute type do not support connection draining.',
+ 'type' => 'object',
+ 'properties' => [
+ 'ConnectionDrainEnabled' => [
+ 'description' => 'Specifies whether to enable connection draining. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'ConnectionDrainTimeout' => [
+ 'description' => 'The timeout period of connection draining.'."\n"
+ ."\n"
+ .'Valid values: **0** to **900**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '300',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'SlowStartConfig',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '慢启动配置',
+ 'description' => 'The configurations of slow starts.'."\n"
+ ."\n"
+ .'After slow starts are enabled, ALB prefetches data to newly added backend servers. Requests distributed to the backend servers gradually increase.'."\n"
+ ."\n"
+ .'> * Basic ALB instances do not support slow starts. Standard and WAF-enabled ALB instances support slow starts.'."\n"
+ .'>* Server groups of the instance and IP types support slow starts. Server groups of the Function Compute type do not support slow starts.'."\n"
+ .'>* Slow start is supported only by the weighted round-robin scheduling algorithm.',
+ 'type' => 'object',
+ 'properties' => [
+ 'SlowStartEnabled' => [
+ 'title' => '是否开启慢启动'."\n",
+ 'description' => 'Indicates whether slow starts are enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'SlowStartDuration' => [
+ 'title' => '慢启动时间',
+ 'description' => 'The duration of a slow start.',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '30',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'CrossZoneEnabled',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'Indicates whether cross-zone load balancing is enabled for the server group. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ .'* **false**'."\n"
+ ."\n"
+ .'> * Basic ALB instances do not support server groups that have cross-zone load balancing disabled. Only Standard and WAF-enabled ALB instances support server groups that have cross-zone load balancing.'."\n"
+ .'>* Cross-zone load balancing can be disabled for server groups of the server and IP type, but not for server groups of the Function Compute type.'."\n"
+ .'>* When cross-zone load balancing is disabled, session persistence cannot be enabled.',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The ID of the asynchronous job.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.ServerGroup',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.LoadBalancerEditionAndConnectionDrain',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ServerGroupSchedulerAndSlowStartEnable',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.ConnectionDrainTimeout',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'UnsupportedFeature.ConnectionDrain',
+ 'errorMessage' => 'The feature of %s is not supported.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.SlowStartDuration',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'UnsupportedFeature.SlowStart',
+ 'errorMessage' => 'The feature of %s is not supported.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.LoadBalancerEditionAndSlowStartEnable',
+ 'errorMessage' => 'The %s and %s are mismatched.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.UpstreamKeepaliveDisabled',
+ 'errorMessage' => 'The operation is not allowed because of UpstreamKeepaliveDisabled.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.UpstreamKeepaliveEnabled',
+ 'errorMessage' => 'The operation is not allowed because of UpstreamKeepaliveEnabled.',
+ ],
+ [
+ 'errorCode' => 'CloseUpstreamKeepaliveNotSupport',
+ 'errorMessage' => 'The param of UpstreamKeepalive is not Support.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3*****\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateServerGroupAttributeResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</UpdateServerGroupAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateServerGroupAttribute',
+ 'description' => '## Description'."\n"
+ ."\n"
+ .'**UpdateServerGroupAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListServerGroups](~~213627~~) operation to query the status of a server group:'."\n"
+ ."\n"
+ .'* If a server group is in the **Configuring** state, the configuration of the server group is being modified.'."\n"
+ .'* If a server group is in the **Available** state, the configuration of the server group is modified.'."\n",
+ ],
+ 'UpdateServerGroupServersAttribute' => [
+ 'summary' => 'Modifies the configurations, such as the backend server weight and description, of a server group.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbULKWF1',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ServerGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '后端服务器Id',
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sgp-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'Servers',
+ 'in' => 'formData',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '后端服务器列表',
+ 'description' => 'The server groups. You can specify at most 40 server groups in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the server group.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Description' => [
+ 'title' => '后端服务器描述',
+ 'description' => 'The description of the backend server. The description must be 2 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Port' => [
+ 'title' => '后端端口号',
+ 'description' => 'The port that is used by the backend server. Valid values: **1** to **65535**.'."\n"
+ ."\n"
+ .'> You do not need to set this parameter if **ServerType** is set to **Fc**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => '80',
+ ],
+ 'ServerId' => [
+ 'title' => '后端服务器id',
+ 'description' => 'The ID of the backend server.'."\n"
+ ."\n"
+ .'* Specify the ID of an Elastic Compute Service (ECS) instance, an elastic network interface (ENI), or an elastic container instance if you set **ServerType** to **Ecs**, **Eni**, or **Eci**.'."\n"
+ .'* Specify an IP address if you set **ServerType** to **Ip**.'."\n"
+ .'* Specify the Alibaba Cloud Resource Name (ARN) of a Function Compute function if you set **ServerType** to **Fc**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'i-bp1f9kdprbgy9uiu****',
+ ],
+ 'ServerIp' => [
+ 'title' => '后端服务器ip',
+ 'description' => 'The IP address of the backend server.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.1.1',
+ ],
+ 'ServerType' => [
+ 'title' => '后端服务器类型',
+ 'description' => 'The type of the backend server. Valid values:'."\n"
+ ."\n"
+ .'* **Ecs**: ECS instance'."\n"
+ .'* **Eni**: ENI'."\n"
+ .'* **Eci**: elastic container instance'."\n"
+ .'* **Ip**: IP address'."\n"
+ .'* **Fc**: Function Compute'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => false,
+ 'example' => 'Ecs',
+ ],
+ 'Weight' => [
+ 'title' => '后端服务器权重',
+ 'description' => 'The weight of the backend server. Valid values: **0** to **100**. Default value: **100**. If the value is set to **0**, no requests are forwarded to the server. You can specify up to 40 servers in each call.'."\n"
+ ."\n"
+ .'> You do not need to set this parameter if **ServerType** is set to **Fc**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ ],
+ 'required' => false,
+ 'title' => '后端服务器',
+ ],
+ 'required' => true,
+ 'maxItems' => 200,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The ID of the asynchronous job.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.ServerGroup',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring',
+ 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.ServerGroup',
+ 'errorMessage' => 'Authentication has failed for ServerGroup.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.BackendServer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3*****\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateServerGroupServersAttributeResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</UpdateServerGroupServersAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateServerGroupServersAttribute',
+ 'description' => '**UpdateServerGroupServersAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background.'."\n"
+ ."\n"
+ .'1. You can call the [ListServerGroups](~~213627~~) operation to query the status of a server group.'."\n"
+ ."\n"
+ .' * If a server group is in the **Configuring** state, it indicates that the server group is being modified.'."\n"
+ .' * If a server group is in the **Available** state, it indicates that the server group is running.'."\n"
+ ."\n"
+ .'2. You can call the [ListServerGroupServers](~~213628~~) operation to query the status of a backend server.'."\n"
+ ."\n"
+ .' * If a backend server is in the **Configuring** state, it indicates that the backend server is being modified.'."\n"
+ .' * If a backend server is in the **Available** state, it indicates that the backend server is running.'."\n",
+ ],
+ 'ListServerGroups' => [
+ 'summary' => 'Queries server groups.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '166',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbULKWF1',
+ 'FEATUREslbVRSQEA',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ServerGroupIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '服务器组Id列表',
+ 'description' => 'The server group IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of the server groups to be queried. You can specify up to 20 IDs in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'sgp-atstuj3rtop****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'ServerGroupNames',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '服务器组名称',
+ 'description' => 'The names of the server groups to be queried. You can specify at most 10 server group names.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The names of the server groups to be queried. You can specify up to 10 server group names in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Group3',
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组ID',
+ 'description' => 'The ID of the resource group to which the server group belongs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXG****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'VpcId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'VpcId',
+ 'description' => 'The ID of the virtual private cloud (VPC).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'vpc-bp15zckdt37pq72zv****',
+ ],
+ ],
+ [
+ 'name' => 'ServerGroupType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器组类型',
+ 'description' => 'The server group type. Valid values:'."\n"
+ ."\n"
+ .'* **Instance**: instances, including ECS instances, ENIs, and elastic container instances.'."\n"
+ .'* **Ip**: IP addresses.'."\n"
+ .'* **Fc**: Function Compute',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Instance',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'Tag列表',
+ 'description' => 'The tags that are added to the server group. You can specify up to 10 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags that are added to the server group. You can specify at most 10 tags in each call.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '标签键',
+ 'description' => 'The tag key. You can specify up to 10 tag keys.'."\n"
+ ."\n"
+ .'The tag key can be up to 64 characters in length and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Test',
+ ],
+ 'Value' => [
+ 'title' => '标签值',
+ 'description' => 'The tag value. You can specify up to 10 tag values.'."\n"
+ ."\n"
+ .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'example' => 'Instance',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The number of entries returned per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If **NextToken** is not empty, the value of NextToken can be used in the next request to retrieve a new page of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'caeba0bbb2be03f8****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ 'ServerGroups' => [
+ 'title' => '服务器组',
+ 'description' => 'The server groups.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckConfig' => [
+ 'title' => '健康检查配置',
+ 'description' => 'The health check configurations.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckConnectPort' => [
+ 'title' => '端口',
+ 'description' => 'The backend port that is used for health checks. Valid values: **0** to **65535**.'."\n"
+ ."\n"
+ .'A value of **0** indicates that the port of a backend server is used for health checks.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ 'HealthCheckEnabled' => [
+ 'title' => '是否启用健康检查',
+ 'description' => 'Indicates whether the health check feature is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'HealthCheckHost' => [
+ 'title' => '域名',
+ 'description' => 'The domain name that is used for health checks.'."\n"
+ ."\n"
+ .'* **Backend Server Internal IP** (default): Use the internal IP address of backend servers as the health check domain name.'."\n"
+ ."\n"
+ .'* **Custom Domain Name**: Enter a domain name.'."\n"
+ ."\n"
+ .' * The domain name is 1 to 80 characters in length.'."\n"
+ .' * The domain name contains lowercase letters, digits, hyphens (-), and periods (.).'."\n"
+ .' * The domain name contains at least one period (.) but does not start or end with a period (.).'."\n"
+ .' * The rightmost domain label of the domain name contains only letters, and does not contain digits or hyphens (-).'."\n"
+ .' * The domain name does not start or end with a hyphen (-).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if HealthCheckProtocol is set to HTTP, HTTPS, or gRPC.'."\n",
+ 'type' => 'string',
+ 'example' => 'www.example.com',
+ ],
+ 'HealthCheckCodes' => [
+ 'title' => '状态码',
+ 'description' => 'The HTTP status codes that indicate healthy backend servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP status codes that indicate healthy backend servers.'."\n"
+ ."\n"
+ .'* When **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx**, **http\\_3xx**, **http\\_4xx**, and **http\\_5xx**. Multiple HTTP status codes are separated by commas (,).'."\n"
+ .'* When **HealthCheckProtocol** is set to **gRPC**, the valid values of **HealthCheckCodes** are **0 to 99**. Value ranges are supported. At most 20 value ranges are supported. Multiple value ranges are separated by commas (,).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'example' => 'http_2xx',
+ ],
+ ],
+ 'HealthCheckHttpVersion' => [
+ 'title' => '版本',
+ 'description' => 'The HTTP version that is used for health checks.'."\n"
+ ."\n"
+ .'Valid values: **HTTP1.0** and **HTTP1.1**.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP1.1',
+ ],
+ 'HealthCheckInterval' => [
+ 'title' => '间隔时间',
+ 'description' => 'The interval at which health checks are performed. Unit: seconds. Valid values: **1** to **50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '5',
+ ],
+ 'HealthCheckMethod' => [
+ 'title' => '方法',
+ 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
+ .'* **POST**: gRPC health checks use the POST method by default.'."\n"
+ .'* **HEAD**: HTTP and HTTPS health checks use the HEAD method by default.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'example' => 'HEAD',
+ ],
+ 'HealthCheckPath' => [
+ 'title' => 'uri',
+ 'description' => 'The URL that is used for health checks.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'example' => '/test/index.html',
+ ],
+ 'HealthCheckProtocol' => [
+ 'title' => '协议',
+ 'description' => 'The protocol that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP**: HTTP health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers.'."\n"
+ .'* **HTTPS**: HTTPS health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers. HTTPS supports encryption and provides higher security than HTTP.'."\n"
+ .'* **TCP**: TCP health checks send TCP SYN packets to a backend server to check whether the port of the backend server is reachable.'."\n"
+ .'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to check whether the backend server is healthy.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP',
+ ],
+ 'HealthCheckTimeout' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period of a health check response. If a backend server does not respond within the specified timeout period, the backend server is declared unhealthy. Unit: seconds.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '3',
+ ],
+ 'HealthyThreshold' => [
+ 'title' => '健康阈值',
+ 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health status is changed from **fail** to **success**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '4',
+ ],
+ 'UnhealthyThreshold' => [
+ 'title' => '不健康阈值',
+ 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health status is changed from **success** to **fail**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '4',
+ ],
+ ],
+ ],
+ 'Protocol' => [
+ 'title' => '服务器组协议',
+ 'description' => 'The backend protocol. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP**: allows you to associate HTTPS, HTTP, or QUIC listeners with backend servers.'."\n"
+ .'* **HTTPS**: allows you to associate HTTPS listeners with backend servers.'."\n"
+ .'* **GRPC**: allows you to associate HTTPS and QUIC listeners with backend servers.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP',
+ ],
+ 'RelatedLoadBalancerIds' => [
+ 'title' => '关联的实例id',
+ 'description' => 'The ID of the ALB instance associated with the server group.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-n5qw04uq8vavfe****',
+ ],
+ ],
+ 'ResourceGroupId' => [
+ 'title' => '资源组id',
+ 'description' => 'The ID of the resource group to which the instance belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ 'Scheduler' => [
+ 'title' => '调度策略',
+ 'description' => 'The scheduling algorithm. Valid values:'."\n"
+ ."\n"
+ .'* **Wrr**: weighted round-robin. Backend servers with higher weights receive more requests than backend servers with lower weights.'."\n"
+ .'* **Wlc**: weighted least connections. Requests are distributed based on the weight and load of each backend server. The load refers to the number of connections on a backend server. If multiple backend servers have the same weight, requests are forwarded to the backend server with the least number of connections.'."\n"
+ .'* **Sch**: consistent hashing. Requests that have the same hash factors are distributed to the same backend server. If you do not specify the UchConfig parameter, the source IP address is used as the hash factor by default. Requests that are from the same IP address are distributed to the same backend server. If you specify the UchConfig parameter, the URL string is used as the hash factor. Requests that have the same URL string are distributed to the same backend server.'."\n",
+ 'type' => 'string',
+ 'example' => 'Wrr',
+ ],
+ 'ServerGroupId' => [
+ 'title' => '服务器组Id',
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'sgp-cige6j****',
+ ],
+ 'ServerGroupName' => [
+ 'title' => '服务器组名称',
+ 'description' => 'The server group name.'."\n",
+ 'type' => 'string',
+ 'example' => 'Group3',
+ ],
+ 'ServerGroupStatus' => [
+ 'title' => '服务器组状态',
+ 'description' => 'The status of the server group. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**.'."\n"
+ .'* **Available**'."\n"
+ .'* **Configuring**'."\n",
+ 'type' => 'string',
+ 'example' => 'Available',
+ ],
+ 'ServerGroupType' => [
+ 'title' => '服务器组类型',
+ 'description' => 'The server group type. Valid values:'."\n"
+ ."\n"
+ .'* **Instance**: instances, including ECS instances, ENIs, and elastic container instances.'."\n"
+ .'* **Ip**: IP addresses.'."\n"
+ .'* **Fc**: Function Compute'."\n",
+ 'type' => 'string',
+ 'example' => 'Instance',
+ ],
+ 'StickySessionConfig' => [
+ 'title' => '会话保持配置',
+ 'description' => 'The configuration of session persistence.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Cookie' => [
+ 'title' => 'Cookie',
+ 'description' => 'The cookie configured for the server.'."\n",
+ 'type' => 'string',
+ 'example' => 'B490B5EBF6F3CD402E515D22BCDA****',
+ ],
+ 'CookieTimeout' => [
+ 'title' => 'Cookie超时时间',
+ 'description' => 'The timeout period of the cookie. Unit: seconds. Valid values: **1** to **86400**.'."\n"
+ ."\n"
+ .'> This parameter takes effect only when **StickySessionEnabled** is set to **true** and **StickySessionType** is set to **Insert**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ 'StickySessionEnabled' => [
+ 'title' => '是否开启会话保持',
+ 'description' => 'Indicates whether session persistence is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'StickySessionType' => [
+ 'title' => '会话保持类型',
+ 'description' => 'The method that is used to handle the cookie. Valid values:'."\n"
+ ."\n"
+ .'* **insert**: inserts the cookie. The first time a client accesses ALB, ALB inserts the SERVERID cookie into the HTTP or HTTPS response packet. Subsequent requests from the client that carry this cookie are forwarded to the same backend server as the first request.'."\n"
+ .'* **Server**: rewrites the cookie. ALB rewrites the custom cookies in requests from a client. Subsequent requests from the client that carry the new cookie are forwarded to the same backend server as the first request.'."\n",
+ 'type' => 'string',
+ 'example' => 'Insert',
+ ],
+ ],
+ ],
+ 'VpcId' => [
+ 'title' => '服务器组所在VpcId',
+ 'description' => 'The ID of the VPC to which the ALB instance belongs.'."\n",
+ 'type' => 'string',
+ 'example' => 'vpc-bp15zckdt37pq72zv****',
+ ],
+ 'Tags' => [
+ 'title' => '标签列表',
+ 'description' => 'The tags that are added to the server group.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags that are added to the server group.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '标签键',
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'Test',
+ ],
+ 'Value' => [
+ 'title' => '标签值',
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'Test',
+ ],
+ ],
+ ],
+ ],
+ 'ConfigManagedEnabled' => [
+ 'title' => '是否开启配置管理',
+ 'description' => 'Indicates whether configuration management is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'UpstreamKeepaliveEnabled' => [
+ 'title' => '是否开启后端长链接',
+ 'description' => 'Indicates whether persistent TCP connections are enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'Ipv6Enabled' => [
+ 'title' => '是否支持Ipv6',
+ 'description' => 'Indicates whether IPv6 is supported. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'ServerCount' => [
+ 'title' => '服务器组内服务器数量',
+ 'description' => 'The number of backend servers in the server group.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'ServiceName' => [
+ 'title' => '服务器名称',
+ 'description' => 'The name of the server group.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'UchConfig' => [
+ 'title' => 'url一致性hash参数配置',
+ 'description' => 'The configuration of consistent hashing based on URLs.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Type' => [
+ 'title' => '参数类型',
+ 'description' => 'The parameter type. Valid value: QueryString.'."\n",
+ 'type' => 'string',
+ 'example' => 'QueryString',
+ ],
+ 'Value' => [
+ 'title' => '一致性hash参数值',
+ 'description' => 'The hash value.'."\n",
+ 'type' => 'string',
+ 'example' => 'abc',
+ ],
+ ],
+ ],
+ 'CreateTime' => [
+ 'description' => 'The time when the resource was created.'."\n",
+ 'type' => 'string',
+ 'example' => '2022-07-02T02:49:05Z',
+ ],
+ 'ConnectionDrainConfig' => [
+ 'description' => 'The configurations of connection draining.'."\n"
+ ."\n"
+ .'After connection draining is enabled, ALB maintains data transmission for a period of time after the backend server is removed or declared unhealthy.'."\n"
+ .'> '."\n"
+ .'> - Basic ALB instances do not support connection draining. Standard and WAF-enabled ALB instances support connection draining. '."\n"
+ .'> - Server groups of the instance and IP types support connection draining. Server groups of the Function Compute type do not support connection draining.',
+ 'type' => 'object',
+ 'properties' => [
+ 'ConnectionDrainEnabled' => [
+ 'description' => 'Indicates whether connection draining is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'ConnectionDrainTimeout' => [
+ 'description' => 'The timeout period of connection draining.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '300',
+ ],
+ ],
+ ],
+ 'SlowStartConfig' => [
+ 'title' => '慢启动配置',
+ 'description' => 'The configurations of slow starts.'."\n"
+ ."\n"
+ .'After slow starts are enabled, ALB prefetches data to newly added backend servers. Requests distributed to the backend servers gradually increase.'."\n"
+ ."\n"
+ .'> '."\n"
+ .'> - Basic ALB instances do not support slow starts. Standard and WAF-enabled ALB instances support slow starts.'."\n"
+ .'> - Server groups of the instance and IP types support slow starts. Server groups of the Function Compute type do not support slow starts.'."\n"
+ .'> - Slow start is supported only by the weighted round-robin scheduling algorithm.',
+ 'type' => 'object',
+ 'properties' => [
+ 'SlowStartEnabled' => [
+ 'description' => 'Indicates whether slow starts are enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'SlowStartDuration' => [
+ 'description' => 'The duration of a slow start.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '30',
+ ],
+ ],
+ ],
+ 'CrossZoneEnabled' => [
+ 'description' => 'Indicates whether cross-zone load balancing is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true** (default)'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'eventInfo' => [
+ 'enable' => false,
+ 'eventNames' => [],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"caeba0bbb2be03f8****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876******\\",\\n \\"ServerGroups\\": [\\n {\\n \\"HealthCheckConfig\\": {\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckEnabled\\": true,\\n \\"HealthCheckHost\\": \\"www.example.com\\",\\n \\"HealthCheckCodes\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckHttpVersion\\": \\"HTTP1.1\\",\\n \\"HealthCheckInterval\\": 5,\\n \\"HealthCheckMethod\\": \\"HEAD\\",\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"HTTP\\",\\n \\"HealthCheckTimeout\\": 3,\\n \\"HealthyThreshold\\": 4,\\n \\"UnhealthyThreshold\\": 4\\n },\\n \\"Protocol\\": \\"HTTP\\",\\n \\"RelatedLoadBalancerIds\\": [\\n \\"alb-n5qw04uq8savfe****\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Scheduler\\": \\"Wrr\\",\\n \\"ServerGroupId\\": \\"sgp-cige6j****\\",\\n \\"ServerGroupName\\": \\"Group3\\",\\n \\"ServerGroupStatus\\": \\"Available\\",\\n \\"ServerGroupType\\": \\"Instance\\",\\n \\"StickySessionConfig\\": {\\n \\"Cookie\\": \\"B490B5EBF6F3CD402E515D22BCDA****\\",\\n \\"CookieTimeout\\": 1000,\\n \\"StickySessionEnabled\\": false,\\n \\"StickySessionType\\": \\"Insert\\"\\n },\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"Test\\",\\n \\"Value\\": \\"Test\\"\\n }\\n ],\\n \\"ConfigManagedEnabled\\": false,\\n \\"UpstreamKeepaliveEnabled\\": false,\\n \\"Ipv6Enabled\\": false,\\n \\"ServerCount\\": 1,\\n \\"ServiceName\\": \\"test\\",\\n \\"UchConfig\\": {\\n \\"Type\\": \\"QueryString\\",\\n \\"Value\\": \\"abc\\"\\n },\\n \\"CreateTime\\": \\"2022-07-02T02:49:05Z\\",\\n \\"ConnectionDrainConfig\\": {\\n \\"ConnectionDrainEnabled\\": false,\\n \\"ConnectionDrainTimeout\\": 300\\n },\\n \\"SlowStartConfig\\": {\\n \\"SlowStartEnabled\\": false,\\n \\"SlowStartDuration\\": 30\\n },\\n \\"CrossZoneEnabled\\": true\\n }\\n ],\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"<ListServerGroupsResponse>\\n <MaxResults>50</MaxResults>\\n <NextToken>caeba0bbb2be03f8****</NextToken>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n <ServerGroups>\\n <HealthCheckConfig>\\n <HealthCheckConnectPort>80</HealthCheckConnectPort>\\n <HealthCheckEnabled>true</HealthCheckEnabled>\\n <HealthCheckHost>www.example.com</HealthCheckHost>\\n <HealthCheckCodes>http_2xx</HealthCheckCodes>\\n <HealthCheckHttpVersion>HTTP1.1</HealthCheckHttpVersion>\\n <HealthCheckInterval>5</HealthCheckInterval>\\n <HealthCheckMethod>HEAD</HealthCheckMethod>\\n <HealthCheckPath>/test/index.html</HealthCheckPath>\\n <HealthCheckProtocol>HTTP</HealthCheckProtocol>\\n <HealthCheckTimeout>3</HealthCheckTimeout>\\n <HealthyThreshold>4</HealthyThreshold>\\n <UnhealthyThreshold>4</UnhealthyThreshold>\\n </HealthCheckConfig>\\n <Protocol>HTTP</Protocol>\\n <ResourceGroupId>rg-atstuj3rtop****</ResourceGroupId>\\n <Scheduler>Wrr</Scheduler>\\n <ServerGroupId>sgp-cige6j****</ServerGroupId>\\n <ServerGroupName>Group3</ServerGroupName>\\n <ServerGroupStatus>Available</ServerGroupStatus>\\n <ServerGroupType>Instance</ServerGroupType>\\n <StickySessionConfig>\\n <Cookie>B490B5EBF6F3CD402E515D22BCDA****</Cookie>\\n <CookieTimeout>1000</CookieTimeout>\\n <StickySessionEnabled>false</StickySessionEnabled>\\n <StickySessionType>Insert</StickySessionType>\\n </StickySessionConfig>\\n <VpcId>vpc-bp15zckdt37pq72zv****</VpcId>\\n <Tags>\\n <Key>Test</Key>\\n <Value>Test</Value>\\n </Tags>\\n <ConfigManagedEnabled>false</ConfigManagedEnabled>\\n <UpstreamKeepaliveEnabled>false</UpstreamKeepaliveEnabled>\\n <Ipv6Enabled>false</Ipv6Enabled>\\n <ServerCount>1</ServerCount>\\n <ServiceName>test</ServiceName>\\n <CreateTime>2023-03-21T07:43:10Z</CreateTime>\\n </ServerGroups>\\n <TotalCount>1000</TotalCount>\\n</ListServerGroupsResponse>","errorExample":""}]',
+ 'title' => 'ListServerGroups',
+ ],
+ 'ListServerGroupServers' => [
+ 'summary' => 'Queries servers in a server group.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '167',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbULKWF1',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXG****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The maximum number of entries to return. Valid values: **1** to **100**. If you do not specify a value, the default value **20** is used.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '1000',
+ 'minimum' => '1',
+ 'example' => '50',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'ServerGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器组id',
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'ServerIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The IDs of the servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the backend server. You can specify at most 40 server IDs in each call.'."\n"
+ ."\n"
+ .'* If the backend server group is of the **Instance** type, set this parameter to the ID of an Elastic Compute Service (ECS) instance, an elastic network interface (ENI), or an elastic container instance.'."\n"
+ .'* If the backend server group is of the **Ip** type, set this parameter to an IP address.'."\n"
+ .'* If the backend server group is of the **Fc** type, set this parameter to the Alibaba Cloud Resource Name (ARN) of a function.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'i-bp1e0u8f10by57wl****',
+ 'title' => '服务器id',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ 'title' => '服务器id列表',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags that are added to the server group. You can specify up to 10 tags in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags that are added to the server group. You can specify up to 10 tags in each call.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '标签键',
+ 'description' => 'The tag key. You can specify up to 10 tag keys.'."\n"
+ ."\n"
+ .'The tag key can be up to 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Test',
+ ],
+ 'Value' => [
+ 'title' => '标签值',
+ 'description' => 'The tag value. You can specify up to 10 tag values.'."\n"
+ ."\n"
+ .'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Test',
+ ],
+ ],
+ 'required' => false,
+ 'title' => '服务器组绑定的标签',
+ ],
+ 'required' => false,
+ 'title' => '服务器组绑定的标签列表',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The maximum number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The returned value of NextToken is a pagination token, which can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If **NextToken** is not empty, the value of NextToken can be used in the next request to retrieve a new page of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'caeba0bbb2be03f8****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ 'Servers' => [
+ 'title' => '后端服务器列表',
+ 'description' => 'A list of backend servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configuration of the backend server.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Description' => [
+ 'title' => '描述信息',
+ 'description' => 'The description of the backend server.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Port' => [
+ 'title' => '端口',
+ 'description' => 'The port used by the backend server. Valid values: **1** to **65535**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ 'ServerId' => [
+ 'title' => '服务器id',
+ 'description' => 'The ID of the backend server.'."\n"
+ ."\n"
+ .'> If **ServerType** is set to **Fc**, **ServerId** is the ARN of a function.'."\n",
+ 'type' => 'string',
+ 'example' => 'i-bp1f9kdprbgy9uiu****',
+ ],
+ 'ServerIp' => [
+ 'title' => '服务器ip',
+ 'description' => 'The IP address in inclusive ENI mode.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.XX.XX',
+ ],
+ 'ServerType' => [
+ 'title' => '后端服务器类型',
+ 'description' => 'The type of the backend server.'."\n",
+ 'type' => 'string',
+ 'example' => 'Ecs',
+ ],
+ 'Status' => [
+ 'title' => '状态',
+ 'description' => 'The status of the backend server. Valid values:'."\n"
+ ."\n"
+ .'* **Adding**'."\n"
+ .'* **Available**'."\n"
+ .'* **Configuring**'."\n"
+ .'* **Removing**'."\n",
+ 'type' => 'string',
+ 'example' => 'Available',
+ ],
+ 'Weight' => [
+ 'title' => '权重',
+ 'description' => 'The weight of the backend server. An ECS instance with a higher weight receives more requests.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '100',
+ ],
+ 'ServerGroupId' => [
+ 'title' => '服务器组id',
+ 'description' => 'The ID of the server group.'."\n",
+ 'type' => 'string',
+ 'example' => 'sgp-qy042e1jabmprh****',
+ ],
+ 'RemoteIpEnabled' => [
+ 'title' => '是否是远端ip',
+ 'description' => 'Indicates whether the remote IP address feature is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ ],
+ 'title' => '后端服务器',
+ ],
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.ServerGroup',
+ 'errorMessage' => 'Authentication has failed for ServerGroup.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"caeba0bbb2be03f8****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF*****\\",\\n \\"Servers\\": [\\n {\\n \\"Description\\": \\"test\\",\\n \\"Port\\": 80,\\n \\"ServerId\\": \\"i-bp1f9kdprbgy9uiu****\\",\\n \\"ServerIp\\": \\"192.168.XX.XX\\",\\n \\"ServerType\\": \\"Ecs\\",\\n \\"Status\\": \\"Available\\",\\n \\"Weight\\": 100,\\n \\"ServerGroupId\\": \\"sgp-qy042e1jabmprh****\\",\\n \\"RemoteIpEnabled\\": true\\n }\\n ],\\n \\"TotalCount\\": 3\\n}","errorExample":""},{"type":"xml","example":"<ListServerGroupServersResponse>\\n <MaxResults>50</MaxResults>\\n <NextToken>caeba0bbb2be03f8****</NextToken>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n <Servers>\\n <Description>test</Description>\\n <Port>80</Port>\\n <ServerId>i-bp1f9kdprbgy9uiu****</ServerId>\\n <ServerIp>192.168.XX.XX</ServerIp>\\n <ServerType>Ecs</ServerType>\\n <Status>Available</Status>\\n <Weight>100</Weight>\\n <ServerGroupId>sgp-qy042e1jabmprh****</ServerGroupId>\\n <RemoteIpEnabled>true</RemoteIpEnabled>\\n </Servers>\\n <TotalCount>3</TotalCount>\\n</ListServerGroupServersResponse>","errorExample":""}]',
+ 'title' => 'ListServerGroupServers',
+ ],
+ 'RemoveServersFromServerGroup' => [
+ 'summary' => 'Removes backend servers from a server group.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ServerGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '后端服务器Id',
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sgp-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'Servers',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '后端服务器',
+ 'description' => 'The backend servers to be removed. You can specify up to 200 backend servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the backend server.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Port' => [
+ 'title' => '后端端口号',
+ 'description' => 'The port that is used by the backend server. Valid values: **1** to **65535**.'."\n"
+ ."\n"
+ .'> This parameter is required when you set **ServerType** to **Ecs**, **Eni**, **Eci**, or **Ip**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'docRequired' => false,
+ 'example' => '80',
+ ],
+ 'ServerId' => [
+ 'title' => '后端服务器id',
+ 'description' => 'The backend server ID.'."\n"
+ ."\n"
+ .'* If the server group is of the **Instance** type, set ServerId to the ID of a resource of the **Ecs**, **Eni**, or **Eci** type.'."\n"
+ .'* If the server group is of the **Ip** type, set this parameter to IP addresses.'."\n"
+ .'* If the server group is of the **Fc** type, set ServerId to the Alibaba Cloud Resource Name (ARN) of a function.'."\n"
+ ."\n"
+ .'> You can call the [ListServerGroups](~~2254862~~) operation to query information about the server group type so that you can set ServerId to a proper value.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'i-bp1f9kdprbgy9uiu****',
+ ],
+ 'ServerIp' => [
+ 'title' => '后端服务器ip',
+ 'description' => 'The IP address of the elastic network interface (ENI) in inclusive mode.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.1.1',
+ ],
+ 'ServerType' => [
+ 'title' => '后端服务器类型',
+ 'description' => 'The type of the backend server. Valid values:'."\n"
+ ."\n"
+ .'* **Ecs**: Elastic Compute Service (ECS) instance'."\n"
+ .'* **Eni**: ENI'."\n"
+ .'* **Eci**: elastic container instance'."\n"
+ .'* **Ip**: IP address'."\n"
+ .'* **Fc**: Function Compute instance'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => false,
+ 'example' => 'Ecs',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 200,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.ServerGroup',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.BackendServer',
+ 'errorMessage' => 'The specified resource of %s is being configured, please try again later.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring',
+ 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.ServerGroup',
+ 'errorMessage' => 'Authentication is failed for ServerGroup.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.BackendServer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\"\\n}","errorExample":""},{"type":"xml","example":"<RemoveServersFromServerGroupResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</RemoveServersFromServerGroupResponse>","errorExample":""}]',
+ 'title' => 'RemoveServersFromServerGroup',
+ 'description' => '**RemoveServersFromServerGroup** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background.'."\n"
+ ."\n"
+ .'1. You can call [ListServerGroups](~~2254862~~) to query the status of a server group.'."\n"
+ ."\n"
+ .' * If the server group is in the **Configuring** state, the server group is being modified.'."\n"
+ .' * If the server group is in the **Available** state, the server group is running.'."\n"
+ ."\n"
+ .'2. You can call [ListServerGroupServers](~~2254863~~) to query the status of a backend server.'."\n"
+ ."\n"
+ .' * If the backend server is in the **Removing** state, the backend server is being removed from the server group.'."\n"
+ .' * If the backend server cannot be found, the backend server is no longer in the server group.'."\n",
+ ],
+ 'ReplaceServersInServerGroup' => [
+ 'summary' => 'Replaces backend servers in a server group.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbULKWF1',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ServerGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '后端服务器Id',
+ 'description' => 'The ID of the server group.'."\n"
+ ."\n"
+ .'> You cannot perform this operation on a server group of the Function type.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sgp-5114d593o96qxy****',
+ ],
+ ],
+ [
+ 'name' => 'AddedServers',
+ 'in' => 'formData',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '待添加后端服务器',
+ 'description' => 'The backend servers. You can specify at most 200 servers in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the backend server.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Description' => [
+ 'title' => '描述信息',
+ 'description' => 'The description of the backend server. The description must be 2 to 256 characters in length, and cannot start with http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Port' => [
+ 'title' => '后端端口号',
+ 'description' => 'The port used by the backend server in the server group. Valid values: **1** to **65535**. You can specify at most 200 servers in each call.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '80',
+ ],
+ 'ServerId' => [
+ 'title' => '后端服务器id',
+ 'description' => 'The ID of the backend server. You can specify at most 200 servers in each call.'."\n"
+ ."\n"
+ .'* If the server group is of the **Instance** type, set ServerId to the ID of a resource of the **Ecs**, **Eni**, or **Eci** type.'."\n"
+ .'* If the server group is of the **Ip** type, set ServerId to IP addresses.'."\n"
+ ."\n"
+ .'> You cannot perform this operation on a server group of the Function Compute type. You can call the [ListServerGroups](~~213627~~) operation to query the type of server groups.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'i-bp1f9kdprbgy9uiu****',
+ ],
+ 'ServerIp' => [
+ 'title' => '后端服务器ip',
+ 'description' => 'The IP address of the elastic network interface (ENI) in exclusive mode.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.1.1',
+ ],
+ 'ServerType' => [
+ 'title' => '后端服务器类型',
+ 'description' => 'The type of backend server. You can specify at most 200 servers in each call. Valid values:'."\n"
+ ."\n"
+ .'* **Ecs**: Elastic Compute Service (ECS) instance'."\n"
+ .'* **Eni**: ENI'."\n"
+ .'* **Eci**: elastic container instance'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'Ecs',
+ ],
+ 'Weight' => [
+ 'title' => '后端服务器权重',
+ 'description' => 'The weight of the backend server. You can specify at most 200 servers in each call.'."\n"
+ ."\n"
+ .'Valid values: **0** to **100**. Default value: **100**. If the value is set to **0**, no requests are forwarded to the server.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 200,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'RemovedServers',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '待删除后端服务器',
+ 'description' => 'The backend servers that you want to remove.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configurations of the backend servers that you want to remove.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerId' => [
+ 'title' => '后端服务器id',
+ 'description' => 'The ID of the backend server. You can specify at most 200 servers in each call.'."\n"
+ ."\n"
+ .'* If the server group is of the **Instance** type, set ServerId to the ID of a resource of the **Ecs**, **Eni**, or **Eci** type.'."\n"
+ .'* If the server group is of the **Ip** type, set ServerId to IP addresses.'."\n"
+ ."\n"
+ .'> You cannot perform this operation on a server group of the Function Compute type. You can call the [ListServerGroups](~~213627~~) operation to query the type of server groups.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'ecs-bp1ac9uozods2uc****',
+ ],
+ 'ServerIp' => [
+ 'title' => '后端服务器ip',
+ 'description' => 'The IP address of the ENI in exclusive mode.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.1.12',
+ ],
+ 'ServerType' => [
+ 'title' => '后端服务器类型',
+ 'description' => 'The type of backend server. You can specify at most 200 servers in each call. Valid values:'."\n"
+ ."\n"
+ .'* **Ecs**: ECS instance'."\n"
+ .'* **Eni**: ENI'."\n"
+ .'* **Eci**: elastic container instance'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'ecs',
+ ],
+ 'Port' => [
+ 'title' => '端口',
+ 'description' => 'The port that is used by the backend server. Valid values: **1** to **65535**. You can specify at most 200 servers in each call.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => '81',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 200,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx` HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerAddedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.ServerGroup',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'Conflict.BackendServer',
+ 'errorMessage' => 'There is already %s having the same configuration with %s.',
+ ],
+ [
+ 'errorCode' => 'DuplicatedParam.BackendServer',
+ 'errorMessage' => 'The param of %s is duplicated.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.EciNotSupportJobType',
+ 'errorMessage' => 'The operation is not allowed because of eci not support job type.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.ServerType',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring',
+ 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.BackendServer',
+ 'errorMessage' => 'The specified resource of %s is being configured, please try again later.',
+ ],
+ [
+ 'errorCode' => 'IdempotentParameterMismatch',
+ 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Ecs',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Eci',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Eni',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.BackendServer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\"\\n}","errorExample":""},{"type":"xml","example":"<ReplaceServersInServerGroupResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</ReplaceServersInServerGroupResponse>","errorExample":""}]',
+ 'title' => 'ReplaceServersInServerGroup',
+ 'description' => '**ReplaceServersInServerGroup** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background.'."\n"
+ ."\n"
+ .'1. You can call the [ListServerGroups](~~213627~~) operation to query the status of a server group.'."\n"
+ ."\n"
+ .' * If a server group is in the **Configuring** state, it indicates that the server group is being modified.'."\n"
+ .' * If a server group is in the **Available** state, it indicates that the server group is running.'."\n"
+ ."\n"
+ .'2. You can call the [ListServerGroupServers](~~213628~~) operation to query the status of a backend server.'."\n"
+ ."\n"
+ .' * If a backend server is in the **Replacing** state, it indicates that the server is being removed from the server group and a new server is added to the server group.'."\n"
+ .' * If a backend server is in the \\*\\*Available\\*\\* state, it indicates that the server is running.'."\n",
+ ],
+ 'CreateRule' => [
+ 'summary' => 'Creates a forwarding rule for a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '417',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听标识',
+ 'description' => 'The listener ID of the ALB instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Priority',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '转发规则优先级',
+ 'description' => 'The priority of the forwarding rule. Valid values: **1 to 10000**. A smaller value indicates a higher priority.'."\n"
+ ."\n"
+ .'> The priorities of the forwarding rules created for the same listener must be unique.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'example' => '10',
+ ],
+ ],
+ [
+ 'name' => 'Direction',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '转发规则方向',
+ 'description' => 'The direction to which the forwarding rule is applied. Valid values:'."\n"
+ ."\n"
+ .'* **Request** (default): The forwarding rule is applied to the requests received by ALB.'."\n"
+ .'* **Response**: The forwarding rule is applied to the responses returned by backend servers.'."\n"
+ ."\n"
+ .'> Basic ALB instances do not support the **Response** value.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Request',
+ ],
+ ],
+ [
+ 'name' => 'RuleActions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '转发规则动作',
+ 'description' => 'The actions of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The action of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'FixedResponseConfig' => [
+ 'title' => '返回固定内容动作配置',
+ 'description' => 'The configuration of the custom response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Content' => [
+ 'title' => '内容',
+ 'description' => 'The content of the custom response. The content cannot exceed 1 KB in size, and can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'dssacav',
+ ],
+ 'ContentType' => [
+ 'title' => '内容类型',
+ 'description' => 'The format of the response.'."\n"
+ ."\n"
+ .'Valid values: **text/plain**, **text/css**, **text/html**, **application/javascript**, and **application/json**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'text/plain',
+ ],
+ 'HttpCode' => [
+ 'title' => 'HTTP响应码',
+ 'description' => 'The HTTP status code in responses. Valid values: **2xx**, **4xx**, **5xx**. The value must be a numeric string. **x** must be a digit.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP_200',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ForwardGroupConfig' => [
+ 'title' => '转发组动作配置',
+ 'description' => 'The server groups to which requests are forwarded. You can specify at most five server groups for each forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '转发到的目的服务器组列表',
+ 'description' => 'The server groups to which requests are forwarded. You can specify at most five server groups for each forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组标识',
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'sgp-k86c1ov501id6p****',
+ ],
+ 'Weight' => [
+ 'title' => '权重',
+ 'description' => 'The weight of the server group. A larger value specifies a higher weight. A server group with a higher weight receives more requests. Valid values: **0** to **100**.'."\n"
+ ."\n"
+ .'* If the number of destination server groups is 1, the default weight of the server group is **100**, unless you specify a weight.'."\n"
+ .'* If the number of destination server groups is larger than 1, you must specify a weight.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'minimum' => '0',
+ 'example' => '100',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ 'ServerGroupStickySession' => [
+ 'title' => '服务器组之间会话保持',
+ 'description' => 'The configuration of session persistence for the server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Enabled' => [
+ 'title' => '是否开启会话保持',
+ 'description' => 'Specifies whether to enable session persistence. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'Timeout' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period of sessions. Unit: seconds. Valid values: **1** to **86400**. Default value: **1000**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'InsertHeaderConfig' => [
+ 'title' => '插入头部动作配置',
+ 'description' => 'The key of the header to be inserted.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头',
+ 'description' => 'The key of the header. The header key must be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The header keys specified by **InsertHeaderConfig** must be unique.'."\n"
+ ."\n"
+ .'> You cannot specify the following header keys: `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, `authority`, and `x-forwarded-host`. The header keys are case-insensitive.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'key',
+ ],
+ 'Value' => [
+ 'title' => 'HTTP标头内容',
+ 'description' => 'The value of the header to be inserted.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **SystemDefined**, you can set the Value parameter to one of the following values:'."\n"
+ ."\n"
+ .' * **ClientSrcPort**: the client port.'."\n"
+ .' * **ClientSrcIp**: the IP address of the client.'."\n"
+ .' * **Protocol**: the request protocol (HTTP or HTTPS).'."\n"
+ .' * **SLBId**: the ID of the ALB instance.'."\n"
+ .' * **SLBPort**: the listener port.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **UserDefined**, a custom header value is supported. The header value must be 1 to 128 characters in length, and can contain printable characters whose ASCII values are `greater than or equal to 32 and lower than 127`. You can use asterisks (\\*) and question marks (?) as wildcard characters. `Quotation marks (")` are not supported. The header value cannot start or end with a space character, or end with a backslash (`\\`).'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **ReferenceHeader**, you can reference a value from request headers. The value must be 1 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UserDefined',
+ ],
+ 'ValueType' => [
+ 'title' => '取值类型',
+ 'description' => 'The type of the header. Valid values:'."\n"
+ ."\n"
+ .'* **UserDefined**: a custom header value.'."\n"
+ .'* **ReferenceHeader**: a header value that is referenced from one of the request headers.'."\n"
+ .'* **SystemDefined**: a header predefined by the system.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UserDefined',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Order' => [
+ 'title' => '优先级',
+ 'description' => 'The priority of the action. Valid values: **1 to 50000**. A smaller value indicates a higher priority. The actions of a forwarding rule are applied in descending order of priority. This parameter cannot empty. The priority of each action within a forwarding rule must be unique.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'example' => '1',
+ ],
+ 'RedirectConfig' => [
+ 'title' => '重定向动作配置',
+ 'description' => 'The configuration of the redirect action.'."\n"
+ ."\n"
+ .'> Do not set all fields in **RedirectConfig** to default values, except for **httpCode**.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '要跳转的主机地址',
+ 'description' => 'The hostname to which requests are forwarded. Valid values:'."\n"
+ ."\n"
+ .'* **${host}** (default): If you set the value to ${host}, you cannot append other characters.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, and the following characters: - . \\* = ~ \\_ + \\ ^ ! $ & | ( ) \\[ ] ?.'."\n"
+ .' * The hostname must contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .' * The rightmost domain label can contain only letters and wildcard characters, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
+ .' * The domain labels cannot start or end with hyphens (-).'."\n"
+ .' * You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '${host}',
+ ],
+ 'HttpCode' => [
+ 'title' => '跳转方式',
+ 'description' => 'The HTTP status code that indicates the redirect type. Valid values: **301**, **302**, **303**, **307**, and **308**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '301',
+ ],
+ 'Path' => [
+ 'title' => '要跳转的路径',
+ 'description' => 'The URL to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* Default value: **${path}**. **${host}**, **${protocol}**, and **${port}** are also supported. Each variable can be specified only once. You can specify one or more of the preceding variables in each request. You can also combine them with a custom value.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The URL must be 1 to 128 characters in length, and is case-sensitive. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .' * The URL must start with a forward slash (/) and can contain letters, digits, and the following special characters: `$ - _ . + / & ~ @ : \' * ?`. It cannot contain the following special characters: `% # ; ! ( ) [ ] ^ , \\ "`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test',
+ ],
+ 'Port' => [
+ 'title' => '要跳转的端口',
+ 'description' => 'The port to which requests are distributed.'."\n"
+ ."\n"
+ .'* **${port}** (default): If you set the value to ${port}, you cannot append other characters to the value.'."\n"
+ .'* You can also enter a port number. Valid values: **1 to 63335**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10',
+ ],
+ 'Protocol' => [
+ 'title' => '要跳转的协议',
+ 'description' => 'The redirect protocol. Valid values:'."\n"
+ ."\n"
+ .'* **${protocol}** (default): If you set the value to ${protocol}, you cannot modify the value or append other characters.'."\n"
+ .'* **HTTP**'."\n"
+ .'* **HTTPS**'."\n"
+ ."\n"
+ .'> * HTTPS listeners support only HTTPS redirection.'."\n"
+ .'>* HTTP listeners support HTTP and HTTPS redirection.',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ 'Query' => [
+ 'title' => '要跳转的查询字符串',
+ 'description' => 'The query string to which requests are redirected.'."\n"
+ ."\n"
+ .'* Default value: **${query}**. **${host}**, **${protocol}**, and **${port}** are also supported. Each variable can be specified only once. You can specify one or more of the preceding variables in each request. You can also combine them with a custom value.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The query string must be 1 to 128 characters in length.'."\n"
+ .' * It can contain printable characters, excluding space characters, the special characters `# [ ] { } \\ | < > "`, and lowercase letters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '${query}',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'RewriteConfig' => [
+ 'title' => '内部重定向动作配置',
+ 'description' => 'The configuration of the rewrite action.'."\n"
+ ."\n"
+ .'> If you specify multiple actions for a forwarding rule, you must configure the **ForwardGroup** parameter for the **RewriteConfig** action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '主机名',
+ 'description' => 'The hostname to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* **${host}** (default): If you set the value to ${host}, you cannot append other characters.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, and the following characters: - . \\* = ~ \\_ + \\ ^ ! $ & | ( ) \\[ ] ?.'."\n"
+ .' * The hostname must contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .' * The rightmost domain label can contain only letters and wildcard characters, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
+ .' * The domain labels cannot start or end with hyphens (-). You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'Path' => [
+ 'title' => '路径',
+ 'description' => 'The URL to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* Default value: **${path}**. **${host}**, **${protocol}**, and **${port}** are also supported. Each variable can be specified only once. You can specify one or more of the preceding variables in each request. You can also combine them with a custom value.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The URL must be 1 to 128 characters in length, and is case-sensitive. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .' * The URL must start with a forward slash (/) and can contain letters, digits, and the following special characters: `$ - _ . + / & ~ @ : \' * ?`. It cannot contain the following special characters: `% # ; ! ( ) [ ] ^ , \\ "`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/tsdf',
+ ],
+ 'Query' => [
+ 'title' => '查询',
+ 'description' => 'The query string of the URL to which requests are distributed.'."\n"
+ ."\n"
+ .'* Default value: **${query}**. **${host}**, **${protocol}**, and **${port}** are also supported. Each variable can be specified only once. The preceding variables can be used at the same time or combined with a custom value.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The path must be 1 to 128 characters in length.'."\n"
+ .' * It can contain printable characters, excluding space characters, the special characters `# [ ] { } \\ | < > "` and lowercase letters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '${query}',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '转发规则动作类型',
+ 'description' => 'The action. Valid values:'."\n"
+ ."\n"
+ .'* **ForwardGroup**: distributes requests to multiple vServer groups.'."\n"
+ .'* **Redirect**: redirects requests.'."\n"
+ .'* **FixedResponse**: returns a custom response.'."\n"
+ .'* **Rewrite**: rewrites requests.'."\n"
+ .'* **InsertHeader**: inserts headers.'."\n"
+ .'* **RemoveHeaderConfig:** deletes the header of a request.'."\n"
+ .'* **TrafficLimit**: throttles traffic.'."\n"
+ .'* **TrafficMirror**: mirrors network traffic.'."\n"
+ .'* **Cors**: enables cross-origin resource sharing (CORS).'."\n"
+ ."\n"
+ .'The following action types are supported:'."\n"
+ ."\n"
+ .'* **FinalType**: Each forwarding rule can contain only one FinalType action, which is performed at the end. You can specify only one of **ForwardGroup**, **Redirect**, and **FixedResponse**.'."\n"
+ .'* **ExtType**: Each forwarding rule can contain one or more **ExtType** actions, which are performed before the **FinalType** action. If you want to specify an ExtType action, you must also specify a **FinalType** action. You can specify multiple **InsertHeader** actions or one **Rewrite** action.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'ForwardGroup',
+ ],
+ 'TrafficLimitConfig' => [
+ 'title' => '流量限速',
+ 'description' => 'The configuration of the traffic throttling action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QPS' => [
+ 'description' => 'The queries per second (QPS). Valid values: **1 to 1000000**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ 'PerIpQps' => [
+ 'description' => 'The number of requests per IP address. Value values: **1 to 1000000**.'."\n"
+ ."\n"
+ .'> If both the **QPS** and **PerIpQps** parameters are specified, the value of the **QPS** parameter is smaller than the value of the PerIpQps parameter.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'TrafficMirrorConfig' => [
+ 'title' => '流量镜像',
+ 'description' => 'The configuration of the traffic mirroring action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TargetType' => [
+ 'title' => '镜像目标类型',
+ 'description' => 'The type of destination to which network traffic is mirrored. Valid values:'."\n"
+ ."\n"
+ .'* **ForwardGroupMirror**: a server group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ForwardGroupMirror',
+ ],
+ 'MirrorGroupConfig' => [
+ 'title' => '镜像至服务器组',
+ 'description' => 'The configuration of the server group to which traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'description' => 'The configuration of the server group to which traffic is mirrored.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The configuration of the server group to which traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'sgp-00mkgijak0w4qgz9****',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'RemoveHeaderConfig' => [
+ 'title' => '去除HTTP标头',
+ 'description' => 'The HTTP headers to be removed.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The keys of the headers to be removed. The header keys must be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The header keys specified in RemoveHeader must be unique.'."\n"
+ ."\n"
+ .'* If Direction is set to Request, the following request headers cannot be removed: `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, `authority`, and `x-forwarded-host`. Request headers are not case-sensitive.'."\n"
+ .'* If Direction is set to Response, the following response header keys are not supported: `connection`, `upgrade`, `content-length`, and `transfer-encoding`. The header keys are not case-sensitive.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'CorsConfig' => [
+ 'title' => '跨域',
+ 'description' => 'Request forwarding based on CORS.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AllowOrigin' => [
+ 'title' => '允许的访问来源',
+ 'description' => 'The trusted origins of CORS requests. You can specify one or more values, or only the wildcard character (`*`).'."\n"
+ ."\n"
+ .'* Each value must start with `http://` or `https://`, which must be followed by a valid domain name, including top-level domain names. Example: `http://*.test.abc.example.com`.'."\n"
+ .'* You can specify a port in each value or leave the port empty. Valid values: **1** to **65535**.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The allowed origin of CORS requests.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'http://example.com',
+ ],
+ 'required' => false,
+ ],
+ 'AllowMethods' => [
+ 'title' => '选择跨域访问时允许的HTTP方法',
+ 'description' => 'The allowed HTTP methods of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The allowed HTTP method of CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **GET**'."\n"
+ .'* **POST**'."\n"
+ .'* **PUT**'."\n"
+ .'* **DELETE**'."\n"
+ .'* **HEAD**'."\n"
+ .'* **OPTIONS**'."\n"
+ .'* **PATCH**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'GET',
+ ],
+ 'required' => false,
+ ],
+ 'AllowHeaders' => [
+ 'title' => '允许跨域的Header列表',
+ 'description' => 'The trusted headers of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted header of CORS requests. You can specify an asterisk (`*`) as a wildcard header, or one or more values. Separate multiple values with commas (,). Each value can be up to 32 characters in length, and can contain only letters and digits. It cannot start or end with an underscore (\\_) or a hyphen (-).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_123',
+ ],
+ 'required' => false,
+ ],
+ 'ExposeHeaders' => [
+ 'title' => '允许暴露的Header列表',
+ 'description' => 'The headers that can be exposed.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The header that can be exposed. You can specify an asterisk (`*`) as a wildcard header, or one or more values. Separate multiple values with commas (,). Each value can be up to 32 characters in length, and can contain only letters and digits. It cannot start or end with an underscore (\\_) or a hyphen (-).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_123',
+ ],
+ 'required' => false,
+ ],
+ 'AllowCredentials' => [
+ 'title' => '是否允许携带凭证信息',
+ 'description' => 'Specifies whether credentials can be carried in CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **on**'."\n"
+ .'* **off**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'on',
+ ],
+ 'MaxAge' => [
+ 'title' => '预检请求在浏览器的最大缓存时间',
+ 'description' => 'The maximum cache time of dry run requests in the browser. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **-1** to **172800**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1000',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => true,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'RuleConditions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '转发规则条件',
+ 'description' => 'The match conditions of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The match condition of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CookieConfig' => [
+ 'title' => 'Cookie条件配置',
+ 'description' => 'The key-value pairs of the cookie.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'Cookie键值对列表',
+ 'description' => 'The cookie values.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The cookie value.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'Cookie条件键',
+ 'description' => 'The cookie key.'."\n"
+ ."\n"
+ .'* The cookie key must be 1 to 100 characters in length.'."\n"
+ .'* You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .'* The value can contain printable characters, excluding uppercase letters, space characters, and the following special characters: `; # [ ] { } \\ | < > & "`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => 'Cookie条件值',
+ 'description' => 'The cookie value.'."\n"
+ ."\n"
+ .'* The cookie value must be 1 to 100 characters in length.'."\n"
+ .'* You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .'* The value can contain printable characters, excluding uppercase letters, space characters, and the following special characters: `; # [ ] { } \\ | < > & "`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'HeaderConfig' => [
+ 'title' => 'HTTP标头条件配置',
+ 'description' => 'The configuration of the header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The header key.'."\n"
+ ."\n"
+ .'* The header key must be 1 to 40 characters in length.'."\n"
+ .'* The key can contain letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ .'* Cookie and Host are not supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Port',
+ ],
+ 'Values' => [
+ 'title' => 'HTTP标头值列表',
+ 'description' => 'The header values.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The header value. The header values within a forwarding rule must be unique.'."\n"
+ ."\n"
+ .'* The header value must be 1 to 128 characters in length.'."\n"
+ .'* The value can contain asterisks (\\*), question marks (?), and other printable characters whose ASCII values are `larger than or equal to 32 and smaller than 127`. Quotation marks (`"`) are not supported.'."\n"
+ .'* The header value cannot start or end with a space character, or end with a backslash (`\\`).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5006',
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'HostConfig' => [
+ 'title' => '主机名条件配置',
+ 'description' => 'The configuration of the host.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '主机名列表',
+ 'description' => 'The hostnames.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The hostname. A forwarding rule can contain only one hostname, which must be unique.'."\n"
+ ."\n"
+ .'* The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, and the following characters: - . \\* = ~ \\_ + \\ ^ ! $ & | ( ) \\[ ] ?.'."\n"
+ .'* The hostname must contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .'* The rightmost domain label can contain only letters and wildcard characters, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
+ .'* The domain labels cannot start or end with hyphens (-). You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n"
+ .'* If you enter a specific hostname or a wildcard hostname, the hostname cannot start with a tilde (~).'."\n"
+ .'* If you enter a regular expression, the regular expression cannot start with an asterisk (\\*). The regular expression is not case-sensitive.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.edu',
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'MethodConfig' => [
+ 'title' => 'HTTP请求方法条件配置',
+ 'description' => 'The configurations of the request method.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'HTTP请求方法列表',
+ 'description' => 'The request methods.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The request method.'."\n"
+ ."\n"
+ .'Valid values: **HEAD**, **GET**, **POST**, **OPTIONS**, **PUT**, **PATCH**, and **DELETE**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PUT',
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'PathConfig' => [
+ 'title' => '路径条件配置',
+ 'description' => 'The configurations of the URL to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '路径条件列表',
+ 'description' => 'The forwarding URLs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The URL to which requests are forwarded. The URL must meet the following requirements:'."\n"
+ ."\n"
+ .'* The URL must be 1 to 128 characters in length, and is case-sensitive. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .'* If the URL is not a regular expression, it must start with a forward slash (/) and can contain letters, digits, and the following special characters: `$ - _ . + / & ~ @ : \' * ?`. It cannot contain the following special characters: `% # ; ! ( ) [ ] ^ , \\ "`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .'* If you use a regular expression to specify a URL, the URL must start with a title (~), It can contain letters, digits, and the following special characters: `. - _ / = ? ~ ^ * $ : ( ) [ ] + |`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test',
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'QueryStringConfig' => [
+ 'title' => '查询字符串条件配置',
+ 'description' => 'The configuration of the query strings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '查询字符串条件键值对列表',
+ 'description' => 'The query strings.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The query string.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '查询字符串条件键',
+ 'description' => 'They key of the query string.'."\n"
+ ."\n"
+ .'* The key must be 1 to 100 characters in length.'."\n"
+ .'* You can use asterisks (\\*) and question marks (?) as wildcard characters. It can contain printable characters, excluding uppercase letters, space characters, and the following special characters: `# [ ] { } \\ | < > & "`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => '查询字符串条件值',
+ 'description' => 'The value of the query string.'."\n"
+ ."\n"
+ .'* The value must be 1 to 128 characters in length.'."\n"
+ .'* It can contain printable characters, but cannot contain uppercase letters, space characters, or the following special characters: `# [ ] { } \\ | < > &`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ResponseStatusCodeConfig' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The configuration of the response status codes.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The response status codes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The response status code.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ResponseHeaderConfig' => [
+ 'title' => '返回HTTP标头',
+ 'description' => 'The configuration of headers.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '返回HTTP标头键',
+ 'description' => 'The header key.'."\n"
+ ."\n"
+ .'* The key must be 1 to 40 characters in length.'."\n"
+ .'* It can contain letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ .'* Cookie and Host are not supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Values' => [
+ 'title' => '返回HTTP标头值',
+ 'description' => 'The header values.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The header value.'."\n"
+ ."\n"
+ .'* The value must be 1 to 128 characters in length.'."\n"
+ .'* It can contain printable characters whose ASCII values are `larger than or equal to 32 and smaller than 127`, lowercase letters, asterisks (\\*), and question marks (?). Quotation marks (`"`) are not supported.'."\n"
+ .'* The header value cannot start or end with a space character, or end with a backslash (`\\`).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '50006',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '条件类型',
+ 'description' => 'The type of forwarding rule. Valid values:'."\n"
+ ."\n"
+ .'* **Host**: Requests are distributed based on hosts.'."\n"
+ .'* **Path**: Requests are distributed based on paths.'."\n"
+ .'* **Header**: Requests are distributed based on HTTP headers.'."\n"
+ .'* **QueryString**: Requests are distributed based on query strings.'."\n"
+ .'* **Method**: Requests are distributed based on request methods.'."\n"
+ .'* **Cookie**: Requests are distributed based on cookies.'."\n"
+ .'* **SourceIp**: Requests are forwarded based on source IP addresses.'."\n"
+ .'* **ResponseHeader**: Requests are forwarded based on HTTP response headers.'."\n"
+ .'* **ResponseStatusCode**: Requests are forwarded based on response status codes.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'Host',
+ ],
+ 'SourceIpConfig' => [
+ 'title' => '基于源IP业务流量匹配',
+ 'description' => 'Configuration of traffic matching based on source IP addresses. This parameter is required and valid when **Type** is set to **SourceIP**.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '基于源IP业务流量匹配',
+ 'description' => 'The source IP addresses used for traffic matching.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'You can specify one or more IP addresses, including CIDR blocks.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.0.0/32',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => true,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'RuleName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '转发规则名称',
+ 'description' => 'The name of the forwarding rule.'."\n"
+ ."\n"
+ .'* The name must be 2 to 128 characters in length.'."\n"
+ .'* It can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'rule-doc',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The ID of the asynchronous task.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540750',
+ ],
+ 'RuleId' => [
+ 'title' => '转发规则标识',
+ 'description' => 'The forwarding rule ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'rule-a3x3pg1yohq3lq****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.SameGroupForForwardAndMirrorAction',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.GRPCServerGroup',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'Conflict.Priority',
+ 'errorMessage' => 'There is already %s having the same configuration with %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerRulesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerAddedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleWildcardsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleMatchEvaluationsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleActionsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.Protocol',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.VpcId',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.RewriteMissingForwardGroup',
+ 'errorMessage' => 'The operation is not allowed because of RewriteMissingForwardGroup.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified listener is being configured, please try again later.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.MirrorActionSupportHttpGroupOnly',
+ 'errorMessage' => 'The operation is not allowed because of MirrorActionSupportHttpGroupOnly.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ProtocolMustSameForForwardGroupAction',
+ 'errorMessage' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'eventInfo' => [
+ 'enable' => false,
+ 'eventNames' => [],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540750\\",\\n \\"RuleId\\": \\"rule-a3x3pg1yohq3lq****\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateRuleResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540750</RequestId>\\n <RuleId>rule-a3x3pg1yohq3lq****</RuleId>\\n</CreateRuleResponse>","errorExample":""}]',
+ 'title' => 'CreateRule',
+ 'description' => 'Take note of the following limits:'."\n"
+ ."\n"
+ .'* When you configure the **Redirect** action, you can use the default value only for the **HttpCode** parameter. Do not use the default values for the other parameters.'."\n"
+ ."\n"
+ .'* If you specify the **Rewrite** action together with other actions in a forwarding rule, make sure that the **ForwardGroup** action is specified.'."\n"
+ ."\n"
+ .'* **CreateRule** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListRules](~~214379~~) operation to query the status of a forwarding rule.'."\n"
+ ."\n"
+ .' * If a forwarding rule is in the **Provisioning** state, the forwarding rule is being created.'."\n"
+ .' * If a forwarding rule is in the **Available** state, the forwarding rule is created.'."\n"
+ ."\n"
+ .'* You can set **RuleConditions** and **RuleActions** to add conditions and actions to a forwarding rule. The limits on conditions and actions are:'."\n"
+ ."\n"
+ .' * Limits on conditions: 5 for a basic Application Load Balancer (ALB) instance, 10 for a standard ALB instance, and 10 for a WAF-enabled ALB instance.'."\n"
+ .' * Limits on actions: 3 for a basic ALB instance, 5 for a standard ALB instance, and 5 for a WAF-enabled ALB instance.'."\n",
+ ],
+ 'CreateRules' => [
+ 'summary' => 'Creates multiple forwarding rules at a time.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '170',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbBIWWMH',
+ 'FEATUREslbTXOYED',
+ 'FEATUREslbQCCQ6L',
+ 'FEATUREslb4T90LL',
+ 'FEATUREslbIT4IYN',
+ 'FEATUREslbA51OGD',
+ 'FEATUREslbUBPZWI',
+ 'FEATUREslbGVK35E',
+ 'FEATUREslbYG3GCF',
+ 'FEATUREslbRBR9GZ',
+ 'FEATUREslbMWZQWL',
+ 'FEATUREslbJCYSIV',
+ 'FEATUREslbY93SFN',
+ 'FEATUREslbVUMBEO',
+ 'FEATUREslbZ4XFTS',
+ 'FEATUREslb2Q6O49',
+ ],
+ 'autoTest' => true,
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听标识',
+ 'description' => 'The ID of the Application Load Balancer (ALB) instance.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and sends the request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'Rules',
+ 'in' => 'formData',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '转发规则列表',
+ 'description' => 'The details about the forwarding rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The details about the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Priority' => [
+ 'title' => '转发规则优先级',
+ 'description' => 'The priority of the forwarding rule.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'example' => '10',
+ ],
+ 'RuleActions' => [
+ 'title' => '转发规则动作',
+ 'description' => 'The actions of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The action of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'FixedResponseConfig' => [
+ 'title' => '返回固定内容动作配置',
+ 'description' => 'The configuration of the action to return a fixed response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Content' => [
+ 'title' => '内容',
+ 'description' => 'The content of the custom response. The content cannot exceed 1 KB in size, and can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'dssacav',
+ ],
+ 'ContentType' => [
+ 'title' => '内容类型',
+ 'description' => 'The format of the custom response.'."\n"
+ ."\n"
+ .'Valid values: **text/plain**, **text/css**, **text/html**, **application/javascript**, and **application/json**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'text/plain',
+ ],
+ 'HttpCode' => [
+ 'title' => 'HTTP响应码',
+ 'description' => 'The HTTP status code in responses. Valid values: **2xx**, **4xx**, and **5xx**. The value must be a numeric string. **x** can be any digit.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP_200',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ForwardGroupConfig' => [
+ 'title' => '转发组动作配置',
+ 'description' => 'The configuration of the action to forward requests to server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '转发到的目的服务器组列表',
+ 'description' => 'The server groups to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组标识',
+ 'description' => 'The ID of the server group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'sgp-k86c1ov501id6p****',
+ ],
+ 'Weight' => [
+ 'title' => '权重',
+ 'description' => 'The weight of the server group. A larger value indicates a higher weight. A server group with a higher weight receives more requests. Valid values: **0** to **100**'."\n"
+ ."\n"
+ .'* If the number of destination server groups is 1, the default weight of the server group is **100**. You can specify another value.'."\n"
+ .'* If the number of destination server groups is larger than 1, you must specify weights for the server groups.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'minimum' => '0',
+ 'example' => '100',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ 'ServerGroupStickySession' => [
+ 'title' => '服务器组之间会话保持',
+ 'description' => 'The configuration of session persistence.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Enabled' => [
+ 'title' => '是否开启会话保持',
+ 'description' => 'Enables session persistence. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'Timeout' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period for sessions. Unit: seconds. Valid values: **1** to **86400**. Default value: **1000**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '2',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'InsertHeaderConfig' => [
+ 'title' => '插入头部动作配置',
+ 'description' => 'The configuration of the action to insert a header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头',
+ 'description' => 'The key of the header, which can contain a maximum of 40 characters. Supported characters include letters, digits, underscores (\\_), and hyphens (-). The header keys specified by **InsertHeaderConfig** must be unique.'."\n"
+ ."\n"
+ .'> You cannot specify the following header keys: `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, `authority`, and `x-forwarded-host`. The header keys are case-insensitive.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'key',
+ ],
+ 'Value' => [
+ 'title' => 'HTTP标头内容',
+ 'description' => 'The value of the header.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **SystemDefined**, you can set this parameter to one of the following values:'."\n"
+ ."\n"
+ .' * **ClientSrcPort**: the client port.'."\n"
+ .' * **ClientSrcIp**: the client IP address.'."\n"
+ .' * **Protocol**: the request protocol (HTTP or HTTPS).'."\n"
+ .' * **SLBId**: the ID of the ALB instance.'."\n"
+ .' * **SLBPort**: the listener port of the ALB instance.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **UserDefined**, specify a custom header value. The header value can contain a maximum of 128 characters, and supports printable characters whose ASCII values are `greater than or equal to 32 and lower than 127` and asterisks (\\*) and question marks (?) as wildcard characters. Quotation marks (`"`) are not supported. The header value cannot start or end with a space or end with a backslash (`\\`).'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **ReferenceHeader**, you can reference a value from request headers. The value can contain a maximum of 128 characters. Supported characters include lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UserDefined',
+ ],
+ 'ValueType' => [
+ 'title' => '取值类型',
+ 'description' => 'The type of the header value. Valid values are:'."\n"
+ ."\n"
+ .'* **UserDefined**: a custom header value'."\n"
+ .'* **ReferenceHeader**: a header value that references one of the request headers'."\n"
+ .'* **SystemDefined**: a system-defined header value'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UserDefined',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Order' => [
+ 'title' => '优先级',
+ 'description' => 'The priority of the action. Valid values: **1 to 50000**. A lower value indicates a higher priority. The actions of a forwarding rule are applied in descending order of priority. This parameter is required. The priority of each action within a forwarding rule must be unique.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'example' => '1',
+ ],
+ 'RedirectConfig' => [
+ 'title' => '重定向动作配置',
+ 'description' => 'The configuration of the redirect action.'."\n"
+ ."\n"
+ .'> Do not set all parameters in **RedirectConfig** to default values, excluding **httpCode**.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '要跳转的主机地址',
+ 'description' => 'The hostname to which requests are redirected. Valid values are:'."\n"
+ ."\n"
+ .'* **${host}** (default): This value cannot be concatenated with any other characters.'."\n"
+ ."\n"
+ .'* A custom hostname, which must meet the following requirements:'."\n"
+ ."\n"
+ .' * Contain 3 to 128 characters. Supported characters include lowercase letters, digits, and the following characters: - . \\* (as wildcard characters) = ~ \\_ + \\ ^ ! $ & | ( ) \\[ ] ?'."\n"
+ .' * Contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .' * The rightmost domain label can contain only letters and wildcard characters, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
+ .' * The other domain labels do not start or end with hyphens (-).'."\n"
+ .' * Support asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'HttpCode' => [
+ 'title' => '跳转方式',
+ 'description' => 'The HTTP status code that indicates the redirect type. Valid values: **301**, **302**, **303**, **307**, and **308**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '301',
+ ],
+ 'Path' => [
+ 'title' => '要跳转的路径',
+ 'description' => 'The path to which requests are redirected. Valid values are:'."\n"
+ ."\n"
+ .'* **${path}** (default): You can reference **${host}**, **${protocol}**, and **${port}**, with each appearing only once. You can also concatenate any preceding variable with strings that meet the following requirements.'."\n"
+ ."\n"
+ .'* A custom path, which must meet the following requirements:'."\n"
+ ."\n"
+ .' * Contain a maximum of 128 characters and is case-sensitive. Support asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .' * Start with a forward slash (/), and can contain letters, digits, and the following special characters: `$-_.+/&~@:\'*?`. It cannot contain the following special characters: `“%#;!()[]^,”\\"`. Support asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test',
+ ],
+ 'Port' => [
+ 'title' => '要跳转的端口',
+ 'description' => 'The port to which requests are redirected. Valid values are:'."\n"
+ ."\n"
+ .'* **${port}** (default): This value cannot be concatenated with any other characters.'."\n"
+ .'* A custom port number. Valid values: **1 to 63335**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10',
+ ],
+ 'Protocol' => [
+ 'title' => '要跳转的协议',
+ 'description' => 'The redirect protocol. Valid values are:'."\n"
+ ."\n"
+ .'* **${protocol}** (default): This value cannot be modified or concatenated with any other characters.'."\n"
+ .'* **HTTP**'."\n"
+ .'* **HTTPS**'."\n"
+ ."\n"
+ .'> '."\n"
+ ."\n"
+ .'* For HTTPS listeners, you can only redirect HTTPS to HTTPS.'."\n"
+ ."\n"
+ .'* For HTTP listeners, you can redirect HTTP to either HTTP or HTTPS.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ 'Query' => [
+ 'title' => '要跳转的查询字符串',
+ 'description' => 'The query string to which requests are redirected.'."\n"
+ ."\n"
+ .'* **${query}** (default): You can reference **${host}**, **${protocol}**, and **${port}**, with each appearing only once. You can also concatenate any preceding variable with strings that meet the following requirements.'."\n"
+ ."\n"
+ .'* A custom query string, which must meet the following requirements:'."\n"
+ ."\n"
+ .' * Contain a maximum of 128 characters.'."\n"
+ .' * Contain printable characters, excluding space characters, the special characters `#[]{}\\|<>"`, and uppercase letters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'quert',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'RewriteConfig' => [
+ 'title' => '内部重定向动作配置',
+ 'description' => 'The configuration of the rewrite action.'."\n"
+ ."\n"
+ .'> If you specify a **Rewrite** action along with other types of actions in a forwarding rule, you must also specify a **ForwardGroup** action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '主机名',
+ 'description' => 'The hostname to which requests are rewritten. Valid values are:'."\n"
+ ."\n"
+ .'* **${host}** (default): This value cannot be concatenated with any other characters.'."\n"
+ ."\n"
+ .'* A custom hostname, which must meet the following requirements:'."\n"
+ ."\n"
+ .' * Contain 3 to 128 characters. Supported characters include lowercase letters, digits, and the following characters: - . \\* (as wildcard characters) = ~ \\_ + \\ ^ ! $ & | ( ) \\[ ] ?'."\n"
+ .' * Contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .' * The rightmost domain label can contain only letters and wildcard characters, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
+ .' * The other domain labels do not start or end with hyphens (-). You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'Path' => [
+ 'title' => '路径',
+ 'description' => 'The path to which requests are rewritten. Valid values are:'."\n"
+ ."\n"
+ .'* **${path}** (default): You can reference **${host}**, **${protocol}**, and **${port}**, with each appearing only once. You can also concatenate any preceding variable with strings that meet the following requirements.'."\n"
+ ."\n"
+ .'* A custom path, which must meet the following requirements:'."\n"
+ ."\n"
+ .' * Contain a maximum of 128 characters and is case-sensitive. Support asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .' * Start with a forward slash (/), and can contain letters, digits, and the following special characters: `$-_.+/&~@:\'*?`. It cannot contain the following special characters: `“%#;!()[]^,”\\"`. Support asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/tsdf',
+ ],
+ 'Query' => [
+ 'title' => '查询',
+ 'description' => 'The query string of the URL to which requests are rewritten.'."\n"
+ ."\n"
+ .'* **${query}** (default): You can reference **${host}**, **${protocol}**, and **${port}**, with each appearing only once. You can also concatenate any preceding variable with strings that meet the following requirements.'."\n"
+ ."\n"
+ .'* A custom query string, which must meet the following requirements:'."\n"
+ ."\n"
+ .' * Contain a maximum of 128 characters.'."\n"
+ .' * Contain printable characters, excluding space characters, the special characters `#[]{}\\|<>"`, and uppercase letters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'quedsa',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '转发规则动作类型',
+ 'description' => 'The type of the action. Valid values are:'."\n"
+ ."\n"
+ .'* **ForwardGroup**: forwards requests to multiple vServer groups.'."\n"
+ .'* **Redirect**: redirects requests.'."\n"
+ .'* **FixedResponse**: returns a fixed response.'."\n"
+ .'* **Rewrite**: rewrites requests.'."\n"
+ .'* **InsertHeader**: inserts a header.'."\n"
+ .'* **RemoveHeader**: deletes a header.'."\n"
+ .'* **TrafficLimit**: throttles traffic.'."\n"
+ .'* **trafficMirror**: mirrors network traffic.'."\n"
+ .'* **Cors**: forwards requests based on CORS.'."\n"
+ ."\n"
+ .'Actions in each forwarding rule must meet the following requirements:'."\n"
+ ."\n"
+ .'* **Each forwarding rule must include one and only one of the following actions: **ForwardGroup**, **Redirect**, or **FixedResponse**, and this action must be performed last.**'."\n"
+ .'* **Each forwarding rule may contain none, one, or more actions of other types.************** You can specify multiple **InsertHeader** actions or one **Rewrite** action.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'ForwardGroup',
+ ],
+ 'TrafficLimitConfig' => [
+ 'title' => '流量限速',
+ 'description' => 'The configuration of the action to throttle traffic.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QPS' => [
+ 'description' => 'Queries per second (QPS). Valid values: **1** to **1000000**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ 'PerIpQps' => [
+ 'description' => 'QPS per IP address. Valid values: **1 to 1000000**.'."\n"
+ ."\n"
+ .'> If both the **QPS** and **PerIpQps** parameters are specified, the value of the **QPS** parameter must be smaller than that of the PerIpQps parameter.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'TrafficMirrorConfig' => [
+ 'title' => '流量镜像',
+ 'description' => 'The configuration of the action to mirror traffic.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TargetType' => [
+ 'title' => '镜像目标类型',
+ 'description' => 'The type of destination to which network traffic is mirrored. Valid value:'."\n"
+ ."\n"
+ .'* **ForwardGroupMirror**: a server group'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ForwardGroupMirror',
+ ],
+ 'MirrorGroupConfig' => [
+ 'title' => '镜像至服务器组',
+ 'description' => 'The configuration of the server group to which traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'description' => 'The server group to which traffic is mirrored.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'description' => 'The ID of the server group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'srg-00mkgijak0w4qgz9****',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'RemoveHeaderConfig' => [
+ 'title' => '去除HTTP标头',
+ 'description' => 'The configuration of the action to remove a header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The key of the header to be removed. It can contain a maximum of 40 characters and supports letters, digits, underscores (\\_), and hyphens (-). The header keys specified in RemoveHeader must be unique.'."\n"
+ ."\n"
+ .'* If Direction is set to Request, the following request headers cannot be removed: `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, `authority`, and `x-forwarded-host`.'."\n"
+ .'* If Direction is set to Response, the following response headers (case-insensitive) cannot be removed: `connection`, `upgrade`, `content-length`, and `transfer-encoding`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'CorsConfig' => [
+ 'title' => '跨域',
+ 'description' => 'The CORS configuration.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AllowOrigin' => [
+ 'title' => '允许的访问来源',
+ 'description' => 'The trusted origins of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted origins. You can specify one or more values, or only an asterisk (`*`).'."\n"
+ ."\n"
+ .'* Each value must start with `http://` or `https://` and be followed by a valid domain name, including wildcard domain names. Example: `http://*.test.abc.example.com`.'."\n"
+ .'* You can specify a port for each value. Valid values: **1** to **65535**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'http://example.com',
+ ],
+ 'required' => false,
+ ],
+ 'AllowMethods' => [
+ 'title' => '选择跨域访问时允许的HTTP方法',
+ 'description' => 'The trusted HTTP methods of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted HTTP method of CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **GET**'."\n"
+ .'* **POST**'."\n"
+ .'* **PUT**'."\n"
+ .'* **DELETE**'."\n"
+ .'* **HEAD**'."\n"
+ .'* **OPTIONS**'."\n"
+ .'* **PATCH**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'GET',
+ ],
+ 'required' => false,
+ ],
+ 'AllowHeaders' => [
+ 'title' => '允许跨域的Header列表',
+ 'description' => 'The trusted header of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted header of CORS requests. You can specify one or more values or only an asterisk (`*`) as a wildcard character. Separate multiple values with commas (,). Each value can contain a maximum of 32 characters, and can contain only letters, digits, underscores (\\_), and hyphens (-), but cannot start or end with an underscore (\\_) or a hyphen (-).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_123',
+ ],
+ 'required' => false,
+ ],
+ 'ExposeHeaders' => [
+ 'title' => '允许暴露的Header列表',
+ 'description' => 'The headers that can be exposed.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The header that can be exposed. You can specify one or more values or only an asterisk (`*`) as a wildcard character. Separate multiple values with commas (,). Each value can contain a maximum of 32 characters, and can contain only letters, digits, underscores (\\_), and hyphens (-), but cannot start or end with an underscore (\\_) or a hyphen (-).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_123',
+ ],
+ 'required' => false,
+ ],
+ 'AllowCredentials' => [
+ 'title' => '是否允许携带凭证信息',
+ 'description' => 'Include credentials in CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **on**'."\n"
+ .'* **off**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'enumValueTitles' => [
+ 'off' => 'off',
+ 'on' => 'on',
+ ],
+ 'example' => 'on',
+ ],
+ 'MaxAge' => [
+ 'title' => '预检请求在浏览器的最大缓存时间',
+ 'description' => 'The maximum cache time for preflight requests in the browser. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **-1** to **172800**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1000',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => true,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ 'RuleConditions' => [
+ 'title' => '转发规则条件',
+ 'description' => 'The conditions of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The condition of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CookieConfig' => [
+ 'title' => 'Cookie条件配置',
+ 'description' => 'The configuration of the cookie condition.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'Cookie键值对列表',
+ 'description' => 'The key-value pairs in cookies.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The key-value pair.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'Cookie条件键',
+ 'description' => 'The cookie key.'."\n"
+ ."\n"
+ .'* Contain a maximum of 100 characters.'."\n"
+ .'* Support asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .'* Support printable characters, excluding uppercase letters, space characters, and the following special characters: `; # [ ] { } \\ | < > & "`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => 'Cookie条件值',
+ 'description' => 'The cookie value.'."\n"
+ ."\n"
+ .'* Contain a maximum of 100 characters.'."\n"
+ .'* Support asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .'* Support printable characters, excluding uppercase letters, space characters, and the following special characters: `; # [ ] { } \\ | < > & "`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'HeaderConfig' => [
+ 'title' => 'HTTP标头条件配置',
+ 'description' => 'The configuration of the HTTP header condition.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The key of the HTTP header.'."\n"
+ ."\n"
+ .'* Contain a maximum of 40 characters.'."\n"
+ .'* Support letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ .'* Do not support Cookie or Host.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Port',
+ ],
+ 'Values' => [
+ 'title' => 'HTTP标头值列表',
+ 'description' => 'The values of the HTTP header.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The value. (The header values within a forwarding rule must be unique.)'."\n"
+ ."\n"
+ .'* Contain a maximum of 128 characters.'."\n"
+ .'* Support asterisks (\\*) and question marks (?) as wildcard characters, and other printable characters whose ASCII values are `larger than or equal to 32 and smaller than 127`. `Quotation marks (")` are not supported.'."\n"
+ .'* Cannot start or end with a space, or end with a `backslash (\\)`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5006',
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'HostConfig' => [
+ 'title' => '主机名条件配置',
+ 'description' => 'The configuration of the hostname condition.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '主机名列表',
+ 'description' => 'The hostnames.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The hostname. A forwarding rule can contain only one unique hostname.'."\n"
+ ."\n"
+ .'* Contain 3 to 128 characters, and support lowercase letters, digits, and the following characters: - . \\* = ~ \\_ + \\ ^ ! $ & | ( ) \\[ ] ?.'."\n"
+ .'* Contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .'* The rightmost domain label can contain only letters and wildcard characters, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
+ .'* The other domain labels do not start or end with hyphens (-). You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n"
+ .'* If you enter a specific hostname or a wildcard hostname, the hostname cannot start with a tilde (~).'."\n"
+ .'* If you specify a regular expression, it cannot start with an asterisk (\\*). Regular expressions are case-insensitive.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'MethodConfig' => [
+ 'title' => 'HTTP请求方法条件配置',
+ 'description' => 'The configuration of the HTTP request method condition.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'HTTP请求方法列表',
+ 'description' => 'The HTTP request methods.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP request method.'."\n"
+ ."\n"
+ .'Valid values: **HEAD**, **GET**, **POST**, **OPTIONS**, **PUT**, **PATCH**, and **DELETE**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PUT',
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'PathConfig' => [
+ 'title' => '路径条件配置',
+ 'description' => 'The configuration of the path condition.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '路径条件列表',
+ 'description' => 'The paths to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The path to which requests are forwarded. The value must meet the following requirements:'."\n"
+ ."\n"
+ .'* Contain a maximum of 128 characters, is case-sensitive, and support asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .'* If the value is not a regular expression, it must start with a forward slash (/), and can contain letters, digits, and the following special characters: `$ - _ . + / & ~ @ : \' * ?`. It cannot contain the following special characters: `% # ; ! ( ) [ ] ^ , \\ "`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n"
+ .'* If the value is a regular expression, it must start with a title (~), and can contain letters, digits, and the following special characters: `. - _ / = ? ~ ^ * $ : ( ) [ ] + |`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test',
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'QueryStringConfig' => [
+ 'title' => '查询字符串条件配置',
+ 'description' => 'The configurations of the query string condition.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '查询字符串条件键值对列表',
+ 'description' => 'The key-value pairs in query strings.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The key-value pair.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '查询字符串条件键',
+ 'description' => 'The key of the query string.'."\n"
+ ."\n"
+ .'* Contain a maximum of 100 characters.'."\n"
+ .'* Support asterisks (\\*) and question marks (?) as wildcard characters. Support printable characters, excluding uppercase letters, space characters, and the following special characters: `# [ ] { } \\ | < > & "`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => '查询字符串条件值',
+ 'description' => 'The value of the query string.'."\n"
+ ."\n"
+ .'* Contain a maximum of 128 characters.'."\n"
+ .'* Support printable characters, excluding uppercase letters, space characters, and the following special characters: `# [ ] { } \\ | < > & "`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 50,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ResponseHeaderConfig' => [
+ 'title' => '返回HTTP标头',
+ 'description' => 'The configuration of the HTTP response header condition.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '返回HTTP标头键',
+ 'description' => 'The key of the HTTP response header.'."\n"
+ ."\n"
+ .'* Contain a maximum of 40 characters.'."\n"
+ .'* Support letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ .'* Do not support Cookie or Host.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Port',
+ ],
+ 'Values' => [
+ 'title' => '返回HTTP标头值',
+ 'description' => 'The values of the HTTP response header.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The value.'."\n"
+ ."\n"
+ .'* Contain a maximum of 128 characters.'."\n"
+ .'* Support printable characters whose ASCII values are `larger than or equal to 32 and smaller than 127`, excluding uppercase letters. You can use asterisks (\\*), and question marks (?) as wildcard characters. `Quotation marks (")` are not supported.'."\n"
+ .'* Cannot start or end with a space, or end with a backslash (`\\`).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5006',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ResponseStatusCodeConfig' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The configuration of the response status code condition.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The response status codes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The response status code.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '200',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '条件类型',
+ 'description' => 'The type of the condition. Valid values:'."\n"
+ ."\n"
+ .'* Host: forwards requests based on hosts.'."\n"
+ .'* Path: forwards requests based on paths.'."\n"
+ .'* Header: forwards requests based on HTTP headers.'."\n"
+ .'* QueryString: forwards requests based on query strings.'."\n"
+ .'* Method: forwards requests based on HTTP request methods.'."\n"
+ .'* Cookie: forwards requests based on cookies.'."\n"
+ .'* SourceIp: forwards requests based on source IP addresses.'."\n"
+ .'* ResponseHeader: forwards requests based on HTTP response headers.'."\n"
+ .'* ResponseStatusCode: forwards requests based on response status codes.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'enumValueTitles' => [
+ 'Cookie' => 'Cookie',
+ 'Path' => 'Path',
+ 'ResponseHeader' => 'ResponseHeader',
+ 'SourceIp' => 'SourceIp',
+ 'Header' => 'Header',
+ 'ResponseStatusCode' => 'ResponseStatusCode',
+ 'QueryString' => 'QueryString',
+ 'Host' => 'Host',
+ 'Method' => 'Method',
+ ],
+ 'example' => 'Host',
+ ],
+ 'SourceIpConfig' => [
+ 'title' => '基于源IP业务流量匹配',
+ 'description' => 'The configuration of the condition that matches requests based on source IP addresses.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '基于源IP业务流量匹配',
+ 'description' => 'The condition that matches requests based on source IP addresses.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'Specify one or more IP addresses or CIDR blocks.'."\n"
+ ."\n"
+ .'Each forwarding rule supports up to five source IP addresses (CIDR blocks).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.0.0/32',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => true,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ 'RuleName' => [
+ 'title' => '转发规则名称',
+ 'description' => 'The name of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'test',
+ ],
+ 'Direction' => [
+ 'title' => '转发规则方向',
+ 'description' => 'The traffic direction to which the forwarding rule is applied.'."\n"
+ ."\n"
+ .'Valid values:'."\n"
+ ."\n"
+ .'* Response'."\n"
+ .'* Request'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'enumValueTitles' => [
+ 'Response' => 'Response',
+ 'Request' => 'Request',
+ ],
+ 'example' => 'Request',
+ ],
+ 'Tag' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The key of the tag. It can contain a maximum of 128 characters, cannot start with aliyun or acs:, and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The value of the tag. It can contain a maximum of 128 characters, cannot start with aliyun or acs:, and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => true,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Creates one or more forwarding rules at a time.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The ID of the asynchronous task.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'RuleIds' => [
+ 'title' => '转发规则标识列表',
+ 'description' => 'The priority of the forwarding rule. Valid values: **1 to 10000**. A lower value specifies a higher priority.'."\n"
+ ."\n"
+ .'> The priorities of the forwarding rules created for the same listener is unique.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'RuleId' => [
+ 'title' => '转发规则标识',
+ 'description' => 'The forwarding rule ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'rule-a3x3pg1yohq3lq****',
+ ],
+ 'Priority' => [
+ 'title' => '转发规则优先级',
+ 'description' => 'The priority of the forwarding rule. Valid values: **1 to 10000**. A smaller value indicates a higher priority.'."\n"
+ ."\n"
+ .'> The priorities of the forwarding rules created for the same listener must be unique.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '10',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.SameGroupForForwardAndMirrorAction',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.GRPCServerGroup',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'Conflict.Priority',
+ 'errorMessage' => 'There is already %s having the same configuration with %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerRulesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerAddedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleWildcardsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleMatchEvaluationsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleActionsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.VpcId',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.Protocol',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.RewriteMissingForwardGroup',
+ 'errorMessage' => 'The operation is not allowed because of RewriteMissingForwardGroup.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.MirrorActionSupportHttpGroupOnly',
+ 'errorMessage' => 'The operation is not allowed because of MirrorActionSupportHttpGroupOnly.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ProtocolMustSameForForwardGroupAction',
+ 'errorMessage' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Alb::2020-06-16::ListAsynJobs',
+ 'callbackInterval' => 1000,
+ 'maxCallbackTimes' => 60,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\",\\n \\"RuleIds\\": [\\n {\\n \\"RuleId\\": \\"rule-a3x3pg1yohq3lq****\\",\\n \\"Priority\\": 10\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<CreateRulesResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <RuleIds>\\n <RuleId>rule-a3x3pg1yohq3lq****</RuleId>\\n <Priority>10</Priority>\\n </RuleIds>\\n</CreateRulesResponse>","errorExample":""}]',
+ 'title' => 'CreateRules',
+ 'description' => 'When you call this operation, take note of the following limits:'."\n"
+ ."\n"
+ .'* When you configure the **Redirect** action, do not use the default values for parameters other than **HttpCode**.'."\n"
+ ."\n"
+ .'* If you specify multiple actions in a forward rule, you must specify the **ForwardGroup** parameter along with the **Rewrite** parameter.'."\n"
+ ."\n"
+ .'* **CreateRules** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListRules](~~214379~~) operation to query the status of the forwarding rules.'."\n"
+ ."\n"
+ .' * If the forwarding rules are in the **Provisioning** state, the forwarding rules are being created.'."\n"
+ .' * If the forwarding rules are in the **Available** state, the forwarding rules are created.'."\n"
+ ."\n"
+ .'* You can set **RuleConditions** and **RuleActions** to add conditions and actions to a forwarding rule. Take note of the following limits on the number of conditions and the number of actions in each forwarding rule:'."\n"
+ ."\n"
+ .' * Conditions: 5 for each basic ALB instance, 10 for each standard ALB instance, and 10 for each WAF-enabled ALB instance.'."\n"
+ .' * Actions: 3 for each basic ALB instance, 5 for each standard ALB instance, and 5 for each WAF-enabled ALB instance.'."\n",
+ ],
+ 'DeleteRule' => [
+ 'summary' => 'Deletes a forwarding rule.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: sends the request without performing the operation. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**: performs a dry run and sends the request. If the request passes the dry run, the `HTTP_2xx` status code is returned and the operation is performed. This is the default value.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'RuleId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '转发规则标识',
+ 'description' => 'The ID of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'rule-doc****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Deletes a forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Rule',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified listener is being configured, please try again later.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Rule',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteRuleResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</DeleteRuleResponse>","errorExample":""}]',
+ 'title' => 'DeleteRule',
+ 'description' => '**DeleteRule** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListRules](~~214379~~) operation to query the status of a forwarding rule:'."\n"
+ ."\n"
+ .'* If the forwarding rule is in the **Deleting** state, the forwarding rule is being deleted.'."\n"
+ .'* If the forwarding rule cannot be found, the forwarding rule is deleted.'."\n",
+ ],
+ 'DeleteRules' => [
+ 'summary' => 'Deletes one or more forwarding rules from a listener at a time.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '185',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbBIWWMH',
+ 'FEATUREslbTXOYED',
+ 'FEATUREslbQCCQ6L',
+ 'FEATUREslb4T90LL',
+ 'FEATUREslbIT4IYN',
+ 'FEATUREslbA51OGD',
+ 'FEATUREslbUBPZWI',
+ 'FEATUREslbGVK35E',
+ 'FEATUREslbYG3GCF',
+ 'FEATUREslbRBR9GZ',
+ 'FEATUREslbMWZQWL',
+ 'FEATUREslbJCYSIV',
+ 'FEATUREslbY93SFN',
+ 'FEATUREslbVUMBEO',
+ 'FEATUREslbZ4XFTS',
+ 'FEATUREslb2Q6O49',
+ ],
+ 'autoTest' => true,
+ 'tenantRelevance' => 'tenant',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: checks the request without performing the operation. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'RuleIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'title' => '同一个监听下的转发规则标识列表',
+ 'description' => 'The forwarding rules. You can specify at most 100 forwarding rules in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'RuleIds.1=rule-a3x3pg1yohq3lq****,RuleIds.2=rule-a5x7og7yyhq8kq****',
+ ],
+ 'required' => true,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Deletes one or more forwarding rules at a time.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '7BED4F62-3E6E-5E4F-8C53-2D8CCE77F2ED',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Rule',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.CrossLoadBalancerRules',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Rule',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Alb::2020-06-16::ListAsynJobs',
+ 'callbackInterval' => 1000,
+ 'maxCallbackTimes' => 60,
+ ],
+ 'eventInfo' => [
+ 'enable' => false,
+ 'eventNames' => [],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"7BED4F62-3E6E-5E4F-8C53-2D8CCE77F2ED\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteRulesResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>7BED4F62-3E6E-5E4F-8C53-2D8CCE77F2ED</RequestId>\\n</DeleteRulesResponse>","errorExample":""}]',
+ 'title' => 'DeleteRules',
+ 'description' => '**DeleteRules** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListRules](~~214379~~) operation to query the status of forwarding rules.'."\n"
+ ."\n"
+ .'* If the forwarding rules are in the **Deleting** state, the forwarding rules are being deleted.'."\n"
+ .'* If the forwarding rules cannot be found, the forwarding rules are deleted.'."\n",
+ ],
+ 'UpdateRuleAttribute' => [
+ 'summary' => 'Updates a forwarding rule, such as the match condition, action, and name.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '177',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'RuleId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '转发规则标识',
+ 'description' => 'The ID of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'rule-4dp5i6ea****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'RuleConditions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '转发规则条件',
+ 'description' => 'The match conditions of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The match condition of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CookieConfig' => [
+ 'title' => 'Cookie条件配置',
+ 'description' => 'The key-value pairs of the cookie.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'Cookie键值对列表',
+ 'description' => 'The key-value pairs of the cookie.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The key-value pair of the cookie.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'Cookie条件键',
+ 'description' => 'The cookie key. The key must be 1 to 100 characters in length, and can contain printable characters such as lowercase letters, asterisks (\\*), and question marks (?). The key cannot contain uppercase letters, space characters, or the following special characters: `# [ ] { } \\ | < > & " ;`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => 'Cookie条件值',
+ 'description' => 'The cookie value. The cookie value must be 1 to 128 characters in length, and can contain lowercase letters, printable ASCII characters, asterisks (\\*), and question marks (?). It cannot contain space characters or the following special characters: `# [ ] { } \\ | < > &`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'HeaderConfig' => [
+ 'title' => 'HTTP标头条件配置',
+ 'description' => 'The configuration of the header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The header key. The header key must be 1 to 40 characters in length, and can contain letters, digits, hyphens (-), and underscores (\\_). Cookie and Host are not supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Port',
+ ],
+ 'Values' => [
+ 'title' => 'HTTP标头值列表',
+ 'description' => 'The header values.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The header value. The header values within a forwarding rule must be unique. The header value must meet the following requirements:'."\n"
+ ."\n"
+ .'* The header value must be 1 to 128 characters in length.'."\n"
+ .'* It can contain asterisks (\\*), question marks (?), and other printable characters whose ASCII values are `larger than or equal to 32 and smaller than 127`. Quotation marks (`"`) are not supported.'."\n"
+ .'* The header value cannot start or end with a space character, or end with a backslash (`\\`).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5006',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'HostConfig' => [
+ 'title' => '主机名条件配置',
+ 'description' => 'The configuration of the hosts.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '主机名列表',
+ 'description' => 'The hostnames.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The hostname. The hostname must meet the following requirements:'."\n"
+ ."\n"
+ .'* The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
+ .'* The hostname contains at least one period (.) but does not start or end with a period (.).'."\n"
+ .'* The rightmost domain label can contain only letters, asterisks (\\*), and question marks (?), and cannot contain digits or hyphens (-).'."\n"
+ .'* The domain labels do not start or end with a hyphen (-). You can specify asterisks (∗) and question marks (?) anywhere in a domain label.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'MethodConfig' => [
+ 'title' => 'HTTP请求方法条件配置',
+ 'description' => 'The configuration of the request method.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'HTTP请求方法列表',
+ 'description' => 'The request methods.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The request method.'."\n"
+ ."\n"
+ .'Valid values: **HEAD**, **GET**, **POST**, **OPTIONS**, **PUT**, **PATCH**, and **DELETE**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PUT',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'PathConfig' => [
+ 'title' => '路径条件配置',
+ 'description' => 'The configuration of the forwarding URL.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '路径条件列表',
+ 'description' => 'The forwarding URLs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The URL to which requests are forwarded. The URL must meet the following requirements:'."\n"
+ ."\n"
+ .'* The URL must be 1 to 128 characters in length.'."\n"
+ .'* It must start with a forward slash (/) and can contain letters, digits, and the following special characters: `$ - _ . + / & ~ @ :`. It cannot contain the following special characters: `% # ; ! ( ) [ ] ^ , \\ "`. You can use asterisks (\\*) and question marks (?) as wildcards.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'QueryStringConfig' => [
+ 'title' => '查询字符串条件配置',
+ 'description' => 'The configuration of the query strings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '查询字符串条件键值对列表',
+ 'description' => 'The query strings. You can specify up to 20 query strings.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The query string.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '查询字符串条件键',
+ 'description' => 'The key of the query string. The key must be 1 to 100 characters in length, and can contain printable characters such as lowercase letters, asterisks (\\*), and question marks (?). The key cannot contain uppercase letters, space characters, or the following special characters: `# [ ] { } \\ | < > & "`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => '查询字符串条件值',
+ 'description' => 'The value of the query string. The value must be 1 to 128 characters in length, and can contain printable characters such as lowercase letters, asterisks (\\*), and question marks (?). The value cannot contain uppercase letters, space characters, or the following special characters: `# [ ] { } \\ | < > & "`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '条件类型',
+ 'description' => 'The type of forwarding rule. You can specify up to seven types of forwarding rule. Valid values:'."\n"
+ ."\n"
+ .'* **Host**: Requests are forwarded based on hosts.'."\n"
+ .'* **Path**: Requests are forwarded based on URLs.'."\n"
+ .'* **Header**: Requests are forwarded based on HTTP headers.'."\n"
+ .'* **QueryString**: Requests are forwarded based on query strings.'."\n"
+ .'* **Method**: Requests are forwarded based on request methods.'."\n"
+ .'* **Cookie**: Requests are forwarded based on cookies.'."\n"
+ .'* **SourceIp**: Requests are forwarded based on source IP addresses.'."\n"
+ .'* **ResponseHeader**: Requests are forwarded based on HTTP response headers.'."\n"
+ .'* **ResponseStatusCode**: Requests are forwarded based on response status codes.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Host',
+ ],
+ 'ResponseStatusCodeConfig' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The configuration of the response status codes.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The response status codes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The response status code.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ResponseHeaderConfig' => [
+ 'title' => '返回HTTP标头',
+ 'description' => 'The configuration of headers.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '返回HTTP标头键',
+ 'description' => 'The header key.'."\n"
+ ."\n"
+ .'* The key must be 1 to 40 characters in length.'."\n"
+ .'* It can contain letters, digits, hyphens (-), and underscores (\\_).'."\n"
+ .'* Cookie and Host are not supported.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Values' => [
+ 'title' => '返回HTTP标头值',
+ 'description' => 'The header values.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The header value.'."\n"
+ ."\n"
+ .'* The header value must be 1 to 128 characters in length.'."\n"
+ .'* It can contain printable characters whose ASCII values are `larger than or equal to 32 and smaller than 127`, lowercase letters, asterisks (\\*), and question marks (?). Quotation marks (`"`) are not supported.'."\n"
+ .'* The header value cannot start or end with a space character, or end with a backslash (`\\`).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '50006',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'SourceIpConfig' => [
+ 'title' => '基于源IP业务流量匹配',
+ 'description' => 'Traffic matching based on source IP addresses. You can specify up to five IP addresses, including CIDR blocks.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '基于源IP业务流量匹配',
+ 'description' => 'You can add one or more IP addresses, including CIDR blocks.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'You can specify one or more IP addresses, including CIDR blocks.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.0.0/32',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'RuleActions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '转发规则动作',
+ 'description' => 'The actions of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The action of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'FixedResponseConfig' => [
+ 'title' => '返回固定内容动作配置',
+ 'description' => 'The configuration of the custom response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Content' => [
+ 'title' => '内容',
+ 'description' => 'The content of the response. The content can be up to 1 KB in size, and can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'dssacav',
+ ],
+ 'ContentType' => [
+ 'title' => '内容类型',
+ 'description' => 'The content type.'."\n"
+ ."\n"
+ .'Valid values: **text/plain**, **text/css**, **text/html**, **application/javascript**, and **application/json**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'text/plain',
+ ],
+ 'HttpCode' => [
+ 'title' => 'HTTP响应码',
+ 'description' => 'The HTTP status code in responses. Valid values: **2xx**, **4xx**, **5xx**. The value must be a numeric string. **x** must be a digit.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP_200',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ForwardGroupConfig' => [
+ 'title' => '转发组动作配置',
+ 'description' => 'The configuration of the server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '转发到的目的服务器组列表',
+ 'description' => 'The server groups to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组标识',
+ 'description' => 'The ID of the server group to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'sg--atstuj3rtoptyui****',
+ ],
+ 'Weight' => [
+ 'title' => '权重',
+ 'description' => 'The weight of the server group. A larger value specifies a higher weight. A server group with a higher weight receives more requests. Valid values: **0** to **100**.'."\n"
+ ."\n"
+ .'* If the number of destination server groups is 1, the default weight of the server group is **100**, unless you specify a weight.'."\n"
+ .'* If the number of destination server groups is larger than 1, you must specify a weight.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'minimum' => '0',
+ 'example' => '30',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ 'ServerGroupStickySession' => [
+ 'title' => '服务器组之间会话保持',
+ 'description' => 'The configuration of session persistence for server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Enabled' => [
+ 'title' => '是否开启会话保持',
+ 'description' => 'Specifies whether to enable session persistence. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'Timeout' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period for sessions. Unit: seconds. Valid values: 1 to 86400.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '2',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'InsertHeaderConfig' => [
+ 'title' => '插入头部动作配置',
+ 'description' => 'The configuration of the header to be inserted.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CoverEnabled' => [
+ 'title' => '是否覆盖请求中的值',
+ 'description' => 'Specifies whether to overwrite the request header values. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'Key' => [
+ 'title' => 'HTTP标头',
+ 'description' => 'The key of the header. The key must be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The header keys specified by **InsertHeaderConfig** must be unique.'."\n"
+ ."\n"
+ .'> You cannot specify the following header keys: `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `x-forwarded-host`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, and `authority`. The header keys are case-insensitive.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'key',
+ ],
+ 'Value' => [
+ 'title' => 'HTTP标头内容',
+ 'description' => 'The value of the header.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **SystemDefined**, you can set the Value parameter to one of the following values:'."\n"
+ ."\n"
+ .' * **ClientSrcPort**: the client port.'."\n"
+ .' * **ClientSrcIp**: the IP address of the client.'."\n"
+ .' * **Protocol**: the request protocol (HTTP or HTTPS).'."\n"
+ .' * **SLBId**: the ID of the ALB instance.'."\n"
+ .' * **SLBPort**: the listener port of the ALB instance.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **UserDefined**, a custom header value is supported. The header value must be 1 to 128 characters in length, and can contain printable characters whose ASCII values are `greater than or equal to 32 and lower than 127`. You can use asterisks (\\*) and question marks (?) as wildcard characters. Quotation marks (`"`) are not supported. The header value cannot start or end with a space character, or end with a backslash (`\\`).'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **ReferenceHeader**, you can reference a value from request headers. The value must be 1 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UserDefined',
+ ],
+ 'ValueType' => [
+ 'title' => '取值类型',
+ 'description' => 'The type of the header. Valid values:'."\n"
+ ."\n"
+ .'* **UserDefined**: a custom header.'."\n"
+ .'* **ReferenceHeader**: a header that references one of the request headers.'."\n"
+ .'* **SystemDefined**: a system-defined header value.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UserDefined',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Order' => [
+ 'title' => '优先级',
+ 'description' => 'The priority of the action. Valid values: **1 to 50000**. A smaller value specifies a higher priority. The actions of a forwarding rule are applied in descending order of priority. This parameter cannot be left empty. The priority of each action within a forwarding rule must be unique. You can specify up to 20 forwarding rule priorities.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '1',
+ ],
+ 'RedirectConfig' => [
+ 'title' => '重定向动作配置',
+ 'description' => 'The configuration of the redirect action. You can specify up to 20 redirect actions.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '要跳转的主机地址',
+ 'description' => 'The hostname to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* **${host}** (default): If ${host} is returned, no other character is appended.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
+ .' * The hostname contains at least one period (.) but does not start or end with a period (.).'."\n"
+ .' * The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-).'."\n"
+ .' * The domain labels do not start or end with a hyphen (-).'."\n"
+ .' * You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'HttpCode' => [
+ 'title' => '跳转方式',
+ 'description' => 'The forwarding method. Valid values: **301**, **302**, **303**, **307**, and **308**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '301',
+ ],
+ 'Path' => [
+ 'title' => '要跳转的路径',
+ 'description' => 'The URL to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* Default value: **${path}**. \\*\\*${host}**, **${protocol}**, and **${port}\\*\\* are also supported. Each variable can be specified only once. The preceding variables can be used at the same time or combined with a custom value.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The header value must be 1 to 128 characters in length.'."\n"
+ .' * It must start with a forward slash (/) and can contain letters, digits, and the following special characters: `$ - _ . + / & ~ @ :`. It does not contain the following special characters: `% # ; ! ( ) [ ] ^ , \\ "`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test',
+ ],
+ 'Port' => [
+ 'title' => '要跳转的端口',
+ 'description' => 'The port to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* **${port}** (default): If you set the value to ${port}, you cannot append other characters.'."\n"
+ .'* Other valid values: **1 to 63335**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10',
+ ],
+ 'Protocol' => [
+ 'title' => '要跳转的协议',
+ 'description' => 'The redirect protocol. Valid values:'."\n"
+ ."\n"
+ .'* **${protocol}** (default): If you set the value to ${protocol}, you cannot append other characters.'."\n"
+ .'* **HTTP** or **HTTPS**.'."\n"
+ ."\n"
+ .'> HTTPS listeners support only HTTPS redirects.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ 'Query' => [
+ 'title' => '要跳转的查询字符串',
+ 'description' => 'The query string of the URL to which requests are forwarded. Valid values:'."\n"
+ ."\n"
+ .'* Default value: **${query}**. \\*\\*${host}**, **${protocol}**, and **${port}\\*\\* are also supported. Each variable can be specified only once. The preceding variables can be used at the same time or combined with a custom value.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The header value must be 1 to 128 characters in length.'."\n"
+ .' * It can contain printable characters, excluding space characters, the special characters `# [ ] { } \\ | < > "`, and uppercase letters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'quert',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'RewriteConfig' => [
+ 'title' => '内部重定向动作配置',
+ 'description' => 'The configuration of the rewrite action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '主机名',
+ 'description' => 'The hostname to which requests are rewritten. Valid values:'."\n"
+ ."\n"
+ .'* **${host}** (default): If you set the value to ${host}, you cannot append other characters.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
+ .' * The hostname contains at least one period (.) but does not start or end with a period (.).'."\n"
+ .' * The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-).'."\n"
+ .' * The domain labels do not start or end with a hyphen (-). You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'Path' => [
+ 'title' => '路径',
+ 'description' => 'The URL to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* Default value: **${path}**. \\*\\*${host}**, **${protocol}**, and **${port}\\*\\* are also supported. Each variable can be specified only once. The preceding variables can be used at the same time or combined with a custom value.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The header value must be 1 to 128 characters in length.'."\n"
+ .' * It must start with a forward slash (/) and can contain letters, digits, and the following special characters: `$ - _ . + / & ~ @ :`. It does not contain the following special characters: `% # ; ! ( ) [ ] ^ , \\ "`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/tsdf',
+ ],
+ 'Query' => [
+ 'title' => '查询',
+ 'description' => 'The query string to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* Default value: **${query}**. \\*\\*${host}**, **${protocol}**, and **${port}\\*\\* are also supported. Each variable can be specified only once. The preceding variables can be used at the same time or combined with a custom value.'."\n"
+ ."\n"
+ .'* If you want to specify a custom value, make sure that the following requirements are met:'."\n"
+ ."\n"
+ .' * The header value must be 1 to 128 characters in length.'."\n"
+ .' * It can contain printable characters, excluding space characters, the special characters `# [ ] { } \\ | < > "`, and uppercase letters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'quedsa',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '转发规则动作类型',
+ 'description' => 'The type of the task. You can specify up to 11 types of action. Valid values:'."\n"
+ ."\n"
+ .'* **ForwardGroup**: forwards a request to multiple vServer groups.'."\n"
+ .'* **Redirect**: redirects requests.'."\n"
+ .'* **FixedResponse**: returns a fixed response.'."\n"
+ .'* **Rewrite**: rewrites requests.'."\n"
+ .'* **InsertHeader**: inserts a header.'."\n"
+ .'* **RemoveHeader**: deletes the header of a request.'."\n"
+ .'* **TrafficLimit**: throttles traffic.'."\n"
+ .'* **trafficMirror**: mirrors network traffic.'."\n"
+ .'* **Cors**: forwards requests based on CORS.'."\n"
+ ."\n"
+ .'The preceding actions can be classified into two types:'."\n"
+ ."\n"
+ .'* **FinalType**: Each forwarding rule can contain only one FinalType action, which is performed at the end. You can specify only one of **ForwardGroup**, **Redirect**, and **FixedResponse**.'."\n"
+ .'* **ExtType**: Each forwarding rule can contain one or more **ExtType** actions, which are performed before the **FinalType** action. If you want to specify an ExtType action, you must also specify a **FinalType** action. You can specify multiple **InsertHeader** actions or one **Rewrite** action.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ForwardGroup',
+ ],
+ 'TrafficLimitConfig' => [
+ 'title' => '流量限速',
+ 'description' => 'The configuration of the action to throttle traffic.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QPS' => [
+ 'description' => 'The number of queries per second (QPS). Value range: **1 to 1,000,000**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ 'PerIpQps' => [
+ 'description' => 'The number of requests per IP address. Value range: **1 to 1,000,000**.'."\n"
+ ."\n"
+ .'> If both the **QPS** and **PerIpQps** parameters are specified, make sure that the value of the **QPS** parameter is smaller than the value of the PerIpQps parameter.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'TrafficMirrorConfig' => [
+ 'title' => '流量镜像',
+ 'description' => 'The configuration of the traffic mirroring action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TargetType' => [
+ 'title' => '镜像目标类型',
+ 'description' => 'The type of destination to which network traffic is mirrored. Valid values:'."\n"
+ ."\n"
+ .'* **ForwardGroupMirror**: a server group'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ForwardGroupMirror',
+ ],
+ 'MirrorGroupConfig' => [
+ 'title' => '镜像至服务器组',
+ 'description' => 'The server group to which network traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'description' => 'The server group to which traffic is mirrored.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'srg-00mkgijak0w4qgz9****',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'RemoveHeaderConfig' => [
+ 'title' => '去除HTTP标头',
+ 'description' => 'The HTTP header to be removed.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The key of the header to be removed. The header key must be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The header keys specified in RemoveHeader must be unique.'."\n"
+ ."\n"
+ .'* If Direction is set to Request, the following request headers cannot be removed: `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `x-forwarded-host`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, and `authority`. Request headers are not case-sensitive.'."\n"
+ .'* If Direction is set to Response, the following header keys are not supported: `connection`, `upgrade`, `content-length`, and `transfer-encoding`. The header keys are not case-sensitive.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'CorsConfig' => [
+ 'title' => '跨域',
+ 'description' => 'The CORS configuration.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AllowOrigin' => [
+ 'title' => '允许的访问来源',
+ 'description' => 'The trusted origins. You can specify one or more values, or only an asterisk (`*`).'."\n"
+ ."\n"
+ .'* The value must start with `http://` or `https://`, and be followed by a valid domain name, including top-level wildcard domain names. Example: `http://*.test.abc.example.com`.'."\n"
+ .'* You can specify ports for a single value. Valid values: **1** to **65535**.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted origin of CORS requests.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'http://test.com',
+ ],
+ 'required' => false,
+ ],
+ 'AllowMethods' => [
+ 'title' => '选择跨域访问时允许的HTTP方法',
+ 'description' => 'The trusted HTTP methods of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted HTTP method of CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **GET**'."\n"
+ .'* **POST**'."\n"
+ .'* **PUT**'."\n"
+ .'* **DELETE**'."\n"
+ .'* **HEAD**'."\n"
+ .'* **OPTIONS**'."\n"
+ .'* **PATCH**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'GET',
+ ],
+ 'required' => false,
+ ],
+ 'AllowHeaders' => [
+ 'title' => '允许跨域的Header列表',
+ 'description' => 'The trusted headers of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The headers that can be exposed. You can specify the wildcard character (`*`), or one or more values. Separate multiple values with commas (,). Each value can be up to 32 characters in length, and can contain only letters and digits. It cannot start or end with an underscore (\\_) or a hyphen (-).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_123',
+ ],
+ 'required' => false,
+ ],
+ 'ExposeHeaders' => [
+ 'title' => '允许暴露的Header列表',
+ 'description' => 'The headers that can be exposed.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The header that can be exposed. You can specify the wildcard character (`*`), or one or more values. Separate multiple values with commas (,). Each value can be up to 32 characters in length, and can contain only letters and digits. It cannot start or end with an underscore (\\_) or a hyphen (-).'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_123',
+ ],
+ 'required' => false,
+ ],
+ 'AllowCredentials' => [
+ 'title' => '是否允许携带凭证信息',
+ 'description' => 'Specifies whether credentials can be carried in CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **on**'."\n"
+ .'* **off**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'on',
+ ],
+ 'MaxAge' => [
+ 'title' => '预检请求在浏览器的最大缓存时间',
+ 'description' => 'The maximum cache time of dry runs in the browser. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **-1** to **172800**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1000',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'RuleName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '转发规则名称',
+ 'description' => 'The name of the forwarding rule. The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rule-instance-test',
+ ],
+ ],
+ [
+ 'name' => 'Priority',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '转发规则优先级',
+ 'description' => 'The priority of the forwarding rule. Valid values: **1 to 10000**. A lower value specifies a higher priority.'."\n"
+ ."\n"
+ .'> The priorities of the forwarding rules created for the same listener must be unique.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Updates a forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F5378-41F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Rule',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.SameGroupForForwardAndMirrorAction',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.GRPCServerGroup',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'Conflict.Priority',
+ 'errorMessage' => 'There is already %s having the same configuration with %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerAddedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleWildcardsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleMatchEvaluationsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleActionsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.Protocol',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.VpcId',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.RewriteMissingForwardGroup',
+ 'errorMessage' => 'The operation is not allowed because of RewriteMissingForwardGroup.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified listener is being configured, please try again later.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ProtocolMustSameForForwardGroupAction',
+ 'errorMessage' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.ServerGroup',
+ 'errorMessage' => 'Authentication has failed for ServerGroup.',
+ ],
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Rule',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F5378-41F6-4AE4-92F8-7FF34B540710\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateRuleAttributeResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F5378-41F6-4AE4-92F8-7FF34B540710</RequestId>\\n</UpdateRuleAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateRuleAttribute',
+ 'description' => '* **UpdateRuleAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListRules](~~214379~~) operation to query the status of a forwarding rule:'."\n"
+ ."\n"
+ .' * If a forwarding rule is in the **Configuring** state, the forwarding rule is being updated.'."\n"
+ .' * If a forwarding rule is in the **Available** state, the forwarding rule is updated.'."\n"
+ ."\n"
+ .'* You can set **RuleConditions** and **RuleActions** to add conditions and actions to a forwarding rule. Take note of the following limits on the number of conditions and the number of actions in each forwarding rule:'."\n"
+ ."\n"
+ .' * Number of conditions: You can specify at most 5 for a basic Application Load Balancer (ALB) instance, at most 10 for a standard ALB instance, and at most 10 for a WAF-enabled ALB instance.'."\n"
+ .' * Number of actions: You can specify at most 3 for a basic ALB instance, at most 5 for a standard ALB instance, and at most 5 for a WAF-enabled ALB instance.',
+ ],
+ 'UpdateRulesAttribute' => [
+ 'summary' => 'Modifies the attributes of forwarding rules.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '35808',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbBIWWMH',
+ 'FEATUREslbTXOYED',
+ 'FEATUREslbQCCQ6L',
+ 'FEATUREslb4T90LL',
+ 'FEATUREslbIT4IYN',
+ 'FEATUREslbA51OGD',
+ 'FEATUREslbUBPZWI',
+ 'FEATUREslbGVK35E',
+ 'FEATUREslbYG3GCF',
+ 'FEATUREslbRBR9GZ',
+ 'FEATUREslbMWZQWL',
+ 'FEATUREslbJCYSIV',
+ 'FEATUREslbY93SFN',
+ 'FEATUREslbVUMBEO',
+ 'FEATUREslbZ4XFTS',
+ 'FEATUREslb2Q6O49',
+ ],
+ 'autoTest' => true,
+ 'tenantRelevance' => 'tenant',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'Rules',
+ 'in' => 'formData',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '转发规则列表',
+ 'description' => 'The forwarding rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Priority' => [
+ 'title' => '转发规则优先级',
+ 'description' => 'The priority of the forwarding rule.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '10',
+ ],
+ 'RuleName' => [
+ 'title' => '转发规则名称',
+ 'description' => 'The name of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rule-instance-test',
+ ],
+ 'RuleActions' => [
+ 'title' => '转发规则动作',
+ 'description' => 'The forwarding rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The action of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'FixedResponseConfig' => [
+ 'title' => '返回固定内容动作配置',
+ 'description' => 'The configuration of the action to return a custom response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Content' => [
+ 'title' => '内容',
+ 'description' => 'The content of the response.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'dssacav',
+ ],
+ 'ContentType' => [
+ 'title' => '内容类型',
+ 'description' => 'The content type of the response.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'text/plain',
+ ],
+ 'HttpCode' => [
+ 'title' => 'HTTP响应码',
+ 'description' => 'The HTTP status code in the response.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '200',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ForwardGroupConfig' => [
+ 'title' => '转发组动作配置',
+ 'description' => 'The configuration of the action to forward requests to server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '转发到的目的服务器组列表',
+ 'description' => 'The server groups to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组标识',
+ 'description' => 'The ID of the server group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'sg-atstuj3rtoptyui****',
+ ],
+ 'Weight' => [
+ 'title' => '权重',
+ 'description' => 'The weight of the server group.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'minimum' => '0',
+ 'example' => '30',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ 'ServerGroupStickySession' => [
+ 'title' => '服务器组之间会话保持',
+ 'description' => 'The configuration of session persistence for server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Enabled' => [
+ 'title' => '是否开启会话保持',
+ 'description' => 'Specifies whether to enable session persistence.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'Timeout' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period for sessions.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '2',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'InsertHeaderConfig' => [
+ 'title' => '插入头部动作配置',
+ 'description' => 'The configuration of the action to insert a header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CoverEnabled' => [
+ 'title' => '是否覆盖请求中的值',
+ 'description' => 'Specifies whether to overwrite the header in the request.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'Key' => [
+ 'title' => 'HTTP标头',
+ 'description' => 'The key of the HTTP header.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => 'HTTP标头内容',
+ 'description' => 'The value of the HTTP header.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UserDefined',
+ ],
+ 'ValueType' => [
+ 'title' => '取值类型',
+ 'description' => 'The type of the header value.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'UserDefined',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Order' => [
+ 'title' => '优先级',
+ 'description' => 'The priority of the action.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => true,
+ 'example' => '1',
+ ],
+ 'RedirectConfig' => [
+ 'title' => '重定向动作配置',
+ 'description' => 'The configuration of the redirect action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '要跳转的主机地址',
+ 'description' => 'The hostname to which requests are redirected.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'HttpCode' => [
+ 'title' => '跳转方式',
+ 'description' => 'The HTTP status code that indicates the redirect type.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '301',
+ ],
+ 'Path' => [
+ 'title' => '要跳转的路径',
+ 'description' => 'The path of the destination to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test',
+ ],
+ 'Port' => [
+ 'title' => '要跳转的端口',
+ 'description' => 'The port to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '10',
+ ],
+ 'Protocol' => [
+ 'title' => '要跳转的协议',
+ 'description' => 'The protocol of the destination to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ 'Query' => [
+ 'title' => '要跳转的查询字符串',
+ 'description' => 'The query string to which requests are redirected.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'quert',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'RewriteConfig' => [
+ 'title' => '内部重定向动作配置',
+ 'description' => 'The configuration of the rewrite action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '主机名',
+ 'description' => 'The hostname of the destination to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'Path' => [
+ 'title' => '路径',
+ 'description' => 'The path to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/tsdf',
+ ],
+ 'Query' => [
+ 'title' => '查询',
+ 'description' => 'The query string of the URL to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'quedsa',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '转发规则动作类型',
+ 'description' => 'The type of action.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'Host',
+ ],
+ 'TrafficLimitConfig' => [
+ 'title' => '流量限速',
+ 'description' => 'The configuration of traffic throttling.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QPS' => [
+ 'description' => 'The number of queries per second (QPS).'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '2',
+ ],
+ 'PerIpQps' => [
+ 'description' => 'The number of requests per IP address.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'TrafficMirrorConfig' => [
+ 'title' => '流量镜像',
+ 'description' => 'The configuration of traffic mirroring.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TargetType' => [
+ 'title' => '镜像目标类型',
+ 'description' => 'The type of the target to which network traffic is mirrored.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ForwardGroupMirror',
+ ],
+ 'MirrorGroupConfig' => [
+ 'title' => '镜像至服务器组',
+ 'description' => 'The configuration of the server group to which traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'description' => 'The server group to which traffic is mirrored.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'srg-00mkgijak0w4qgz9****',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'RemoveHeaderConfig' => [
+ 'title' => '去除HTTP标头',
+ 'description' => 'The configuration of the HTTP header to be removed.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The key of the header.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Port',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'CorsConfig' => [
+ 'title' => '跨域',
+ 'description' => 'The cross-origin resource sharing (CORS) configuration.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AllowOrigin' => [
+ 'title' => '允许的访问来源',
+ 'description' => 'The trusted origins.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted origin.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'http://example.com',
+ ],
+ 'required' => false,
+ ],
+ 'AllowMethods' => [
+ 'title' => '选择跨域访问时允许的HTTP方法',
+ 'description' => 'The trusted HTTP methods of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted HTTP method of CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **GET**'."\n"
+ .'* **POST**'."\n"
+ .'* **PUT**'."\n"
+ .'* **DELETE**'."\n"
+ .'* **HEAD**'."\n"
+ .'* **OPTIONS**'."\n"
+ .'* **PATCH**'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'GET',
+ ],
+ 'required' => false,
+ ],
+ 'AllowHeaders' => [
+ 'title' => '允许跨域的Header列表',
+ 'description' => 'The trusted headers of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The trusted header of CORS requests.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_123',
+ ],
+ 'required' => false,
+ ],
+ 'ExposeHeaders' => [
+ 'title' => '允许暴露的Header列表',
+ 'description' => 'The headers that can be exposed.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The header that can be exposed.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test_123',
+ ],
+ 'required' => false,
+ ],
+ 'AllowCredentials' => [
+ 'title' => '是否允许携带凭证信息',
+ 'description' => 'Specifies whether to allow credentials to be carried in CORS requests.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'on',
+ ],
+ 'MaxAge' => [
+ 'title' => '预检请求在浏览器的最大缓存时间',
+ 'description' => 'The maximum cache time for dry runs in the browser.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '1000',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => false,
+ ],
+ 'RuleConditions' => [
+ 'title' => '转发规则条件',
+ 'description' => 'The match conditions of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The match condition of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CookieConfig' => [
+ 'title' => 'Cookie条件配置',
+ 'description' => 'The configuration of the cookie.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'Cookie键值对列表',
+ 'description' => 'The key-value pairs of cookies.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The key-value pair of cookies.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'Cookie条件键',
+ 'description' => 'The cookie key.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => 'Cookie条件值',
+ 'description' => 'The cookie value.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'HeaderConfig' => [
+ 'title' => 'HTTP标头条件配置',
+ 'description' => 'The configuration of the HTTP header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The key of the header.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Port',
+ ],
+ 'Values' => [
+ 'title' => 'HTTP标头值列表',
+ 'description' => 'The values of the HTTP header.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The value of the HTTP header.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5006',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'HostConfig' => [
+ 'title' => '主机名条件配置',
+ 'description' => 'The match conditions for hostnames.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '主机名列表',
+ 'description' => 'The hostnames.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The hostname.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'www.example.com',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'MethodConfig' => [
+ 'title' => 'HTTP请求方法条件配置',
+ 'description' => 'The configuration of the HTTP request method.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'HTTP请求方法列表',
+ 'description' => 'The HTTP request methods.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP request method.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'PUT',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'PathConfig' => [
+ 'title' => '查询字符串条件配置',
+ 'description' => 'The match conditions for query strings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '路径条件列表',
+ 'description' => 'The paths to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The path to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'QueryStringConfig' => [
+ 'title' => '查询字符串条件配置',
+ 'description' => 'The match conditions for query strings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '查询字符串条件键值对列表',
+ 'description' => 'The key-value pairs of query strings.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The key-value pair of the query string.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '查询字符串条件键',
+ 'description' => 'The key of the query string.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => '查询字符串条件值',
+ 'description' => 'The value of the query string.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ResponseHeaderConfig' => [
+ 'title' => '返回HTTP标头',
+ 'description' => 'The HTTP response headers.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '返回HTTP标头键',
+ 'description' => 'The key of the response header.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'Values' => [
+ 'title' => '返回HTTP标头值',
+ 'description' => 'The values of the response header.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The value of the response header.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5006',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'ResponseStatusCodeConfig' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The match conditions for response status codes.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The match conditions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The match condition.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '301',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'Type' => [
+ 'title' => '条件类型',
+ 'description' => 'The condition type of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ForwardGroup',
+ ],
+ 'SourceIpConfig' => [
+ 'title' => '基于源IP业务流量匹配',
+ 'description' => 'Traffic matching based on source IP addresses.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'description' => 'You can add one or more IP addresses, including CIDR blocks.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'You can add one or more IP addresses, including CIDR blocks.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.0.1/32',
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => false,
+ ],
+ 'RuleId' => [
+ 'title' => '转发规则ID',
+ 'description' => 'The ID of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'rule-cxjh7vazn2jpnl****',
+ ],
+ ],
+ 'required' => true,
+ ],
+ 'required' => true,
+ 'maxItems' => 100,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Rule',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.SameGroupForForwardAndMirrorAction',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.GRPCServerGroup',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'Conflict.Priority',
+ 'errorMessage' => 'There is already %s having the same configuration with %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ServerAddedNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleWildcardsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleMatchEvaluationsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.RuleActionsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.Protocol',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'Mismatch.VpcId',
+ 'errorMessage' => 'The %s is mismatched for %s and %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ServiceManagedResource',
+ 'errorMessage' => 'The operation is not allowed because the current resource of %s is managed resource.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ListenerIdInconsistent',
+ 'errorMessage' => 'The operation is not allowed because of ListenerIdInconsistent.',
+ ],
+ [
+ 'errorCode' => 'IllegalParam.Priority',
+ 'errorMessage' => 'The param of Priority is illegal.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.MirrorActionSupportHttpGroupOnly',
+ 'errorMessage' => 'The operation is not allowed because of MirrorActionSupportHttpGroupOnly.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.ProtocolMustSameForForwardGroupAction',
+ 'errorMessage' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Rule',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'asynchronous',
+ 'callback' => 'Alb::2020-06-16::ListAsynJobs',
+ 'callbackInterval' => 1000,
+ 'maxCallbackTimes' => 60,
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateRulesAttributeResponse>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n</UpdateRulesAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateRulesAttribute',
+ 'description' => '**UpdateRulesAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListRules](~~214379~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .'* If a forwarding rule is in the **Configuring** state, the forwarding rule is being updated.'."\n"
+ ."\n"
+ .'* If a forwarding rule is in the **Available** state, the forwarding rule is updated.'."\n"
+ ."\n"
+ .'* You can set **RuleConditions** and **RuleActions** to add conditions and actions to a forwarding rule. Take note of the following limits on the maximum number of conditions and the maximum number of actions in each forwarding rule:'."\n"
+ ."\n"
+ .' * Limits on conditions: 5 for a basic Application Load Balancer (ALB) instance, 10 for a standard ALB instance, and 10 for a WAF-enabled ALB instance.'."\n"
+ .' * Limits on actions: 3 for a basic ALB instance, 5 for a standard ALB instance, and 5 for a WAF-enabled ALB instance.'."\n",
+ ],
+ 'ListRules' => [
+ 'summary' => 'Queries the forwarding rules in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbM7ALO6',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '用来标记当前开始读取的位置,置空表示从头开始。',
+ 'description' => 'The starting point of the current query. If you do not specify this parameter, the query starts from the beginning.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '本次读取的最大数据记录数量,此参数为可选参数,取值1-100,用户传入为空时,默认为20。',
+ 'description' => 'The maximum number of entries to return.'."\n"
+ ."\n"
+ .'Valid values: **1 to 100**.'."\n"
+ ."\n"
+ .'Default value: **20**. If you do not specify this parameter, the default value is used.'."\n"
+ ."\n"
+ .'> This parameter is optional.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ [
+ 'name' => 'RuleIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '转发规则ID列表,N最大支持20',
+ 'description' => 'The forwarding rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The forwarding rule ID. You can specify up to 20 IDs in each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rule-sada',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ListenerIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '监听ID列表',
+ 'description' => 'The listener IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The listener ID. You can specify up to 20 IDs in each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'lsn-i35udpz3pxsmnf****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '实例ID列表',
+ 'description' => 'The Application Load Balancer (ALB) instance IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ALB instance ID. You can specify up to 20 IDs in each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'alb-x30o38azsuj0sx****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'Direction',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '转发规则方向',
+ 'description' => 'The direction to which the forwarding rule is applied. Valid values:'."\n"
+ ."\n"
+ .'* **Request** (default): The forwarding rule is applied to the client requests received by ALB.'."\n"
+ .'* **Response**: The forwarding rule is applied to the responses returned by backend servers.'."\n"
+ ."\n"
+ .'> You cannot set this parameter to Response if you use basic ALB instances.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Request',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tag.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The forwarding rules.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MaxResults' => [
+ 'title' => '本次请求所返回的最大记录条数。',
+ 'description' => 'The maximum number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'NextToken' => [
+ 'title' => '用来表示当前调用返回读取到的位置,空代表数据已经读取完毕。',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ 'Rules' => [
+ 'title' => '转发规则列表',
+ 'description' => 'The details about the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ListenerId' => [
+ 'title' => '监听ID',
+ 'description' => 'The ID of the listener that is associated with the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsn-i35udpz3pxsmnf****',
+ ],
+ 'LoadBalancerId' => [
+ 'title' => '实例ID',
+ 'description' => 'The ID of the Application Load Balancer (ALB) instance that is associated with the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-x30o38azsuj0sx****',
+ ],
+ 'Priority' => [
+ 'title' => '转发规则优先级',
+ 'description' => 'The priority of the forwarding rule. Valid values: **1 to 10000**. A smaller value indicates a higher priority.'."\n"
+ ."\n"
+ .'> The priority of each forwarding rule added to a listener must be unique.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'RuleActions' => [
+ 'title' => '转发规则动作',
+ 'description' => 'The action of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The action of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'FixedResponseConfig' => [
+ 'title' => '返回固定内容动作配置',
+ 'description' => 'The configuration of the custom response.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Content' => [
+ 'title' => '内容',
+ 'description' => 'The content of the custom response. The content can be up to 1 KB in size, and can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'example' => 'dssacav',
+ ],
+ 'ContentType' => [
+ 'title' => '内容类型',
+ 'description' => 'The format of the response.'."\n"
+ ."\n"
+ .'Valid values: **text/plain**, **text/css**, **text/html**, **application/javascript**, and **application/json**.'."\n",
+ 'type' => 'string',
+ 'example' => 'text/plain',
+ ],
+ 'HttpCode' => [
+ 'title' => 'HTTP响应码',
+ 'description' => 'The HTTP status code in responses. Valid values: **HTTP\\_2xx**, **HTTP\\_4xx**, and **HTTP\\_5xx**. **x** is a digit.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP_2xx',
+ ],
+ ],
+ ],
+ 'ForwardGroupConfig' => [
+ 'title' => '转发组动作配置',
+ 'description' => 'The configurations of the server groups.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'title' => '转发到的目的服务器组列表',
+ 'description' => 'The server groups to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'title' => '服务器组标识',
+ 'description' => 'The server group to which requests are forwarded.'."\n",
+ 'type' => 'string',
+ 'example' => 'sg-atstuj3rtoptyui****',
+ ],
+ 'Weight' => [
+ 'title' => '当ServerGroupTuple.N数量大于1时,可配置每个服务器组的权重',
+ 'description' => 'The weight of the server group. Valid values: **0** to **100**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ ],
+ ],
+ ],
+ 'ServerGroupStickySession' => [
+ 'title' => '服务器组间会话保持配置',
+ 'description' => 'The session persistence configurations of the server group.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Enabled' => [
+ 'title' => '当ServerGroupTuple.N数量大于1时,可选是否开启在服务器组间的会话保持',
+ 'description' => 'If the value of N in ServerGroupTuple.N is larger than 1, you can enable or disable session persistence for server groups.'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'Timeout' => [
+ 'title' => '当Enabled=True时,可以配置会话保持的超时时间',
+ 'description' => 'If Enabled is set to True, you can specify a session persistence timeout period.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '100',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'InsertHeaderConfig' => [
+ 'title' => '插入头部动作配置',
+ 'description' => 'The key of the header to be inserted.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头',
+ 'description' => 'The key of the header. The header key must be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The header key specified in `InsertHeader` must be unique.'."\n"
+ ."\n"
+ .'> **Cookie** and **Host** are not supported.'."\n",
+ 'type' => 'string',
+ 'example' => 'key',
+ ],
+ 'Value' => [
+ 'title' => 'HTTP标头内容',
+ 'description' => 'The value of the header to be inserted.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **SystemDefined**, you can set the Value parameter to one of the following values:'."\n"
+ ."\n"
+ .' * **ClientSrcPort**: the client port.'."\n"
+ .' * **ClientSrcIp**: the IP address of the client.'."\n"
+ .' * **Protocol**: the request protocol (HTTP or HTTPS).'."\n"
+ .' * **SLBId**: the ID of the ALB instance.'."\n"
+ .' * **SLBPort**: the listener port.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **UserDefined**, you can specify a custom header value. The header value must be 1 to 128 characters in length, and can contain wildcard characters, such as asterisks (\\*) and question marks (?), and printable characters whose ASCII values are `larger than or equal to 32 and smaller than 127`. The header value cannot start or end with a space character.'."\n"
+ ."\n"
+ .'* If **ValueType** is set to **ReferenceHeader**, you can reference a value from a request header. The header value must be 1 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n",
+ 'type' => 'string',
+ 'example' => 'ClientSrcPort',
+ ],
+ 'ValueType' => [
+ 'title' => '取值类型',
+ 'description' => 'The type of the header value. Valid values:'."\n"
+ ."\n"
+ .'* **UserDefined**: a user-defined header value.'."\n"
+ .'* **ReferenceHeader**: a header value that is referenced from a request header.'."\n"
+ .'* **SystemDefined:** a system-defined header value.'."\n",
+ 'type' => 'string',
+ 'example' => 'SystemDefined',
+ ],
+ ],
+ ],
+ 'Order' => [
+ 'title' => '优先级',
+ 'description' => 'The priority of the action. Valid values: **1 to 50000**. A smaller value indicates a higher priority. The actions of a forwarding rule are applied in descending order of priority. This parameter cannot empty. The priority of each action within a forwarding rule must be unique.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1',
+ ],
+ 'RedirectConfig' => [
+ 'title' => '重定向动作配置',
+ 'description' => 'The configuration of the redirect action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '要跳转的主机地址',
+ 'description' => 'The hostname to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* **${host}** (default): If ${host} is returned, no other characters are appended.'."\n"
+ ."\n"
+ .'* A custom value. Make sure that the custom value meets the following requirements:'."\n"
+ ."\n"
+ .' * The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
+ .' * The hostname must contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .' * The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-).'."\n"
+ .' * The domain labels cannot start or end with a hyphen (-).'."\n"
+ .' * You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'example' => 'www.example.com',
+ ],
+ 'HttpCode' => [
+ 'title' => '跳转方式',
+ 'description' => 'The forwarding method. Valid values: **301**, **302**, **303**, **307**, and **308**.'."\n",
+ 'type' => 'string',
+ 'example' => '301',
+ ],
+ 'Path' => [
+ 'title' => '要跳转的路径',
+ 'description' => 'The URL to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* **${path}** (default): You can reference \\*\\*${host}**, **${protocol}**, and**${port}**. The URL can consist of **${host}**,**${protocol}**, and **${port}\\*\\*. Each variable can be used only once. The preceding variables can be used at the same time or combined with a custom value.'."\n"
+ ."\n"
+ .'* A custom value. Make sure that the custom value meets the following requirements:'."\n"
+ ."\n"
+ .' * The URL must be 1 to 128 characters in length.'."\n"
+ .' * It must start with a forward slash (/) and can contain letters, digits, and the following special characters: `$ - _ .+ / & ~ @ :`. It cannot contain the following special characters: `" % # ; ! ( ) [ ] ^ , "`. You can use asterisks (\\*) and question marks (?) as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'example' => '/test',
+ ],
+ 'Port' => [
+ 'title' => '要跳转的端口',
+ 'description' => 'The port to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* **${port}** (default): If ${port} is returned, no other characters are appended.'."\n"
+ .'* Other valid values: **1 to 63335**.'."\n",
+ 'type' => 'string',
+ 'example' => '10',
+ ],
+ 'Protocol' => [
+ 'title' => '要跳转的协议',
+ 'description' => 'The redirect protocol. Valid values:'."\n"
+ ."\n"
+ .'* **${protocol}** (default): If ${protocol} is returned, no other characters are appended.'."\n"
+ .'* **HTTP** or **HTTPS**'."\n"
+ ."\n"
+ .'> HTTPS listeners supports only HTTPS redirects.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP',
+ ],
+ 'Query' => [
+ 'title' => '要跳转的查询字符串',
+ 'description' => 'The query string of the URL to which requests are redirected. The query string must be 1 to 128 characters in length, and can contain printable characters, excluding uppercase letters and the following special characters: `# [ ] { } \\ | < > &`.'."\n",
+ 'type' => 'string',
+ 'example' => 'quert',
+ ],
+ ],
+ ],
+ 'RemoveHeaderConfig' => [
+ 'title' => '去除HTTP标头',
+ 'description' => 'The HTTP header to be removed.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头',
+ 'description' => 'The key of the header to be removed. The header key must be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The header keys specified in RemoveHeader must be unique.'."\n"
+ ."\n"
+ .'* If Direction is set to Request, the specified headers are removed from requests. The following header keys are not supported (not case-sensitive): `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, and `authority`.'."\n"
+ .'* If Direction is set to Response, the specified headers are removed from responses. The following header keys are not supported (not case-sensitive): `connection`, `upgrade`, `content-length`, and `transfer-encoding`.'."\n",
+ 'type' => 'string',
+ 'example' => 'key',
+ ],
+ ],
+ ],
+ 'RewriteConfig' => [
+ 'title' => '内部重定向动作配置',
+ 'description' => 'The configuration of the rewrite action.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Host' => [
+ 'title' => '主机名',
+ 'description' => 'The hostname to which requests are redirected. Valid values:'."\n"
+ ."\n"
+ .'* **${host}** (default): If ${host} is returned, no other characters are appended.'."\n"
+ ."\n"
+ .'* A custom value. Make sure that the custom value meets the following requirements:'."\n"
+ ."\n"
+ .' * The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
+ .' * The hostname must contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .' * The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-).'."\n"
+ .' * The domain labels cannot start or end with a hyphen (-).'."\n"
+ .' * You can use asterisks (\\*) and question marks (?) anywhere in a domain label as wildcard characters.'."\n",
+ 'type' => 'string',
+ 'example' => 'www.example.com',
+ ],
+ 'Path' => [
+ 'title' => '路径',
+ 'description' => 'The URL to which requests are redirected. The URL must be 1 to 128 characters in length, and can contain letters, digits, asterisks (\\*), question marks (?), and the following special characters: `$ - _ . + / & ~ @ :`. It must start with a forward slash (/) and does not contain the following special characters: `" % # ; ! ( ) [ ] ^ , "`.'."\n",
+ 'type' => 'string',
+ 'example' => '/tsdf',
+ ],
+ 'Query' => [
+ 'title' => '查询',
+ 'description' => 'The query string of the URL to which requests are redirected. The query string must be 1 to 128 characters in length, and can contain printable characters, excluding uppercase letters and the following special characters: `# [ ] { } \\ | < > &`.'."\n",
+ 'type' => 'string',
+ 'example' => 'quedsa',
+ ],
+ ],
+ ],
+ 'TrafficMirrorConfig' => [
+ 'title' => '流量镜像Action对应的配置,type为TrafficMirror时必填且有效',
+ 'description' => 'The configuration of traffic mirroring.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TargetType' => [
+ 'title' => '流量镜像的目的,可以是服务器组',
+ 'description' => 'The destination to which traffic is mirrored. The destination can be a server group.'."\n",
+ 'type' => 'string',
+ 'example' => 'ForwardGroupMirror',
+ ],
+ 'MirrorGroupConfig' => [
+ 'title' => 'TargetType为服务器组时必选,目标服务器组',
+ 'description' => 'The configuration of the server group to which traffic is mirrored.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupTuples' => [
+ 'description' => 'The server group to which traffic is mirrored.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'ServerGroupId' => [
+ 'description' => 'The ID of the server group.'."\n",
+ 'type' => 'string',
+ 'example' => 'srg-00mkgijak0w4qgz9****',
+ ],
+ 'Weight' => [
+ 'description' => 'The weight of the server group. Valid values: **0** to **100**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'TrafficLimitConfig' => [
+ 'description' => 'The configuration of traffic throttling.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'QPS' => [
+ 'description' => 'The number of queries per second (QPS). Valid values: **1** to **100000**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '4',
+ ],
+ 'PerIpQps' => [
+ 'description' => 'The number of requests per IP address. Valid values: **1 to 100000**.'."\n"
+ ."\n"
+ .'> If both the **QPS** and **PerIpQps** parameters are specified, the value of the **QPS** parameter is smaller than the value of the PerIpQps parameter.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ ],
+ ],
+ 'Type' => [
+ 'title' => '转发规则动作类型',
+ 'description' => 'The action. Valid values:'."\n"
+ ."\n"
+ .'* **ForwardGroup**: distributes requests to multiple vServer groups.'."\n"
+ .'* **Redirect**: redirects requests.'."\n"
+ .'* **FixedResponse**: returns a custom response.'."\n"
+ .'* **Rewrite**: rewrites requests.'."\n"
+ .'* **InsertHeader**: inserts headers.'."\n"
+ .'* **RemoveHeaderConfig**: removes headers.'."\n"
+ .'* **TrafficLimitConfig**: throttles network traffic.'."\n"
+ .'* **TrafficMirrorConfig**: mirrors network traffic.'."\n"
+ .'* **CorsConfig**: forwards requests based on CORS.'."\n"
+ ."\n"
+ .'The preceding actions can be classified into two broad types:'."\n"
+ ."\n"
+ .'* **FinalType**: Each forwarding rule can contain only one FinalType action, which is performed at the end. You can specify only one of **ForwardGroup**, **Redirect**, and **FixedResponse**.'."\n"
+ .'* **ExtType**: Each forwarding rule can contain one or more **ExtType** actions, which are performed before the **FinalType** action. If you want to specify an ExtType action, you must also specify a **FinalType** action. You can specify multiple **InsertHeader** actions or one **Rewrite** action.'."\n",
+ 'type' => 'string',
+ 'example' => 'ForwardGroup',
+ ],
+ 'CorsConfig' => [
+ 'title' => '跨域',
+ 'description' => 'The CORS configuration.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AllowOrigin' => [
+ 'title' => '允许的访问来源',
+ 'description' => 'The allowed origins of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The allowed origin of CORS requests. One or more values are supported. Asterisks (`*`) can be used as wildcard characters. The value cannot be only an asterisk (`*`).'."\n"
+ ."\n"
+ .'* Each value must start with `http://` or `https://` and must be followed by a valid domain name or a wildcard top-level domain name, such as `*.test.abc.example.com`.'."\n"
+ .'* You can specify a port in each value or leave the port empty. Valid values: **1** to **65535**.'."\n",
+ 'type' => 'string',
+ 'example' => 'http://test.com',
+ ],
+ ],
+ 'AllowMethods' => [
+ 'title' => '选择跨域访问时允许的HTTP方法',
+ 'description' => 'The allowed HTTP methods of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The allowed HTTP method of CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **GET**'."\n"
+ .'* **POST**'."\n"
+ .'* **PUT**'."\n"
+ .'* **DELETE**'."\n"
+ .'* **HEAD**'."\n"
+ .'* **OPTIONS**'."\n"
+ .'* **PATCH**'."\n",
+ 'type' => 'string',
+ 'example' => 'GET',
+ ],
+ ],
+ 'AllowHeaders' => [
+ 'title' => '允许跨域的Header列表',
+ 'description' => 'The allowed headers of CORS requests.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The allowed headers of CORS requests. One or more values are supported. Asterisks (`*`) can be used as wildcard characters. Multiple values are separated by commas (,). Each value can be up to 32 characters in length, and can contain only letters and digits. It cannot start or end with an underscore (\\_) or a hyphen (-).'."\n",
+ 'type' => 'string',
+ 'example' => 'test_123',
+ ],
+ ],
+ 'ExposeHeaders' => [
+ 'title' => '允许暴露的Header列表',
+ 'description' => 'The headers that can be exposed.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The headers that can be exposed. One or more values are supported. Asterisks (`*`) can be used as wildcard characters. Multiple values are separated by commas (,). Each value can be up to 32 characters in length, and can contain only letters and digits. It cannot start or end with an underscore (\\_) or a hyphen (-).'."\n",
+ 'type' => 'string',
+ 'example' => 'test_123',
+ ],
+ ],
+ 'AllowCredentials' => [
+ 'title' => '是否允许携带凭证信息',
+ 'description' => 'Indicates whether credentials can be carried in CORS requests. Valid values:'."\n"
+ ."\n"
+ .'* **on**'."\n"
+ .'* **off**'."\n",
+ 'type' => 'string',
+ 'example' => 'on',
+ ],
+ 'MaxAge' => [
+ 'title' => '预检请求在浏览器的最大缓存时间',
+ 'description' => 'The maximum cache time of dry runs in the browser. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **-1** to **172800**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1000',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'RuleConditions' => [
+ 'title' => '转发规则条件',
+ 'description' => 'The conditions of the forwarding rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The match condition of the forwarding rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CookieConfig' => [
+ 'title' => 'Cookie条件配置',
+ 'description' => 'The key-value pairs of the cookie.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'Cookie键值对列表',
+ 'description' => 'The cookie value.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The value of the cookie.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'Cookie条件键',
+ 'description' => 'The cookie key. The cookie key must be 1 to 100 characters in length, and can contain lowercase letters, printable ASCII characters, asterisks (\\*), and question marks (?). It cannot contain space characters or the following special characters: `# [ ] { } \\ | < > &`.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => 'Cookie条件值',
+ 'description' => 'The cookie value. The cookie value must be 1 to 128 characters in length, and can contain lowercase letters, printable ASCII characters, asterisks (\\*), and question marks (?). It cannot contain space characters or the following special characters: `# [ ] { } \\ | < > &`.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'HeaderConfig' => [
+ 'title' => 'HTTP标头条件配置',
+ 'description' => 'The configuration of the header.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => 'HTTP标头键',
+ 'description' => 'The key of the header. The header key must be 1 to 40 characters in length. It can contain letters, digits, hyphens (-), and underscores (\\_). Cookie and Host are not supported.'."\n",
+ 'type' => 'string',
+ 'example' => 'Port',
+ ],
+ 'Values' => [
+ 'title' => 'HTTP标头值列表',
+ 'description' => 'The value of the header.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The value of the header. The header value must be 1 to 128 characters in length. It can contain printable characters whose ASCII values are `larger than or equal to 32 and smaller than 127`, lowercase letters, asterisks (\\*), and question marks (?). The value cannot start or end with a space character.'."\n",
+ 'type' => 'string',
+ 'example' => '5006',
+ ],
+ ],
+ ],
+ ],
+ 'HostConfig' => [
+ 'title' => '主机名条件配置',
+ 'description' => 'The configuration of the hosts.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '主机名列表',
+ 'description' => 'The hostnames.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The hostname. The hostname must meet the following requirements:'."\n"
+ ."\n"
+ .'* The domain name must be 3 to 128 characters in length, and can contain letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
+ .'* The hostname must contain at least one period (.) but cannot start or end with a period (.).'."\n"
+ .'* The rightmost domain label can contain only letters, asterisks (\\*), and question marks (?), and cannot contain digits or hyphens (-).'."\n"
+ .'* The domain labels cannot start or end with a hyphen (-). You can specify asterisks (∗) and question marks (?) anywhere in a domain label.'."\n",
+ 'type' => 'string',
+ 'example' => 'www.example.com',
+ ],
+ ],
+ ],
+ ],
+ 'MethodConfig' => [
+ 'title' => 'HTTP请求方法条件配置',
+ 'description' => 'The configurations of the request methods.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => 'HTTP请求方法列表',
+ 'description' => 'The request methods.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The request method.'."\n"
+ ."\n"
+ .'Valid values: **HEAD**, **GET**, **POST**, **OPTIONS**, **PUT**, **PATCH**, and **DELETE**.'."\n",
+ 'type' => 'string',
+ 'example' => 'PUT',
+ ],
+ ],
+ ],
+ ],
+ 'PathConfig' => [
+ 'title' => '路径条件配置',
+ 'description' => 'The configurations of the forwarding URLs.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '路径条件列表',
+ 'description' => 'The URLs to which requests are forwarded.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The URL to which requests are forwarded. The URL must be 1 to 128 characters in length, and can contain letters, digits, asterisks (\\*), question marks (?), and the following special characters: `$ - _ . + / & ~ @ :`. It must start with a forward slash (/) and cannot contain the following special characters: `" % # ; ! ( ) [ ] ^ , "`.'."\n",
+ 'type' => 'string',
+ 'example' => '/test',
+ ],
+ ],
+ ],
+ ],
+ 'QueryStringConfig' => [
+ 'title' => '查询字符串条件配置',
+ 'description' => 'The configurations of the query strings.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '查询字符串条件键值对列表',
+ 'description' => 'The query string.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The query string.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '查询字符串条件键',
+ 'description' => 'They key of the query string. The key must be 1 to 100 characters in length, and can contain lowercase letters, printable ASCII characters, asterisks (\\*), and question marks (?). It cannot contain space characters or the following special characters: `# [ ] { } \\ | < > &`.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Value' => [
+ 'title' => '查询字符串条件值',
+ 'description' => 'The value of the query string. The value must be 1 to 128 characters in length, and can contain lowercase letters, printable ASCII characters, asterisks (\\*), and question marks (?). It cannot contain space characters or the following special characters: `# [ ] { } \\ | < > &`.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'SourceIpConfig' => [
+ 'title' => '源IP业务流量匹配',
+ 'description' => 'Traffic matching based on source IP addresses.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '需要匹配的源IP列表',
+ 'description' => 'The source IP addresses.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'You can specify one or more IP addresses, including CIDR blocks.'."\n"
+ ."\n"
+ .'Each forwarding rule supports at most five source IP addresses, including CIDR blocks.'."\n",
+ 'type' => 'string',
+ 'example' => '192.168.XX.XX/32',
+ ],
+ ],
+ ],
+ ],
+ 'ResponseStatusCodeConfig' => [
+ 'title' => '返回状态码条件',
+ 'description' => 'The configurations of the response status codes.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Values' => [
+ 'title' => '返回状态码条件列表',
+ 'description' => 'The response status codes.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The response status code.'."\n",
+ 'type' => 'string',
+ 'example' => '200',
+ ],
+ ],
+ ],
+ ],
+ 'ResponseHeaderConfig' => [
+ 'title' => '返回HTTP标头',
+ 'description' => 'The HTTP header in responses.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '返回HTTP标头键',
+ 'description' => 'The key of the HTTP header. The header key must be 1 to 40 characters in length, It can contain letters, digits, hyphens (-), and underscores (\\_). Cookie and Host are not supported.'."\n",
+ 'type' => 'string',
+ 'example' => 'key',
+ ],
+ 'Values' => [
+ 'title' => '返回HTTP标头值',
+ 'description' => 'The values of the HTTP header.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The value of the HTTP header. The header value must be 1 to 128 characters in length,'."\n",
+ 'type' => 'string',
+ 'example' => 'value',
+ ],
+ ],
+ ],
+ ],
+ 'Type' => [
+ 'title' => '条件类型',
+ 'description' => 'The type of forwarding rule. Valid values:'."\n"
+ ."\n"
+ .'* **Host**: Responses are forwarded based on hosts.'."\n"
+ .'* **Path**: Responses are forwarded based on URLs.'."\n"
+ .'* **Header**: Responses are forwarded based on HTTP headers.'."\n"
+ .'* **QueryString**: Responses are forwarded based on query strings.'."\n"
+ .'* **Method**: Responses are forwarded based on request methods.'."\n"
+ .'* **Cookie**: Responses are forwarded based on cookies.'."\n"
+ .'* **SourceIp**: Responses are forwarded based on source IP addresses.'."\n",
+ 'type' => 'string',
+ 'example' => 'Host',
+ ],
+ ],
+ 'required' => true,
+ ],
+ ],
+ 'RuleId' => [
+ 'title' => '转发规则标识',
+ 'description' => 'The ID of the forwarding rule.'."\n",
+ 'type' => 'string',
+ 'example' => 'rule-bpn0kn908w4nbw****',
+ ],
+ 'RuleName' => [
+ 'title' => '转发规则名称',
+ 'description' => 'The name of the forwarding rule. The name must be 2 to 128 letters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'example' => 'rule-instance-test',
+ ],
+ 'RuleStatus' => [
+ 'title' => '转发规则状态',
+ 'description' => 'The status of the forwarding rule. Valid values:'."\n"
+ ."\n"
+ .'* **Provisioning**: The forwarding rule is being created.'."\n"
+ .'* **Configuring**: The forwarding rule is being modified.'."\n"
+ .'* **Available**: The forwarding rule is available.'."\n",
+ 'type' => 'string',
+ 'example' => 'Available',
+ ],
+ 'Direction' => [
+ 'title' => '转发规则方向',
+ 'description' => 'The direction to which the forwarding rule is applied. Valid values:'."\n"
+ ."\n"
+ .'* Request (default): The forwarding rule is applied to requests. The forwarding action is performed on packets that are forwarded from clients to ALB.'."\n"
+ .'* Responses: The forwarding rule is applied to responses. The forwarding action is performed on packets that are returned from backend servers to ALB.'."\n"
+ ."\n"
+ .'> Basic ALB instances support only the Response direction.'."\n",
+ 'type' => 'string',
+ 'example' => 'Request',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'example' => 'product',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'TotalCount' => [
+ 'title' => '本次请求条件下的数据总量。',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876F******\\",\\n \\"Rules\\": [\\n {\\n \\"ListenerId\\": \\"lsn-i35udpz3pxsmnf****\\",\\n \\"LoadBalancerId\\": \\"alb-x30o38azsuj0sx****\\",\\n \\"Priority\\": 1,\\n \\"RuleActions\\": [\\n {\\n \\"FixedResponseConfig\\": {\\n \\"Content\\": \\"dssacav\\",\\n \\"ContentType\\": \\"text/plain\\",\\n \\"HttpCode\\": \\"HTTP_2xx\\"\\n },\\n \\"ForwardGroupConfig\\": {\\n \\"ServerGroupTuples\\": [\\n {\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"Weight\\": 2\\n }\\n ],\\n \\"ServerGroupStickySession\\": {\\n \\"Enabled\\": true,\\n \\"Timeout\\": 100\\n }\\n },\\n \\"InsertHeaderConfig\\": {\\n \\"Key\\": \\"key\\",\\n \\"Value\\": \\"ClientSrcPort\\",\\n \\"ValueType\\": \\"SystemDefined\\"\\n },\\n \\"Order\\": 1,\\n \\"RedirectConfig\\": {\\n \\"Host\\": \\"www.example.com\\",\\n \\"HttpCode\\": \\"301\\",\\n \\"Path\\": \\"/test\\",\\n \\"Port\\": \\"10\\",\\n \\"Protocol\\": \\"HTTP\\",\\n \\"Query\\": \\"quert\\"\\n },\\n \\"RemoveHeaderConfig\\": {\\n \\"Key\\": \\"key\\"\\n },\\n \\"RewriteConfig\\": {\\n \\"Host\\": \\"www.example.com\\",\\n \\"Path\\": \\"/tsdf\\",\\n \\"Query\\": \\"quedsa\\"\\n },\\n \\"TrafficMirrorConfig\\": {\\n \\"TargetType\\": \\"ForwardGroupMirror\\",\\n \\"MirrorGroupConfig\\": {\\n \\"ServerGroupTuples\\": [\\n {\\n \\"ServerGroupId\\": \\"sgp-00mkgijak0w4qgz9****\\",\\n \\"Weight\\": 2\\n }\\n ]\\n }\\n },\\n \\"TrafficLimitConfig\\": {\\n \\"QPS\\": 4,\\n \\"PerIpQps\\": 80\\n },\\n \\"Type\\": \\"ForwardGroup\\",\\n \\"CorsConfig\\": {\\n \\"AllowOrigin\\": [\\n \\"http://test.com\\"\\n ],\\n \\"AllowMethods\\": [\\n \\"GET\\"\\n ],\\n \\"AllowHeaders\\": [\\n \\"test_123\\"\\n ],\\n \\"ExposeHeaders\\": [\\n \\"test_123\\"\\n ],\\n \\"AllowCredentials\\": \\"on\\",\\n \\"MaxAge\\": 1000\\n }\\n }\\n ],\\n \\"RuleConditions\\": [\\n {\\n \\"CookieConfig\\": {\\n \\"Values\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"test\\"\\n }\\n ]\\n },\\n \\"HeaderConfig\\": {\\n \\"Key\\": \\"Port\\",\\n \\"Values\\": [\\n \\"5006\\"\\n ]\\n },\\n \\"HostConfig\\": {\\n \\"Values\\": [\\n \\"www.example.com\\"\\n ]\\n },\\n \\"MethodConfig\\": {\\n \\"Values\\": [\\n \\"PUT\\"\\n ]\\n },\\n \\"PathConfig\\": {\\n \\"Values\\": [\\n \\"/test\\"\\n ]\\n },\\n \\"QueryStringConfig\\": {\\n \\"Values\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"test\\"\\n }\\n ]\\n },\\n \\"SourceIpConfig\\": {\\n \\"Values\\": [\\n \\"192.168.XX.XX/32\\"\\n ]\\n },\\n \\"ResponseStatusCodeConfig\\": {\\n \\"Values\\": [\\n \\"200\\"\\n ]\\n },\\n \\"ResponseHeaderConfig\\": {\\n \\"Key\\": \\"key\\",\\n \\"Values\\": [\\n \\"value\\"\\n ]\\n },\\n \\"Type\\": \\"Host\\"\\n }\\n ],\\n \\"RuleId\\": \\"rule-bpn0kn908w4nbw****\\",\\n \\"RuleName\\": \\"rule-instance-test\\",\\n \\"RuleStatus\\": \\"Available\\",\\n \\"Direction\\": \\"Request\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ],\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"<ListRulesResponse>\\n <MaxResults>50</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n <Rules>\\n <ListenerId>lsn-i35udpz3pxsmnf****</ListenerId>\\n <LoadBalancerId>alb-x30o38azsuj0sx****</LoadBalancerId>\\n <Priority>1</Priority>\\n <RuleActions>\\n <FixedResponseConfig>\\n <Content>dssacav</Content>\\n <ContentType>text/plain</ContentType>\\n <HttpCode>HTTP_2xx</HttpCode>\\n </FixedResponseConfig>\\n <ForwardGroupConfig>\\n <ServerGroupTuples>\\n <ServerGroupId>sg-atstuj3rtoptyui****</ServerGroupId>\\n <Weight>2</Weight>\\n </ServerGroupTuples>\\n </ForwardGroupConfig>\\n <InsertHeaderConfig>\\n <Key>key</Key>\\n <Value>ClientSrcPort</Value>\\n <ValueType>SystemDefined</ValueType>\\n </InsertHeaderConfig>\\n <Order>1</Order>\\n <RedirectConfig>\\n <Host>www.example.com</Host>\\n <HttpCode>301</HttpCode>\\n <Path>/test</Path>\\n <Port>10</Port>\\n <Protocol>HTTP</Protocol>\\n <Query>quert</Query>\\n </RedirectConfig>\\n <RewriteConfig>\\n <Host>www.example.com</Host>\\n <Path>/tsdf</Path>\\n <Query>quedsa</Query>\\n </RewriteConfig>\\n <TrafficMirrorConfig>\\n <MirrorGroupConfig>\\n <ServerGroupTuples>\\n <ServerGroupId>srg-00mkgijak0w4qgz9****</ServerGroupId>\\n <Weight>2</Weight>\\n </ServerGroupTuples>\\n </MirrorGroupConfig>\\n </TrafficMirrorConfig>\\n <TrafficLimitConfig>\\n <QPS>4</QPS>\\n <PerIpQps>80</PerIpQps>\\n </TrafficLimitConfig>\\n <Type>ForwardGroup</Type>\\n <CorsConfig>\\n <AllowOrigin>http://test.com</AllowOrigin>\\n <AllowMethods>GET</AllowMethods>\\n <AllowHeaders>test_123</AllowHeaders>\\n <ExposeHeaders>test_123</ExposeHeaders>\\n <AllowCredentials>on</AllowCredentials>\\n <MaxAge>1000</MaxAge>\\n </CorsConfig>\\n </RuleActions>\\n <RuleConditions>\\n <CookieConfig>\\n <Values>\\n <Key>test</Key>\\n <Value>test</Value>\\n </Values>\\n </CookieConfig>\\n <HeaderConfig>\\n <Key>Port</Key>\\n <Values>5006</Values>\\n </HeaderConfig>\\n <HostConfig>\\n <Values>www.example.com</Values>\\n </HostConfig>\\n <MethodConfig>\\n <Values>PUT</Values>\\n </MethodConfig>\\n <PathConfig>\\n <Values>/test</Values>\\n </PathConfig>\\n <QueryStringConfig>\\n <Values>\\n <Key>test</Key>\\n <Value>test</Value>\\n </Values>\\n </QueryStringConfig>\\n <SourceIpConfig>\\n <Values>192.168.XX.XX/32</Values>\\n </SourceIpConfig>\\n <Type>Host</Type>\\n </RuleConditions>\\n <RuleId>rule-bpn0kn908w4nbw****</RuleId>\\n <RuleName>rule-instance-test</RuleName>\\n <RuleStatus>Available</RuleStatus>\\n </Rules>\\n <TotalCount>1000</TotalCount>\\n</ListRulesResponse>","errorExample":""}]',
+ 'title' => 'ListRules',
+ ],
+ 'AssociateAdditionalCertificatesWithListener' => [
+ 'summary' => 'Associates additional certificates with a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听Id',
+ 'description' => 'The listener ID. This parameter is supported only by HTTPS and QUIC listeners.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'Certificates',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '证书列表',
+ 'description' => 'The extended validation certificates that you want to add to the listener.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The additional certificate.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '证书Id',
+ 'description' => 'The ID of the certificate. Only server certificates are supported.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cert-123',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 15,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to add an additional certificate to an HTTPS or QUIC listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.DefaultCertificateUsed',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationFailed.DefaultCertificateNotFound',
+ 'errorMessage' => 'The operation failed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceAlreadyAssociated.Certificate',
+ 'errorMessage' => 'The specified resource %s is already associated.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerCertificatesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.HttpListenerNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'InvalidParameter',
+ 'errorMessage' => 'Invalid parameter, please check the parameter input.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified resource %s is configuring, please try again later.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication has failed for LoadBalancer.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Certificate',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","errorExample":""},{"type":"xml","example":"<AssociateAdditionalCertificatesWithListenerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</AssociateAdditionalCertificatesWithListenerResponse>","errorExample":""}]',
+ 'title' => 'AssociateAdditionalCertificatesWithListener',
+ 'description' => '**AssociateAdditionalCertificatesWithListener** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetListenerAttribute](~~2254865~~) operation to query the status of the task:'."\n"
+ ."\n"
+ .'* If the HTTPS or QUIC listener is in the **Associating** state, the additional certificates are being associated.'."\n"
+ .'* If the HTTPS or QUIC listener is in the **Associated** state, the additional certificates are associated.'."\n",
+ ],
+ 'DissociateAdditionalCertificatesFromListener' => [
+ 'summary' => 'Disassociates additional certificates from a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听Id',
+ 'description' => 'The listener ID. You must specify the ID of an HTTPS listener or a QUIC listener.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'Certificates',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '证书列表',
+ 'description' => 'The additional certificates. Only server certificates are supported. You can specify at most 20 certificates.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The additional certificate.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '证书Id',
+ 'description' => 'The certificate ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '12315790343_166f8204689_1714763408_70998****',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 15,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a **2xx HTTP** status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to disassociate additional certificates from an HTTPS or QUIC listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.HttpListenerNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.DefaultCertificateUsed',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotAssociated.Certificate',
+ 'errorMessage' => 'The specified resource %s is not associated.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.Listener',
+ 'errorMessage' => 'The specified resource of %s is being configured, please try again later.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B******\\"\\n}","errorExample":""},{"type":"xml","example":"<DissociateAdditionalCertificatesFromListenerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</DissociateAdditionalCertificatesFromListenerResponse>","errorExample":""}]',
+ 'title' => 'DissociateAdditionalCertificatesFromListener',
+ 'description' => '**DissociateAdditionalCertificatesFromListener** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListListenerCertificates](~~214354~~) operation to query the status of the task. - If an additional certificate is in the **Dissociating** state, the additional certificate is being disassociated. - If an additional certificate is in the **Dissociated** state, the additional certificate is disassociated.'."\n",
+ ],
+ 'ListListenerCertificates' => [
+ 'summary' => 'Queries the certificates that are associated with a listener, including additional certificates and the default certificate.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The number of entries to return in each call. Valid values: **1 to 100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '50',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听Id',
+ 'description' => 'The listener ID. You must specify the ID of an HTTPS listener or a QUIC listener.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'CertificateType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '证书类型',
+ 'description' => 'The type of the certificate. Valid values: **Ca** and **Server**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Server',
+ ],
+ ],
+ [
+ 'name' => 'CertificateIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '证书id列表',
+ 'description' => 'The certificates.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The certificate ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '103705******',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The maximum number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ 'Certificates' => [
+ 'title' => '监听SSL证书列表',
+ 'description' => 'The certificates.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The certificate.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'CertificateId' => [
+ 'title' => '证书Id',
+ 'description' => 'The certificate ID. Only server certificates are supported.'."\n",
+ 'type' => 'string',
+ 'example' => '12315790343_166f8204689_1714763408_70998****',
+ ],
+ 'IsDefault' => [
+ 'title' => '是否为默认证书',
+ 'description' => 'Indicates whether the certificate is the default certificate of the listener. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'Status' => [
+ 'title' => '证书状态',
+ 'description' => 'Indicates whether the certificate is associated with the listener. Valid values:'."\n"
+ ."\n"
+ .'* **Associating**'."\n"
+ .'* **Associated**'."\n"
+ .'* **Diassociating**'."\n",
+ 'type' => 'string',
+ 'example' => 'Associating',
+ ],
+ 'CertificateType' => [
+ 'title' => '证书类型',
+ 'description' => 'The type of the certificate.'."\n",
+ 'type' => 'string',
+ 'example' => 'Server',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationDenied.HttpListenerNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"TotalCount\\": 1000,\\n \\"Certificates\\": [\\n {\\n \\"CertificateId\\": \\"123157******\\",\\n \\"IsDefault\\": true,\\n \\"Status\\": \\"Associating\\",\\n \\"CertificateType\\": \\"Server\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListListenerCertificatesResponse>\\n <MaxResults>50</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <TotalCount>1000</TotalCount>\\n <Certificates>\\n <CertificateId>12315790343_166f8204689_1714763408_70998****</CertificateId>\\n <IsDefault>true</IsDefault>\\n <Status>Associating</Status>\\n <CertificateType>Server</CertificateType>\\n </Certificates>\\n</ListListenerCertificatesResponse>","errorExample":""}]',
+ 'title' => 'ListListenerCertificates',
+ ],
+ 'DetachCommonBandwidthPackageFromLoadBalancer' => [
+ 'summary' => 'Disassociates an Internet Shared Bandwidth instance from an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'title' => '幂等参数',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '地域ID',
+ 'description' => 'The region ID of the ALB instance.'."\n"
+ ."\n"
+ .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例ID',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-d676fho813rmu3****',
+ ],
+ ],
+ [
+ 'name' => 'BandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '带宽包ID',
+ 'description' => 'The EIP bandwidth plan ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cbwp-bp1pzf0ym72pu3y76****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '预校验',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '2EF39708-974B-5E74-AFF5-3445263035A8',
+ ],
+ 'JobId' => [
+ 'title' => '异步任务ID',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.CommonBandwidthPackage',
+ 'errorMessage' => 'The business status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.CommonBandwidthPackage',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2EF39708-974B-5E74-AFF5-344******\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\"\\n}","errorExample":""},{"type":"xml","example":"<DetachCommonBandwidthPackageFromLoadBalancerResponse>\\n <RequestId>2EF39708-974B-5E74-AFF5-3445263035A8</RequestId>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n</DetachCommonBandwidthPackageFromLoadBalancerResponse>","errorExample":""}]',
+ 'title' => 'DetachCommonBandwidthPackageFromLoadBalancer',
+ 'description' => '**DetachCommonBandwidthPackageFromLoadBalancer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetLoadBalancerAttribute](~~214359~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .'* If an ALB instance is in the **Configuring** state, the EIP bandwidth plan is being disassociated from the ALB instance.'."\n"
+ .'* If an ALB instance is in the **Active** state, the EIP bandwidth plan is disassociated from the ALB instance.'."\n",
+ ],
+ 'AttachCommonBandwidthPackageToLoadBalancer' => [
+ 'summary' => 'Associates an Internet Shared Bandwidth instance with an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbZBWWR9',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'title' => '幂等参数',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'RegionId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '地域ID',
+ 'description' => 'The region ID of the ALB instance.'."\n"
+ ."\n"
+ .'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cn-hangzhou',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例ID',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-d676fho813rmu3****',
+ ],
+ ],
+ [
+ 'name' => 'BandwidthPackageId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '带宽包ID',
+ 'description' => 'The EIP bandwidth plan ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'cbwp-bp1pzf0ym72pu3y76****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '2EF39708-974B-5E74-AFF5-3445263035A8',
+ ],
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectBusinessStatus.CommonBandwidthPackage',
+ 'errorMessage' => 'The business status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.CommonBandwidthPackage',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.CommonBandwidthPackage',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2EF39708-974B-5E74-AFF5-3445******\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\"\\n}","errorExample":""},{"type":"xml","example":"<AttachCommonBandwidthPackageToLoadBalancerResponse>\\n <RequestId>2EF39708-974B-5E74-AFF5-3445263035A8</RequestId>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n</AttachCommonBandwidthPackageToLoadBalancerResponse>","errorExample":""}]',
+ 'title' => 'AttachCommonBandwidthPackageToLoadBalancer',
+ 'description' => '**AttachCommonBandwidthPackageToLoadBalancer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [GetLoadBalancerAttribute](~~214362~~) to query the status of the task.'."\n"
+ ."\n"
+ .'* If the ALB instance is in the **Configuring** state, the EIP bandwidth plan is being associated with the ALB instance.'."\n"
+ .'* If the ALB instance is in the **Active** state, the EIP bandwidth plan is associated with the ALB instance.'."\n",
+ ],
+ 'DisableLoadBalancerAccessLog' => [
+ 'summary' => 'Disables the access log feature for a Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n"
+ ."\n"
+ .'* If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The SLB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lb-bp1b6c719dfa08ex*****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationDenied.AccessLogDisabled',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring.LoadBalancer',
+ 'errorMessage' => 'The specified resource of %s is being configured, please try again later.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource of %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\"\\n}","errorExample":""},{"type":"xml","example":"<DisableLoadBalancerAccessLogResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</DisableLoadBalancerAccessLogResponse>","errorExample":""}]',
+ 'title' => 'DisableLoadBalancerAccessLog',
+ ],
+ 'EnableLoadBalancerAccessLog' => [
+ 'summary' => 'Enables the access log feature for an Application Load Balancer (ALB) instance.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'abilityTreeCode' => '205',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb4A6LP3',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '实例id',
+ 'description' => 'The ALB instance ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-bd6oylbckp6k9x****',
+ ],
+ ],
+ [
+ 'name' => 'LogProject',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '日志Project',
+ 'description' => 'The project to which the access log is shipped.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sls-setter',
+ ],
+ ],
+ [
+ 'name' => 'LogStore',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '日志Store',
+ 'description' => 'The Logstore to which the access log is shipped.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FD******',
+ ],
+ 'JobId' => [
+ 'title' => 'jobId of the request',
+ 'description' => 'The ID of the asynchronous job.'."\n",
+ 'type' => 'string',
+ 'example' => 'ff7713ca-5818-4120-85e3-0bf9fr******',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationDenied.AccessLogEnabled',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.LoadBalancer',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0******\\",\\n \\"JobId\\": \\"ff7713ca-5818-4120-85e3-0bf9******\\"\\n}","errorExample":""},{"type":"xml","example":"<EnableLoadBalancerAccessLogResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</EnableLoadBalancerAccessLogResponse>","errorExample":""}]',
+ 'title' => 'EnableLoadBalancerAccessLog',
+ ],
+ 'CreateHealthCheckTemplate' => [
+ 'summary' => 'Creates a health check template in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'readAndWrite',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'abilityTreeCode' => '149',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb6RAQIN',
+ ],
+ 'tenantRelevance' => 'publicInformation',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'title' => '幂等参数',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckTemplateName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '名称',
+ 'description' => 'The name of the health check template.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'HealthCheckTemplate1',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckConnectPort',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '端口号',
+ 'description' => 'The port that is used for health checks.'."\n"
+ ."\n"
+ .'Valid values: **0 to 65535**.'."\n"
+ ."\n"
+ .'Default value: **0**. If you set the value to 0, the port of a backend server is used for health checks.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckHost',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '域名',
+ 'description' => 'The domain name that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **$SERVER_IP**: the private IP addresses of backend servers. If an IP address is specified, or this parameter is not specified, the ALB instance uses the private IP addresses of backend servers as domain names for health checks.'."\n"
+ .'* **domain**: The domain name must be 1 to 80 characters in length, and can contain letters, digits, periods (.), and hyphens (-).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if `HealthCheckProtocol` is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '$_ip',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckCodes',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '状态码',
+ 'description' => 'The HTTP status codes that indicate a healthy backend server.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP status code that indicates a healthy backend server.'."\n"
+ ."\n"
+ .'* If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, or **http\\_5xx**. Separate multiple status codes with commas (,).'."\n"
+ .'* If **HealthCheckProtocol** is set to **gRPC**, the valid values of **HealthCheckCodes** are from **0 to 99**. The default value is **0**. Value ranges are supported. You can enter at most 20 value ranges. Separate multiple value ranges with commas (,).'."\n"
+ ."\n"
+ .'> This parameter is available only if **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'http_2xx,http_3xx',
+ ],
+ 'required' => false,
+ 'example' => '5',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckInterval',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '时间间隔',
+ 'description' => 'The interval at which health checks are performed.'."\n"
+ ."\n"
+ .'Valid values: **1 to 50**.'."\n"
+ ."\n"
+ .'Default value: **2**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '2',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckTimeout',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period of a health check response. If a backend server does not respond within the specified timeout period, the backend server is declared unhealthy.'."\n"
+ ."\n"
+ .'Valid values: **1 to 300**. Unit: seconds.'."\n"
+ ."\n"
+ .'Default value: **5**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '5',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckPath',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'uri',
+ 'description' => 'The URL that is used for health checks.'."\n"
+ ."\n"
+ .'The URL must be 1 to 80 characters in length, and can contain letters, digits, the following special characters: - / . % ? # &, and the following extended characters: `_ ; ~ ! ( ) * [ ] @ $ ^ : \' , +`. The URL must start with a forward slash (/).'."\n"
+ ."\n"
+ .'> This parameter is available only if `HealthCheckProtocol` is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test/index.html',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckMethod',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '方法',
+ 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HEAD** (default): By default, HTTP and HTTPS health checks use the HEAD method.'."\n"
+ .'* **POST**: gRPC health checks use the POST method by default.'."\n"
+ .'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
+ ."\n"
+ .'> This parameter is available only if **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HEAD',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckProtocol',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '协议',
+ 'description' => 'The protocol that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP** (default): HTTP health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers.'."\n"
+ .'* **HTTPS**: The ALB instance sends HEAD or GET requests, which simulate browser requests, to check whether the backend server is healthy. HTTPS supports encryption and provides higher security than HTTP.'."\n"
+ .'* **TCP**: TCP health checks send TCP SYN packets to a backend server to check whether the port of the backend server is reachable.'."\n"
+ .'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to check whether the backend server is healthy.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckHttpVersion',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '版本',
+ 'description' => 'The HTTP version for health checks.'."\n"
+ ."\n"
+ .'Valid values: **HTTP 1.0** and **HTTP 1.1**.'."\n"
+ ."\n"
+ .'Default value: **HTTP 1.1**.'."\n"
+ ."\n"
+ .'> This parameter is available only if `HealthCheckProtocol` is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP 1.0',
+ ],
+ ],
+ [
+ 'name' => 'HealthyThreshold',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '健康阈值',
+ 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health status is changed from **fail** to **success**.'."\n"
+ ."\n"
+ .'Valid values: **2 to 10**.'."\n"
+ ."\n"
+ .'Default value: **3**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '4',
+ ],
+ ],
+ [
+ 'name' => 'UnhealthyThreshold',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '不健康阈值',
+ 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health status is changed from **success** to **fail**.'."\n"
+ ."\n"
+ .'Valid values: **2 to 10**.'."\n"
+ ."\n"
+ .'Default value: **3**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '4',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a **2xx** HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The resource group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The health check template.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckTemplateId' => [
+ 'title' => '健康检查模板ID',
+ 'description' => 'The ID of the health check template.'."\n",
+ 'type' => 'string',
+ 'example' => 'hct-1224334',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'QuotaExceeded.HealthCheckTemplatesNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.HealthCheckTemplate',
+ 'errorMessage' => 'Authentication has failed for HealthCheckTemplate.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"HealthCheckTemplateId\\": \\"hct-pno8sisi******\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34******\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateHealthCheckTemplateResponse>\\n <HealthCheckTemplateId>hct-1224334</HealthCheckTemplateId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</CreateHealthCheckTemplateResponse>","errorExample":""}]',
+ 'title' => 'CreateHealthCheckTemplate',
+ ],
+ 'GetHealthCheckTemplateAttribute' => [
+ 'summary' => 'Queries the details about a health check template.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '160',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb6RAQIN',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'HealthCheckTemplateId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '健康检查模板Id',
+ 'description' => 'The ID of the health check template.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'hct-x4jazoyi6tvsq9****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckConnectPort' => [
+ 'title' => '端口',
+ 'description' => 'The port that is used for health checks.'."\n"
+ ."\n"
+ .'Valid values: **0** to **65535**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ 'HealthCheckHost' => [
+ 'title' => '域名',
+ 'description' => 'The domain name that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **$SERVER_IP**: the private IP addresses of backend servers. If an IP address is specified, or this parameter is not specified, the ALB instance uses the private IP addresses of backend servers as domain names for health checks.'."\n"
+ .'* **domain**: The domain name must be 1 to 80 characters in length, and can contain letters, digits, periods (.), and hyphens (-).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if `HealthCheckProtocol` is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'example' => '$SERVER_IP',
+ ],
+ 'HealthCheckCodes' => [
+ 'title' => '状态码',
+ 'description' => 'The HTTP status codes that indicate a healthy backend server.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP status code that indicates a healthy backend server.'."\n"
+ ."\n"
+ .'* If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, or **http\\_5xx**. Separate multiple status codes with commas (,).'."\n"
+ .'* If **HealthCheckProtocol** is set to **gRPC**, the valid values of **HealthCheckCodes** are from **0 to 99**. The default value is **0**. Value ranges are supported. You can enter at most 20 value ranges. Separate multiple value ranges with commas (,).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'example' => 'http_2xx,http_3xx',
+ ],
+ ],
+ 'HealthCheckHttpVersion' => [
+ 'title' => '版本',
+ 'description' => 'The HTTP version for health checks.'."\n"
+ ."\n"
+ .'Valid values: **HTTP1.0** and **HTTP1.1**.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set `HealthCheckProtocol` to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP1.0',
+ ],
+ 'HealthCheckTemplateId' => [
+ 'title' => '健康检查模板Id',
+ 'description' => 'The ID of the health check template.'."\n",
+ 'type' => 'string',
+ 'example' => 'hct-x4jazoyi6tvsq9****',
+ ],
+ 'HealthCheckInterval' => [
+ 'title' => '间隔时间',
+ 'description' => 'The interval at which health checks are performed. Unit: seconds. Valid values: **1 to 50**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '3',
+ ],
+ 'HealthCheckMethod' => [
+ 'title' => '方法',
+ 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HEAD** (default): By default, HTTP and HTTPS health checks use the HEAD method.'."\n"
+ .'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
+ .'* **POST**: gRPC health checks use the POST method by default.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'example' => 'GET',
+ ],
+ 'HealthCheckPath' => [
+ 'title' => 'uri',
+ 'description' => 'The URL that is used for health checks.'."\n"
+ ."\n"
+ .'The URL must be 1 to 80 characters in length, and can contain letters, digits, the following special characters: - / . % ? # &, and the following extended characters: `_ ; ~ ! ( ) * [ ] @ $ ^ : \' , +`. The URL must start with a forward slash (/).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'example' => '/test/index.html',
+ ],
+ 'HealthCheckProtocol' => [
+ 'title' => '协议',
+ 'description' => 'The protocol that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP** (default): HTTP health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers.'."\n"
+ .'* **HTTPS**: The ALB instance sends HEAD or GET requests, which simulate browser requests, to check whether the backend server is healthy. HTTPS supports encryption and provides higher security than HTTP.'."\n"
+ .'* **TCP**: TCP health checks send TCP SYN packets to a backend server to probe the availability of backend servers.'."\n"
+ .'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to probe the availability of backend servers.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP',
+ ],
+ 'HealthCheckTemplateName' => [
+ 'title' => '名称',
+ 'description' => 'The name of the health check template.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'example' => 'HealthCheckTemplate1',
+ ],
+ 'HealthCheckTimeout' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period of a health check response. If a backend server does not respond within the specified timeout period, the backend server is declared unhealthy. Unit: seconds.'."\n"
+ ."\n"
+ .'Valid values: **1** to **300**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '200',
+ ],
+ 'HealthyThreshold' => [
+ 'title' => '健康阈值',
+ 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health status is changed from **fail** to **success**.'."\n"
+ ."\n"
+ .'Valid values: **2** to **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '5',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'DB1AFC33-DAE8-528E-AA4D-4A6AABE71945',
+ ],
+ 'UnhealthyThreshold' => [
+ 'title' => '不健康阈值',
+ 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health status is changed from **success** to **fail**.'."\n"
+ ."\n"
+ .'Valid values: **2** to **10**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '5',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n",
+ 'type' => 'string',
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length, and cannot start with `acs:`. The tag value cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'example' => 'product',
+ ],
+ ],
+ ],
+ ],
+ 'ResourceGroupId' => [
+ 'description' => 'The resource group ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.HealthCheckTemplate',
+ 'errorMessage' => 'Authentication has failed for HealthCheckTemplate.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.HealthCheckTemplate',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckHost\\": \\"$SERVER_IP\\",\\n \\"HealthCheckCodes\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckHttpVersion\\": \\"HTTP1.0\\",\\n \\"HealthCheckTemplateId\\": \\"hct-x4jazoyi6tvsq9****\\",\\n \\"HealthCheckInterval\\": 3,\\n \\"HealthCheckMethod\\": \\"GET\\",\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"HTTP\\",\\n \\"HealthCheckTemplateName\\": \\"HealthCheckTemplate1\\",\\n \\"HealthCheckTimeout\\": 200,\\n \\"HealthyThreshold\\": 5,\\n \\"RequestId\\": \\"DB1AFC33-DAE8-528E-AA4D-4A6A******\\",\\n \\"UnhealthyThreshold\\": 5,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\"\\n}","errorExample":""},{"type":"xml","example":"<GetHealthCheckTemplateAttributeResponse>\\n <HealthCheckConnectPort>80</HealthCheckConnectPort>\\n <HealthCheckHost>$SERVER_IP</HealthCheckHost>\\n <HealthCheckCodes>http_2xx,http_3xx</HealthCheckCodes>\\n <HealthCheckHttpVersion>HTTP1.0</HealthCheckHttpVersion>\\n <HealthCheckTemplateId>hct-x4jazoyi6tvsq9****</HealthCheckTemplateId>\\n <HealthCheckInterval>3</HealthCheckInterval>\\n <HealthCheckMethod>GET</HealthCheckMethod>\\n <HealthCheckPath>/test/index.html</HealthCheckPath>\\n <HealthCheckProtocol>HTTP</HealthCheckProtocol>\\n <HealthCheckTemplateName>HealthCheckTemplate1</HealthCheckTemplateName>\\n <HealthCheckTimeout>200</HealthCheckTimeout>\\n <HealthyThreshold>5</HealthyThreshold>\\n <RequestId>DB1AFC33-DAE8-528E-AA4D-4A6AABE71945</RequestId>\\n <UnhealthyThreshold>5</UnhealthyThreshold>\\n</GetHealthCheckTemplateAttributeResponse>","errorExample":""}]',
+ 'title' => 'GetHealthCheckTemplateAttribute',
+ ],
+ 'DeleteHealthCheckTemplates' => [
+ 'summary' => 'Deletes health check templates.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'HealthCheckTemplateIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '健康检查模板Id列表',
+ 'description' => 'The IDs of health check templates. You can specify at most 10 IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'Delete specified health check templates.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'hct-bp1qjwo61pqz3ahltv****',
+ ],
+ 'required' => true,
+ 'example' => 'acl-123',
+ 'maxItems' => 10,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the value, but you must ensure that the value is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a **2xx HTTP** status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The health check templates deleted.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.HealthCheckTemplate',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteHealthCheckTemplatesResponse>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</DeleteHealthCheckTemplatesResponse>","errorExample":""}]',
+ 'title' => 'DeleteHealthCheckTemplates',
+ ],
+ 'UpdateHealthCheckTemplateAttribute' => [
+ 'summary' => 'Modifies the attributes, such as the name and protocol, of a health check template.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ [
+ 'PrivateKey' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'title' => '幂等参数',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckTemplateName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '名称',
+ 'description' => 'The name of the health check template.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HealthCheckTemplate1',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckConnectPort',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '端口号',
+ 'description' => 'The port that is used for health checks. Valid values: **0 to 65535**. Default value: **0**. This value indicates that the port of a backend server is used for health checks.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '80',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckHost',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '域名',
+ 'description' => 'The domain name that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **$SERVER_IP** (default): the private IP address of a backend server. If an IP address is specified, or this parameter is not specified, the ALB instance uses the private IP addresses of backend servers as domain names for health checks.'."\n"
+ .'* **domain**: The domain name must be 1 to 80 characters in length, and can contain letters, digits, periods (.), and hyphens (-).'."\n"
+ ."\n"
+ .'> This parameter is available only if `HealthCheckProtocol` is set to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '$_ip',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckCodes',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '状态码',
+ 'description' => 'The HTTP status codes that indicate a healthy backend server.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP status code that indicates a healthy backend server.'."\n"
+ ."\n"
+ .'* If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, or **http\\_5xx**. Separate multiple status codes with commas (,).'."\n"
+ .'* If **HealthCheckProtocol** is set to **gRPC**, the valid values of **HealthCheckCodes** are from **0 to 99**. The default value is **0**. Value ranges are supported. You can enter at most 20 value ranges. Separate multiple value ranges with commas (,).'."\n"
+ ."\n"
+ .'> This parameter is available only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'http_2xx,http_3xx',
+ ],
+ 'required' => false,
+ 'example' => '5',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckInterval',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '时间间隔',
+ 'description' => 'The interval at which health checks are performed. Unit: seconds. Valid values: **1 to 50**. Default value: **2**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '5',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckTimeout',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period of a health check response. If a backend server does not respond within the specified timeout period, the backend server is declared unhealthy.'."\n"
+ ."\n"
+ .'Unit: seconds. Valid values: **1 to 300**. Default value: **5**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '300',
+ 'minimum' => '1',
+ 'example' => '3',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckPath',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'uri',
+ 'description' => 'The URL that is used for health checks.'."\n"
+ ."\n"
+ .'The URL must be 1 to 80 characters in length and can contain letters, digits, hyphens (-), forward slashes (/), periods (.), percent signs (%), question marks (?), number signs (#), ampersands (&), and the following extended character sets: `_ ; ~ ! ( ) * [ ] @ $ ^ : \' , +`.'."\n"
+ ."\n"
+ .'The URL must start with a forward slash (/).'."\n"
+ ."\n"
+ .'> This parameter is available only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '/test/index.html',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckMethod',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '方法',
+ 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HEAD** (default): By default, HTTP and HTTPS health checks use the HEAD method.'."\n"
+ .'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
+ .'* **POST**: gRPC health checks use the POST method by default.'."\n"
+ ."\n"
+ .'> This parameter is available only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HEAD',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckProtocol',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '协议',
+ 'description' => 'The protocol that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP** (default): HTTP health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers.'."\n"
+ .'* **HTTPS**: The ALB instance sends HEAD or GET requests, which simulate browser requests, to check whether the backend server is healthy. HTTPS supports encryption and provides higher security than HTTP.'."\n"
+ .'* **TCP**: TCP health checks send TCP SYN packets to a backend server to check whether the port of the backend server is reachable.'."\n"
+ .'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to check whether the backend server is healthy.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckHttpVersion',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '版本',
+ 'description' => 'The HTTP version that is used for health checks.'."\n"
+ ."\n"
+ .'Valid values: **HTTP1.0** and **HTTP1.1**.'."\n"
+ ."\n"
+ .'Default value: **HTTP1.1**.'."\n"
+ ."\n"
+ .'> This parameter is available only if you set `HealthCheckProtocol` to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'HTTP1.0',
+ ],
+ ],
+ [
+ 'name' => 'HealthyThreshold',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '健康阈值',
+ 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health status is changed from **fail** to **success**.'."\n"
+ ."\n"
+ .'Valid values: **2 to 10**.'."\n"
+ ."\n"
+ .'Default value: **3**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '4',
+ ],
+ ],
+ [
+ 'name' => 'UnhealthyThreshold',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '不健康阈值',
+ 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health status is changed from **success** to **fail**.'."\n"
+ ."\n"
+ .'Valid values: **2 to 10**.'."\n"
+ ."\n"
+ .'Default value: **3**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '4',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a **2xx** HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckTemplateId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '健康检查模板ID',
+ 'description' => 'The template ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'hct-bp1qjwo61pqz3ahltv0mw',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.HealthCheckTemplate',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.HealthCheckTemplate',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.HealthCheckTemplate',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateHealthCheckTemplateAttributeResponse>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</UpdateHealthCheckTemplateAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateHealthCheckTemplateAttribute',
+ ],
+ 'ListHealthCheckTemplates' => [
+ 'summary' => 'Queries health check templates in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ 'abilityTreeCode' => '151',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb6RAQIN',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The number of entries to return in each call. Valid values: **1** to **100**. Default value: **20**'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '50',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckTemplateIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '健康检查模板ID列表',
+ 'description' => 'The IDs of health check templates.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The IDs of health check templates. You can specify up to 20 IDs in each call. The results are filtered based on the specified IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'hct-bp1qjwo61pqz3ahltv****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'HealthCheckTemplateNames',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '健康检查模板名称列表',
+ 'description' => 'The health check templates.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The names of health check templates. You can specify up to 10 names in each call. The results are filtered based on the specified names.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => 'The resource group ID. You can filter the query results based on the specified ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The information about the health check templates.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckTemplates' => [
+ 'title' => '健康检查模板',
+ 'description' => 'The health check templates.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the health check template.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'HealthCheckConnectPort' => [
+ 'title' => '端口',
+ 'description' => 'The port that is used for health checks.'."\n"
+ ."\n"
+ .'Valid values: \\*\\* 0 to 65535\\*\\*.'."\n"
+ ."\n"
+ .'The default value is **0**, which specifies that the port of a backend server is used for health checks.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ 'HealthCheckHost' => [
+ 'title' => '域名',
+ 'description' => 'The domain name that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **$SERVER_IP** (default): the private IP address of a backend server. If an IP address is specified, or this parameter is not specified, the ALB instance uses the private IP address of each backend server as the domain name for health checks.'."\n"
+ .'* **domain**: The domain name must be 1 to 80 characters in length, and can contain letters, digits, periods (.), and hyphens (-).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set `HealthCheckProtocol` to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'example' => '$_ip',
+ ],
+ 'HealthCheckCodes' => [
+ 'title' => '状态码',
+ 'description' => 'The HTTP status codes that indicate healthy backend servers.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The HTTP status code that indicates healthy backend servers.'."\n"
+ ."\n"
+ .'* If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, or **http\\_5xx**. Separate multiple status codes with commas (,).'."\n"
+ .'* If **HealthCheckProtocol** is set to **gRPC**, the valid values of **HealthCheckCodes** are from **0 to 99**. The default value is **0**. Value ranges are supported. You can enter at most 20 value ranges. Separate multiple value ranges with commas (,).'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'example' => 'http_2xx,http_3xx',
+ ],
+ ],
+ 'HealthCheckHttpVersion' => [
+ 'title' => '版本',
+ 'description' => 'The HTTP version for health checks.'."\n"
+ ."\n"
+ .'Valid values: **HTTP 1.0** and **HTTP 1.1**.'."\n"
+ ."\n"
+ .'Default value: **HTTP 1.1**.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set `HealthCheckProtocol` to **HTTP** or **HTTPS**.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP 1.0',
+ ],
+ 'HealthCheckInterval' => [
+ 'title' => '间隔时间',
+ 'description' => 'The interval at which health checks are performed. Unit: seconds. Valid values: **1 to 50**. Default value: **2**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '5',
+ ],
+ 'HealthCheckMethod' => [
+ 'title' => '方法',
+ 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HEAD** (default): By default, HTTP and HTTPS health checks use the HEAD method.'."\n"
+ .'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
+ .'* **POST**: gRPC health checks use the POST method by default.'."\n"
+ ."\n"
+ .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n",
+ 'type' => 'string',
+ 'example' => 'HEAD',
+ ],
+ 'HealthCheckPath' => [
+ 'title' => 'uri',
+ 'description' => 'The URL path that you want to use for health checks.'."\n"
+ ."\n"
+ .'The URL must be 1 to 80 characters in length, and can contain letters, digits, the following special characters: - / . % ? # &, and the following extended characters: `_ ; ~ ! ( ) * [ ] @ $ ^ : \' , +`. The URL must start with a forward slash (/).'."\n",
+ 'type' => 'string',
+ 'example' => '/test/index.html',
+ ],
+ 'HealthCheckProtocol' => [
+ 'title' => '协议',
+ 'description' => 'The protocol that is used for health checks. Valid values:'."\n"
+ ."\n"
+ .'* **HTTP** (default): The ALB instance sends HEAD or GET requests, which simulate browser requests, to check whether the backend server is healthy.'."\n"
+ .'* **HTTPS**: HTTPS health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers. HTTPS provides higher security because HTTPS supports data encryption.'."\n"
+ .'* **TCP**: TCP health checks send TCP SYN packets to a backend server to check whether the port of the backend server is reachable.'."\n"
+ .'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to check whether the backend server is healthy.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTP',
+ ],
+ 'HealthCheckTemplateId' => [
+ 'title' => '健康检查模板Id',
+ 'description' => 'The ID of the health check template.'."\n",
+ 'type' => 'string',
+ 'example' => 'hct-bp1qjwo61pqz3ahltv****',
+ ],
+ 'HealthCheckTemplateName' => [
+ 'title' => '名称',
+ 'description' => 'The name of the health check template.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 character characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n",
+ 'type' => 'string',
+ 'example' => 'HealthCheckTemplate1',
+ ],
+ 'HealthCheckTimeout' => [
+ 'title' => '超时时间',
+ 'description' => 'The timeout period of a health check response. If a backend Elastic Compute Service (ECS) instance does not respond within the specified timeout period, the ECS instance fails to pass the health check.'."\n"
+ ."\n"
+ .'Valid values: **1 to 300**. Unit: seconds.'."\n"
+ ."\n"
+ .'Default value: **5**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '3',
+ ],
+ 'HealthyThreshold' => [
+ 'title' => '健康阈值',
+ 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health status changes from **fail** to **success**.'."\n"
+ ."\n"
+ .'Valid values: **2 to 10**.'."\n"
+ ."\n"
+ .'Default value: **3**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '4',
+ ],
+ 'UnhealthyThreshold' => [
+ 'title' => '不健康阈值',
+ 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health status changes from **success** to **fail**.'."\n"
+ ."\n"
+ .'Valid values: **2 to 10**.'."\n"
+ ."\n"
+ .'Default value: **3**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '4',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n",
+ 'type' => 'string',
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `acs:` or `aliyun`.'."\n",
+ 'type' => 'string',
+ 'example' => 'product',
+ ],
+ ],
+ ],
+ ],
+ 'ResourceGroupId' => [
+ 'description' => 'The resource group ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ ],
+ ],
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The number of entries returned per page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The returned value of NextToken is a pagination token, which can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value of **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.HealthCheckTemplate',
+ 'errorMessage' => 'Authentication has failed for HealthCheckTemplate.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"HealthCheckTemplates\\": [\\n {\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckHost\\": \\"$SERVER_IP\\",\\n \\"HealthCheckCodes\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckHttpVersion\\": \\"HTTP 1.0\\",\\n \\"HealthCheckInterval\\": 5,\\n \\"HealthCheckMethod\\": \\"HEAD\\",\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"HTTP\\",\\n \\"HealthCheckTemplateId\\": \\"hct-bp1qjwo61pqz3ahltv****\\",\\n \\"HealthCheckTemplateName\\": \\"HealthCheckTemplate1\\",\\n \\"HealthCheckTimeout\\": 3,\\n \\"HealthyThreshold\\": 4,\\n \\"UnhealthyThreshold\\": 4,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\"\\n }\\n ],\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"<ListHealthCheckTemplatesResponse>\\n <HealthCheckTemplates>\\n <HealthCheckConnectPort>80</HealthCheckConnectPort>\\n <HealthCheckHost>$_ip</HealthCheckHost>\\n <HealthCheckCodes>http_2xx,http_3xx</HealthCheckCodes>\\n <HealthCheckHttpVersion>HTTP 1.0</HealthCheckHttpVersion>\\n <HealthCheckInterval>5</HealthCheckInterval>\\n <HealthCheckMethod>HEAD</HealthCheckMethod>\\n <HealthCheckPath>/test/index.html</HealthCheckPath>\\n <HealthCheckProtocol>HTTP</HealthCheckProtocol>\\n <HealthCheckTemplateId>hct-bp1qjwo61pqz3ahltv****</HealthCheckTemplateId>\\n <HealthCheckTemplateName>HealthCheckTemplate1</HealthCheckTemplateName>\\n <HealthCheckTimeout>3</HealthCheckTimeout>\\n <HealthyThreshold>4</HealthyThreshold>\\n <UnhealthyThreshold>4</UnhealthyThreshold>\\n </HealthCheckTemplates>\\n <MaxResults>50</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <TotalCount>1000</TotalCount>\\n</ListHealthCheckTemplatesResponse>","errorExample":""}]',
+ 'title' => 'ListHealthCheckTemplates',
+ ],
+ 'ApplyHealthCheckTemplateToServerGroup' => [
+ 'summary' => 'Applies a health check template to a server group.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'HealthCheckTemplateId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '健康检查模板Id',
+ 'description' => 'The template ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'hct-bp1qjwo61pqz3ahltv****',
+ ],
+ ],
+ [
+ 'name' => 'ServerGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '服务器组Id',
+ 'description' => 'The server group ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'sgp-n80wyad08u0tox****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '123e4567-e89b-12d3-a456-426655440000',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The server group to which the template is applied.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.HealthCheckTemplate',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.ServerGroup',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.ServerGroup',
+ 'errorMessage' => 'Authentication has failed for ServerGroup.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.HealthCheckTemplate',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\"\\n}","errorExample":""},{"type":"xml","example":"<ApplyHealthCheckTemplateToServerGroupResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</ApplyHealthCheckTemplateToServerGroupResponse>","errorExample":""}]',
+ 'title' => 'ApplyHealthCheckTemplateToServerGroup',
+ ],
+ 'CreateSecurityPolicy' => [
+ 'summary' => 'Creates a custom security policy in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'abilityTreeCode' => '172',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbAYSA83',
+ ],
+ 'tenantRelevance' => 'publicInformation',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'TLSVersions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'tls版本',
+ 'description' => 'The supported Transport Layer Security (TLS) protocol versions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported TLS protocol version. Valid values: **TLSv1.0**, **TLSv1.1**, **TLSv1.2**, and **TLSv1.3**.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'TLSv1.0',
+ ],
+ 'required' => true,
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组id',
+ 'description' => 'The resource group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'SecurityPolicyName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '安全策略名称',
+ 'description' => 'The name of the security policy.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'test-secrity',
+ ],
+ ],
+ [
+ 'name' => 'Ciphers',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '加密套件',
+ 'description' => 'The supported cipher suites.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported cipher suites are determined by the value of **TLSVersions**.'."\n"
+ ."\n"
+ .'The specified cipher suites must be supported by at least one TLS protocol version that you specify.****'."\n"
+ ."\n"
+ .'> For example, if you set the TLSVersions parameter to TLSv1.3, you must specify cipher suites that are supported by TLS 1.3.'."\n"
+ ."\n"
+ .'* TLSv1.0 and TLSv1.1 support the following cipher suites:'."\n"
+ ."\n"
+ .' * ECDHE-ECDSA-AES128-SHA'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA'."\n"
+ .' * ECDHE-RSA-AES128-SHA'."\n"
+ .' * ECDHE-RSA-AES256-SHA'."\n"
+ .' * AES128-SHA'."\n"
+ .' * AES256-SHA'."\n"
+ .' * DES-CBC3-SHA'."\n"
+ ."\n"
+ .'* TLSv1.2 supports the following cipher suites:'."\n"
+ ."\n"
+ .' * ECDHE-ECDSA-AES128-SHA'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA'."\n"
+ .' * ECDHE-RSA-AES128-SHA'."\n"
+ .' * ECDHE-RSA-AES256-SHA'."\n"
+ .' * AES128-SHA'."\n"
+ .' * AES256-SHA'."\n"
+ .' * DES-CBC3-SHA'."\n"
+ .' * ECDHE-ECDSA-AES128-GCM-SHA256'."\n"
+ .' * ECDHE-ECDSA-AES256-GCM-SHA384'."\n"
+ .' * ECDHE-ECDSA-AES128-SHA256'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA384'."\n"
+ .' * ECDHE-RSA-AES128-GCM-SHA256'."\n"
+ .' * ECDHE-RSA-AES256-GCM-SHA384'."\n"
+ .' * ECDHE-RSA-AES128-SHA256'."\n"
+ .' * ECDHE-RSA-AES256-SHA384'."\n"
+ .' * AES128-GCM-SHA256'."\n"
+ .' * AES256-GCM-SHA384'."\n"
+ .' * AES128-SHA256'."\n"
+ .' * AES256-SHA256'."\n"
+ ."\n"
+ .'* TLSv1.3 supports the following cipher suites:'."\n"
+ ."\n"
+ .' * TLS_AES\\_128\\_GCM_SHA256'."\n"
+ .' * TLS_AES\\_256\\_GCM_SHA384'."\n"
+ .' * TLS_CHACHA20\\_POLY1305\\_SHA256'."\n"
+ .' * TLS_AES\\_128\\_CCM_SHA256'."\n"
+ .' * TLS_AES\\_128\\_CCM\\_8\\_SHA256'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => ' ECDHE-ECDSA-AES128-SHA',
+ ],
+ 'required' => true,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'SecurityPolicyId' => [
+ 'title' => '安全策略id',
+ 'description' => 'The security policy ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'scp-bp1bpn0kn9****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'QuotaExceeded.SecurityPoliciesNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0******\\",\\n \\"SecurityPolicyId\\": \\"sp-9cdjz6o8ha70******\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateSecurityPolicyResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <SecurityPolicyId>scp-bp1bpn0kn9****</SecurityPolicyId>\\n</CreateSecurityPolicyResponse>","errorExample":""}]',
+ 'title' => 'CreateSecurityPolicy',
+ ],
+ 'DeleteSecurityPolicy' => [
+ 'summary' => 'Deletes a custom security policy.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'SecurityPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '安全策略Id',
+ 'description' => 'The security policy ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'spy-n0kn923****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.SecurityPolicy',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInUse.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is in use.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.SecurityPolicy',
+ 'errorMessage' => 'Authentication has failed for SecurityPolicy.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteSecurityPolicyResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</DeleteSecurityPolicyResponse>","errorExample":""}]',
+ 'title' => 'DeleteSecurityPolicy',
+ ],
+ 'UpdateSecurityPolicyAttribute' => [
+ 'summary' => 'Updates the attributes of a security policy, such as the TLS protocol version and the supported cipher suites.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'SecurityPolicyId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '安全策略id',
+ 'description' => 'The security policy ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'spy-n0kn923****',
+ ],
+ ],
+ [
+ 'name' => 'TLSVersions',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => 'TLS版本',
+ 'description' => 'The supported TLS protocol versions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported TLS protocol version. Valid values: **TLSv1.0**, **TLSv1.1**, **TLSv1.2**, and **TLSv1.3**. You can specify up to four TLS protocol versions.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'TLSv1.0',
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'Ciphers',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '加密套件',
+ 'description' => 'The supported cipher suites.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported cipher suites are determined by the value of **TLSVersions**. You can specify at most 32 cipher suites.'."\n"
+ ."\n"
+ .'The specified cipher suites must be supported by at least one TLS protocol version that you specify.'."\n"
+ ."\n"
+ .'> For example, if you set the TLSVersions parameter to TLSv1.3, you must specify cipher suites that are supported by TLS 1.3.'."\n"
+ ."\n"
+ .'* TLSv1.0 and TLSv1.1 support the following cipher suites:'."\n"
+ ."\n"
+ .' * ECDHE-ECDSA-AES128-SHA'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA'."\n"
+ .' * ECDHE-RSA-AES128-SHA'."\n"
+ .' * ECDHE-RSA-AES256-SHA'."\n"
+ .' * AES128-SHA'."\n"
+ .' * AES256-SHA'."\n"
+ .' * DES-CBC3-SHA'."\n"
+ ."\n"
+ .'* TLSv1.2 supports the following cipher suites:'."\n"
+ ."\n"
+ .' * ECDHE-ECDSA-AES128-SHA'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA'."\n"
+ .' * ECDHE-RSA-AES128-SHA'."\n"
+ .' * ECDHE-RSA-AES256-SHA'."\n"
+ .' * AES128-SHA'."\n"
+ .' * AES256-SHA'."\n"
+ .' * DES-CBC3-SHA'."\n"
+ .' * ECDHE-ECDSA-AES128-GCM-SHA256'."\n"
+ .' * ECDHE-ECDSA-AES256-GCM-SHA384'."\n"
+ .' * ECDHE-ECDSA-AES128-SHA256'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA384'."\n"
+ .' * ECDHE-RSA-AES128-GCM-SHA256'."\n"
+ .' * ECDHE-RSA-AES256-GCM-SHA384'."\n"
+ .' * ECDHE-RSA-AES128-SHA256'."\n"
+ .' * ECDHE-RSA-AES256-SHA384'."\n"
+ .' * AES128-GCM-SHA256'."\n"
+ .' * AES256-GCM-SHA384'."\n"
+ .' * AES128-SHA256'."\n"
+ .' * AES256-SHA256'."\n"
+ ."\n"
+ .'* TLSv1.3 supports the following cipher suites:'."\n"
+ ."\n"
+ .' * TLS_AES\\_128\\_GCM_SHA256'."\n"
+ .' * TLS_AES\\_256\\_GCM_SHA384'."\n"
+ .' * TLS_CHACHA20\\_POLY1305\\_SHA256'."\n"
+ .' * TLS_AES\\_128\\_CCM_SHA256'."\n"
+ .' * TLS_AES\\_128\\_CCM\\_8\\_SHA256',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'ECDHE-ECDSA-AES128-SHA',
+ ],
+ 'required' => false,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'SecurityPolicyName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '安全策略名称',
+ 'description' => 'The name of the security policy.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test-secrity',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.SecurityPolicy',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0******\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateSecurityPolicyAttributeResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</UpdateSecurityPolicyAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateSecurityPolicyAttribute',
+ 'description' => '##'."\n"
+ ."\n"
+ .'**UpdateSecurityPolicyAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [ListSecurityPolicies](~~213609~~) to query the status of the task.'."\n"
+ ."\n"
+ .'* If a security policy is in the **Configuring** state, the security policy is being updated.'."\n"
+ .'* If a security policy is in the **Available** state, the security policy is updated.'."\n",
+ ],
+ 'ListSecurityPolicies' => [
+ 'summary' => 'Queries custom security policies in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组ID',
+ 'description' => 'The resource group ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '50',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'SecurityPolicyNames',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '安全策略名称',
+ 'description' => 'The names of the security policies. You can specify up to 10 names.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The name of the security policy. You can specify up to 10 names.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test-secrity',
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'SecurityPolicyIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '安全策略id',
+ 'description' => 'The security policy IDs. You can specify at most 20 security policies.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the security policy that you want to query. You can specify at most 20 security policy IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'scp-bp1bpn0kn9****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The number of entries per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'SecurityPolicies' => [
+ 'title' => '安全策略',
+ 'description' => 'The supported security policies.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported security policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Ciphers' => [
+ 'title' => '加密套件',
+ 'description' => 'The supported cipher suites.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported cipher suites are determined by the value of **TLSVersions**.'."\n"
+ ."\n"
+ .'* TLSv1.0 and TLSv1.1 support the following cipher suites:'."\n"
+ ."\n"
+ .' * ECDHE-ECDSA-AES128-SHA'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA'."\n"
+ .' * ECDHE-RSA-AES128-SHA'."\n"
+ .' * ECDHE-RSA-AES256-SHA'."\n"
+ .' * AES128-SHA'."\n"
+ .' * AES256-SHA'."\n"
+ .' * DES-CBC3-SHA'."\n"
+ ."\n"
+ .'* TLSv1.2 supports the following cipher suites:'."\n"
+ ."\n"
+ .' * ECDHE-ECDSA-AES128-SHA'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA'."\n"
+ .' * ECDHE-RSA-AES128-SHA'."\n"
+ .' * ECDHE-RSA-AES256-SHA'."\n"
+ .' * AES128-SHA'."\n"
+ .' * AES256-SHA'."\n"
+ .' * DES-CBC3-SHA'."\n"
+ .' * ECDHE-ECDSA-AES128-GCM-SHA256'."\n"
+ .' * ECDHE-ECDSA-AES256-GCM-SHA384'."\n"
+ .' * ECDHE-ECDSA-AES128-SHA256'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA384'."\n"
+ .' * ECDHE-RSA-AES128-GCM-SHA256'."\n"
+ .' * ECDHE-RSA-AES256-GCM-SHA384'."\n"
+ .' * ECDHE-RSA-AES128-SHA256'."\n"
+ .' * ECDHE-RSA-AES256-SHA384'."\n"
+ .' * AES128-GCM-SHA256'."\n"
+ .' * AES256-GCM-SHA384'."\n"
+ .' * AES128-SHA256'."\n"
+ .' * AES256-SHA256'."\n"
+ ."\n"
+ .'* TLSv1.3 supports the following cipher suites:'."\n"
+ ."\n"
+ .' * TLS_AES\\_128\\_GCM_SHA256'."\n"
+ .' * TLS_AES\\_256\\_GCM_SHA384'."\n"
+ .' * TLS_CHACHA20\\_POLY1305\\_SHA256'."\n"
+ .' * TLS_AES\\_128\\_CCM_SHA256'."\n"
+ .' * TLS_AES\\_128\\_CCM\\_8\\_SHA256'."\n",
+ 'type' => 'string',
+ 'example' => 'ECDHE-ECDSA-AES128-SHA',
+ ],
+ ],
+ 'ResourceGroupId' => [
+ 'title' => '资源组id',
+ 'description' => 'The ID of the resource group.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ 'SecurityPolicyId' => [
+ 'title' => '安全策略id',
+ 'description' => 'The ID of the security policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ 'SecurityPolicyName' => [
+ 'title' => '安全策略名称',
+ 'description' => 'The name of the security policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'test-secrity',
+ ],
+ 'SecurityPolicyStatus' => [
+ 'title' => '状态',
+ 'description' => 'The status of the security policy. Valid values:'."\n"
+ ."\n"
+ .'* **Configuring**'."\n"
+ .'* **Available**'."\n",
+ 'type' => 'string',
+ 'example' => 'Available',
+ ],
+ 'TLSVersions' => [
+ 'title' => 'TLS策略',
+ 'description' => 'The supported TLS protocol versions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported TLS versions. Valid values: **TLSv1.0**, **TLSv1.1**, **TLSv1.2**, and **TLSv1.3**.'."\n",
+ 'type' => 'string',
+ 'example' => 'TLSv1.1',
+ ],
+ ],
+ 'CreateTime' => [
+ 'description' => 'The time when the ACL was created. The time follows the `YYYY-MM-DDThh:mm:ssZ` format.'."\n",
+ 'type' => 'string',
+ 'example' => '2023-02-15T07:37:33Z',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'example' => 'product',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.SecurityPolicy',
+ 'errorMessage' => 'Authentication has failed for SecurityPolicy.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\",\\n \\"SecurityPolicies\\": [\\n {\\n \\"Ciphers\\": [\\n \\"ECDHE-ECDSA-AES128-SHA\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"SecurityPolicyId\\": \\"sp-9cdjz6o******\\",\\n \\"SecurityPolicyName\\": \\"test-secrity\\",\\n \\"SecurityPolicyStatus\\": \\"Available\\",\\n \\"TLSVersions\\": [\\n \\"TLSv1.1\\"\\n ],\\n \\"CreateTime\\": \\"2023-02-15T07:37:33Z\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ],\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"<ListSecurityPoliciesResponse>\\n <MaxResults>50</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <SecurityPolicies>\\n <Ciphers>ECDHE-ECDSA-AES128-SHA</Ciphers>\\n <ResourceGroupId>rg-atstuj3rtop****</ResourceGroupId>\\n <SecurityPolicyId>rg-atstuj3rtop****</SecurityPolicyId>\\n <SecurityPolicyName>test-secrity</SecurityPolicyName>\\n <SecurityPolicyStatus>Available</SecurityPolicyStatus>\\n <TLSVersions>TLSv1.1</TLSVersions>\\n <CreateTime>2023-02-15T07:37:33Z</CreateTime>\\n </SecurityPolicies>\\n <TotalCount>1000</TotalCount>\\n</ListSecurityPoliciesResponse>","errorExample":""}]',
+ 'title' => 'ListSecurityPolicies',
+ ],
+ 'ListSecurityPolicyRelations' => [
+ 'summary' => 'Queries the listeners that are associated with security policies.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'SecurityPolicyIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '安全策略id',
+ 'description' => 'The security policy IDs. You can specify up to five IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The security policy ID. You can specify up to five IDs.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'spy-n0kn923****',
+ ],
+ 'required' => true,
+ 'maxItems' => 5,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'SecrityPolicyRelations' => [
+ 'title' => '安全策略关联关系',
+ 'description' => 'The security policies and the listeners that are associated with the security policies.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The security policy and the listeners that are associated with the security policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RelatedListeners' => [
+ 'title' => '关联的监听列表',
+ 'description' => 'The listeners that are associated with the security policy.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The listener that is associated with the security policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ListenerId' => [
+ 'title' => '监听id',
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsn-0bfuc****',
+ ],
+ 'ListenerPort' => [
+ 'title' => '监听端口',
+ 'description' => 'The listener port.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '80',
+ ],
+ 'ListenerProtocol' => [
+ 'title' => '监听协议',
+ 'description' => 'The listener protocol.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTPS',
+ ],
+ 'LoadBalancerId' => [
+ 'title' => '实例id',
+ 'description' => 'The Server Load Balancer (SLB) instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'lb-bp1o94dp5i6ea****',
+ ],
+ ],
+ ],
+ ],
+ 'SecurityPolicyId' => [
+ 'title' => '安全策略id',
+ 'description' => 'The security policy ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'scp-bp1bpn0kn9****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\",\\n \\"SecrityPolicyRelations\\": [\\n {\\n \\"RelatedListeners\\": [\\n {\\n \\"ListenerId\\": \\"lsn-0bfuc****\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"HTTPS\\",\\n \\"LoadBalancerId\\": \\"alb-umwzbz6******\\"\\n }\\n ],\\n \\"SecurityPolicyId\\": \\"sp-bp1bpn0kn9****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListSecurityPolicyRelationsResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <SecrityPolicyRelations>\\n <RelatedListeners>\\n <ListenerId>lsn-0bfuc****</ListenerId>\\n <ListenerPort>80</ListenerPort>\\n <ListenerProtocol>HTTPS</ListenerProtocol>\\n <LoadBalancerId>lb-bp1o94dp5i6ea****</LoadBalancerId>\\n </RelatedListeners>\\n <SecurityPolicyId>scp-bp1bpn0kn9****</SecurityPolicyId>\\n </SecrityPolicyRelations>\\n</ListSecurityPolicyRelationsResponse>","errorExample":""}]',
+ 'title' => 'ListSecurityPolicyRelations',
+ ],
+ 'ListSystemSecurityPolicies' => [
+ 'summary' => 'Queries system security policies in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'abilityTreeCode' => '272',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb39XGK4',
+ ],
+ 'tenantRelevance' => 'publicInformation',
+ ],
+ 'parameters' => [],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'SecurityPolicies' => [
+ 'title' => '安全策略',
+ 'description' => 'The security policies.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The details about the security policy.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Ciphers' => [
+ 'title' => '加密套件',
+ 'description' => 'The supported cipher suite.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported cipher suites are determined by the value of **TLSVersions**.'."\n"
+ ."\n"
+ .'* TLSv1.0 and TLSv1.1 support the following cipher suites:'."\n"
+ ."\n"
+ .' * ECDHE-ECDSA-AES128-SHA'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA'."\n"
+ .' * ECDHE-RSA-AES128-SHA'."\n"
+ .' * ECDHE-RSA-AES256-SHA'."\n"
+ .' * AES128-SHA'."\n"
+ .' * AES256-SHA'."\n"
+ .' * DES-CBC3-SHA'."\n"
+ ."\n"
+ .'* TLSv1.2 supports the following cipher suites:'."\n"
+ ."\n"
+ .' * ECDHE-ECDSA-AES128-SHA'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA'."\n"
+ .' * ECDHE-RSA-AES128-SHA'."\n"
+ .' * ECDHE-RSA-AES256-SHA'."\n"
+ .' * AES128-SHA'."\n"
+ .' * AES256-SHA'."\n"
+ .' * DES-CBC3-SHA'."\n"
+ .' * ECDHE-ECDSA-AES128-GCM-SHA256'."\n"
+ .' * ECDHE-ECDSA-AES256-GCM-SHA384'."\n"
+ .' * ECDHE-ECDSA-AES128-SHA256'."\n"
+ .' * ECDHE-ECDSA-AES256-SHA384'."\n"
+ .' * ECDHE-RSA-AES128-GCM-SHA256'."\n"
+ .' * ECDHE-RSA-AES256-GCM-SHA384'."\n"
+ .' * ECDHE-RSA-AES128-SHA256'."\n"
+ .' * ECDHE-RSA-AES256-SHA384'."\n"
+ .' * AES128-GCM-SHA256'."\n"
+ .' * AES256-GCM-SHA384'."\n"
+ .' * AES128-SHA256'."\n"
+ .' * AES256-SHA256'."\n"
+ ."\n"
+ .'* TLSv1.3 supports the following cipher suites:'."\n"
+ ."\n"
+ .' * TLS_AES\\_128\\_GCM_SHA256'."\n"
+ .' * TLS_AES\\_256\\_GCM_SHA384'."\n"
+ .' * TLS_CHACHA20\\_POLY1305\\_SHA256'."\n"
+ .' * TLS_AES\\_128\\_CCM_SHA256'."\n"
+ .' * TLS_AES\\_128\\_CCM\\_8\\_SHA256'."\n",
+ 'type' => 'string',
+ 'example' => 'ECDHE-ECDSA-AES128-SHA',
+ ],
+ ],
+ 'SecurityPolicyId' => [
+ 'title' => '安全策略Id',
+ 'description' => 'The ID of the security policy.'."\n",
+ 'type' => 'string',
+ 'example' => 'spy-n0kn923****',
+ ],
+ 'TLSVersions' => [
+ 'title' => '协议版本',
+ 'description' => 'The supported TLS protocol versions.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The supported TLS versions. Valid values: **TLSv1.0**, **TLSv1.1**, **TLSv1.2**, and **TLSv1.3**.'."\n",
+ 'type' => 'string',
+ 'example' => 'TLSv1.0',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\",\\n \\"SecurityPolicies\\": [\\n {\\n \\"Ciphers\\": [\\n \\"ECDHE-ECDSA-AES128-SHA\\"\\n ],\\n \\"SecurityPolicyId\\": \\"sp-n0kn923****\\",\\n \\"TLSVersions\\": [\\n \\"TLSv1.0\\"\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListSystemSecurityPoliciesResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <SecurityPolicies>\\n <Ciphers>ECDHE-ECDSA-AES128-SHA</Ciphers>\\n <SecurityPolicyId>spy-n0kn923****</SecurityPolicyId>\\n <TLSVersions>TLSv1.0</TLSVersions>\\n </SecurityPolicies>\\n</ListSystemSecurityPoliciesResponse>","errorExample":""}]',
+ 'title' => 'ListSystemSecurityPolicies',
+ ],
+ 'AddEntriesToAcl' => [
+ 'summary' => 'Adds IP entries to an access control list (ACL).',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AclId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'AclId',
+ 'description' => 'The ID of the ACL.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'docRequired' => true,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ ],
+ [
+ 'name' => 'AclEntries',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '条目信息列表',
+ 'description' => 'The ACL entries that you want to add. You can add at most 20 entries in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ACL entry.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Description' => [
+ 'title' => '描述信息',
+ 'description' => 'The description of the ACL entry. The description must be 2 to 256 characters in length, and can contain letters, digits, commas (,), periods (.), semicolons (;), forward slashes (/), at signs (@), underscores (\\_), and hyphens (-).'."\n"
+ ."\n"
+ .'You can add at most 20 entries in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test-entry',
+ ],
+ 'Entry' => [
+ 'title' => '条目',
+ 'description' => 'The CIDR block in the ACL entry.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => '10.0.1.0/24',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.',
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => 'job',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ResourceAlreadyExist.AclEntry',
+ 'errorMessage' => 'The specified resource %s already exists.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.AclEntriesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Acl',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ListenerAclEntriesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.LoadBalancerAclEntriesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34******\\"\\n}","errorExample":""},{"type":"xml","example":"<AddEntriesToAclResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n</AddEntriesToAclResponse>","errorExample":""}]',
+ 'title' => 'AddEntriesToAcl',
+ 'description' => '* Each ACL can contain IP addresses or CIDR blocks. Take note of the following limits on ACLs:'."\n"
+ ."\n"
+ .' * The maximum number of IP entries that can be added to an ACL with each Alibaba Cloud account at a time: 20'."\n"
+ .' * The maximum number of IP entries that each ACL can contain: 1,000'."\n"
+ ."\n"
+ .'* **AddEntriesToAcl** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAclEntries](~~213616~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .' * If the ACL is in the **Adding** state, the IP entries are being added.'."\n"
+ .' * If the ACL is in the **Available** state, the IP entries are added.'."\n",
+ ],
+ 'CreateAcl' => [
+ 'summary' => 'Creates an access control list (ACL) in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'abilityTreeCode' => '131',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbAYSA83',
+ ],
+ 'tenantRelevance' => 'publicInformation',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AclName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'Acl名称',
+ 'description' => 'The name of the ACL. The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test-acl',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the value, but you must make sure that it is unique among different requests. ClientToken can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not set this parameter, the system uses **RequestId** as **ClientToken**. The value of **RequestId** may be different for each API request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'dryRun',
+ 'description' => 'Specifies whether to check the request without performing the operation. Valid values:'."\n"
+ ."\n"
+ .'* **true**: checks the request without performing the operation. The system checks the required parameters, request syntax, and limits. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): sends the request. If the request passes the check, an HTTP 2xx status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组Id',
+ 'description' => 'The ID of the resource group.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtop****',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'AclId' => [
+ 'title' => 'AclId',
+ 'description' => 'The ID of the ACL.'."\n",
+ 'type' => 'string',
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The ID of the asynchronous task.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The ID of the request.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'QuotaExceeded.AclsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'NotExist.ResourceGroup',
+ 'errorMessage' => 'ResourceGroup does not exist.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.Acl',
+ 'errorMessage' => 'ACL authentication has failed.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"AclId\\": \\"acl-hp34s2h0xx1ht4nwo****\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876******\\"\\n}","errorExample":""},{"type":"xml","example":"<CreateAclResponse>\\n <AclId>nacl-hp34s2h0xx1ht4nwo****</AclId>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</CreateAclResponse>","errorExample":""}]',
+ 'title' => 'CreateAcl',
+ 'description' => '## Usage notes'."\n"
+ ."\n"
+ .'The **CreateAcl** operation is asynchronous. After you send a request, the system returns a request ID. However, the operation is still being performed in the system background. You can call the [ListAcls](~~213617~~) operation to query the status of an ACL:'."\n"
+ ."\n"
+ .'* If an ACL is in the **Creating** state, the ACL is being created.'."\n"
+ .'* If an ACL is in the **Available** state, the ACL is created.'."\n",
+ ],
+ 'DeleteAcl' => [
+ 'summary' => 'Deletes an access control list (ACL).',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AclId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '访问控制策略id',
+ 'description' => 'The ID of the ACL.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等Token',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'DryRun',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to delete an ACL.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ResourceInUse.Acl',
+ 'errorMessage' => 'The specified resource %s is in use.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Acl',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.Acl',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876******\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteAclResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</DeleteAclResponse>","errorExample":""}]',
+ 'title' => 'DeleteAcl',
+ 'description' => '**DeleteAcl** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAcls](~~213617~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .'* If the ACL is in the **Deleting** state, the ACL is being deleted.'."\n"
+ .'* If the ACL cannot be found, the ACL is deleted.'."\n",
+ ],
+ 'UpdateAclAttribute' => [
+ 'summary' => 'Updates the attributes of an access control list (ACL), such as the name.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => false,
+ 'schema' => [
+ 'title' => '幂等参数',
+ 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'AclId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => 'AclId',
+ 'description' => 'The ACL ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ ],
+ [
+ 'name' => 'AclName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '访问控制策略名称',
+ 'description' => 'The ACL name. The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'test-acl',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否预校验请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx` HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Conflict.Acl',
+ 'errorMessage' => 'There is already %s having the same configuration with %s.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Acl',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876F******\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateAclAttributeResponse>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</UpdateAclAttributeResponse>","errorExample":""}]',
+ 'title' => 'UpdateAclAttribute',
+ ],
+ 'ListAcls' => [
+ 'summary' => 'Queries the access control lists (ACLs) in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AclIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '访问控制策略Id',
+ 'description' => 'Filter access control lists (ACLs) by ACL ID. You can specify at most 20 ACL IDs in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ACL ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'AclNames',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '访问控制策略名称',
+ 'description' => 'The ACL names. You can specify up to 10 ACL names in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ACL name.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test-acl',
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ [
+ 'name' => 'ResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组ID',
+ 'description' => 'The ID of the resource group. You can filter the query results based on the specified ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'rg-atstuj3rtopty****',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The token that is used for the next query. Valid values:'."\n"
+ ."\n"
+ .'* If this is your first query or no next query is to be sent, ignore this parameter.'."\n"
+ .'* If a next query is to be sent, set the value to the value of NextToken that is returned from the last call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The maximum number of entries to return. This parameter is optional. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '50',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Acls' => [
+ 'title' => '访问控制列表',
+ 'description' => 'A list of ACLs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The network ACLs.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AclId' => [
+ 'title' => '访问控制策略id',
+ 'description' => 'The ACL ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ 'AclName' => [
+ 'title' => '访问控制策略名称',
+ 'description' => 'The name of the ACL.'."\n",
+ 'type' => 'string',
+ 'example' => 'test-acl',
+ ],
+ 'AclStatus' => [
+ 'title' => '状态',
+ 'description' => 'The status of the ACL. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**: The network ACL is being created.'."\n"
+ .'* **Available**: The network ACL is available.'."\n"
+ .'* **Configuring**'."\n",
+ 'type' => 'string',
+ 'example' => 'Available',
+ ],
+ 'AddressIPVersion' => [
+ 'title' => 'IP版本',
+ 'description' => 'The IP version of the ACL. Only **IPv4** may be returned.'."\n",
+ 'type' => 'string',
+ 'example' => 'IPv4',
+ ],
+ 'ResourceGroupId' => [
+ 'title' => '资源组ID',
+ 'description' => 'The ID of the resource group.'."\n",
+ 'type' => 'string',
+ 'example' => 'rg-atstuj3rtopty****',
+ ],
+ 'ConfigManagedEnabled' => [
+ 'title' => '配置管理',
+ 'description' => 'Indicates whether configuration management is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'false',
+ ],
+ 'CreateTime' => [
+ 'description' => 'The time when the ACL was created. The follows the `YYYY-MM-DDThh:mm:ssZ` format.'."\n",
+ 'type' => 'string',
+ 'example' => '2023-02-15T07:37:33Z',
+ ],
+ 'Tags' => [
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tags.',
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n",
+ 'type' => 'string',
+ 'example' => 'product',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The maximum number of network ACLs returned. This parameter is optional. Valid values: **1** to **100**. If this parameter is not set, the default value **20** is returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The token that is used for the next query. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, it indicates that no next query is to be sent.'."\n"
+ .'* If **NextToken** is returned, the value indicates the token that is used for the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70t****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '10',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.Acl',
+ 'errorMessage' => 'ACL authentication has failed.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Acls\\": [\\n {\\n \\"AclId\\": \\"acl-hp34s2h0xx1ht4nwo****\\",\\n \\"AclName\\": \\"test-acl\\",\\n \\"AclStatus\\": \\"Available\\",\\n \\"AddressIPVersion\\": \\"IPv4\\",\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtopty****\\",\\n \\"ConfigManagedEnabled\\": false,\\n \\"CreateTime\\": \\"2023-02-15T07:37:33Z\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70t****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\",\\n \\"TotalCount\\": 10\\n}","errorExample":""},{"type":"xml","example":"<ListAclsResponse>\\n <Acls>\\n <AclId>nacl-hp34s2h0xx1ht4nwo****</AclId>\\n <AclName>test-acl</AclName>\\n <AclStatus>Available</AclStatus>\\n <AddressIPVersion>IPv4</AddressIPVersion>\\n <ResourceGroupId>rg-atstuj3rtopty****</ResourceGroupId>\\n <ConfigManagedEnabled>false</ConfigManagedEnabled>\\n <CreateTime>2023-02-15T07:37:33Z</CreateTime>\\n </Acls>\\n <MaxResults>20</MaxResults>\\n <NextToken>FFmyTO70t****</NextToken>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <TotalCount>10</TotalCount>\\n</ListAclsResponse>","errorExample":""}]',
+ 'title' => 'ListAcls',
+ ],
+ 'ListAclEntries' => [
+ 'summary' => 'Queries the entries of an access control list (ACL).',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '50',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'AclId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '访问控制策略Id',
+ 'description' => 'The ID of the ACL.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AclEntries' => [
+ 'title' => '访问控制列表',
+ 'description' => 'The ACL entries.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ACL entry.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Description' => [
+ 'title' => '描述信息',
+ 'description' => 'The description of the ACL entry. The description must be 1 to 256 characters in length, and can contain letters, digits, hyphens (-), forward slashes (/), periods (.), and underscores (\\_).',
+ 'type' => 'string',
+ 'example' => 'test-entry',
+ ],
+ 'Entry' => [
+ 'title' => 'IP条目',
+ 'description' => 'The CIDR block for the ACL entry.'."\n",
+ 'type' => 'string',
+ 'example' => '10.0.1.1/24',
+ ],
+ 'Status' => [
+ 'title' => '状态',
+ 'description' => 'The status of the ACL entry. Valid values:'."\n"
+ ."\n"
+ .'* **Adding**: The ACL entry is being added.'."\n"
+ .'* **Available**: The ACL entry is added and available.'."\n"
+ .'* **Removing**: The ACL entry is being removed.'."\n",
+ 'type' => 'string',
+ 'example' => 'Available',
+ ],
+ ],
+ ],
+ ],
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The number of entries per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.Acl',
+ 'errorMessage' => 'ACL authentication has failed.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"AclEntries\\": [\\n {\\n \\"Description\\": \\"test-entry\\",\\n \\"Entry\\": \\"10.0.1.1/24\\",\\n \\"Status\\": \\"Available\\"\\n }\\n ],\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F87******\\",\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"<ListAclEntriesResponse>\\n <AclEntries>\\n <Description>test-entry</Description>\\n <Entry>10.0.1.1/24</Entry>\\n <Status>Available</Status>\\n </AclEntries>\\n <MaxResults>50</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n <TotalCount>1000</TotalCount>\\n</ListAclEntriesResponse>","errorExample":""}]',
+ 'title' => 'ListAclEntries',
+ ],
+ 'AssociateAclsWithListener' => [
+ 'summary' => 'Associates access control lists (ACLs) with a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'abilityTreeCode' => '161',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbAYSA83',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AclIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '访问控制策略Id',
+ 'description' => 'The IDs of the ACLs. You can specify up to three IDs in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ACL.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ 'required' => true,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听Id',
+ 'description' => 'The ID of the listener.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'AclType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '绑定类型',
+ 'description' => 'The type of the ACL. Valid values:'."\n"
+ ."\n"
+ .'* **White**: a whitelist. Only requests from the IP addresses or CIDR blocks in the ACL are forwarded. The whitelist applies to scenarios in which you want to allow only specific IP addresses to access an application. Your service may be adversely affected if the whitelist is not properly configured. If a whitelist is configured for a listener, only requests from IP addresses that are added to the whitelist are forwarded by the listener. If you enable a whitelist but do not add an IP address to the whitelist, the listener forwards all requests.'."\n"
+ .'* **Black**: a blacklist. All requests from the IP addresses or CIDR blocks in the ACL are blocked. The blacklist applies to scenarios in which you want to block access from specific IP addresses to an application. If a blacklist is configured for a listener but no IP address is added to the blacklist, the listener forwards all requests.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'White',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to associate ACLs with a listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The synchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => '请求id',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'QuotaExceeded.AclsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Acl',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.ListenerAclEntriesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.AclNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of %s.',
+ ],
+ [
+ 'errorCode' => 'ResourceAlreadyExist.AclEntry',
+ 'errorMessage' => 'The specified resource %s already exists.',
+ ],
+ [
+ 'errorCode' => 'ResourceInUse.Acl',
+ 'errorMessage' => 'The specified resource %s is in use.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.LoadBalancerJoinedSecurityGroupNotSupportAcl',
+ 'errorMessage' => 'The operation is not allowed because of loadbalancer joined security group not support acl.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.Listener',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F87******\\"\\n}","errorExample":""},{"type":"xml","example":"<AssociateAclsWithListenerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</AssociateAclsWithListenerResponse>","errorExample":""}]',
+ 'title' => 'AssociateAclsWithListener',
+ 'description' => '**DeleteDhcpOptionsSet** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAclRelations](~~213618~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .'* If an ACL is in the **Associating** state, the ACL is being associated with a listener.'."\n"
+ .'* If an ACL is in the **Associated** state, the ACL is associated with a listener.'."\n",
+ ],
+ 'ListAclRelations' => [
+ 'summary' => 'Queries the listeners that are associated with access control lists (ACLs).',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AclIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '访问控制策略Id',
+ 'description' => 'The access control list (ACL) IDs. You can query at most five ACLs in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ACL.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ 'required' => true,
+ 'maxItems' => 5,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AclRelations' => [
+ 'title' => '访问控制列表',
+ 'description' => 'The relations between the specified ACL and the listeners.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ACL and the associated listeners.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AclId' => [
+ 'title' => '访问控制策略id',
+ 'description' => 'ACL ID'."\n",
+ 'type' => 'string',
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ 'RelatedListeners' => [
+ 'title' => '关联的监听',
+ 'description' => 'The listeners that are associated with the ACL.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The listener that is associated with the ACL.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ListenerId' => [
+ 'title' => '监听ID',
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ 'ListenerPort' => [
+ 'title' => '监听端口',
+ 'description' => 'The listener port.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '80',
+ ],
+ 'ListenerProtocol' => [
+ 'title' => '监听协议',
+ 'description' => 'The listener protocol.'."\n",
+ 'type' => 'string',
+ 'example' => 'HTTPS',
+ ],
+ 'LoadBalancerId' => [
+ 'title' => '实例ID',
+ 'description' => 'The ID of the SLB instance.'."\n",
+ 'type' => 'string',
+ 'example' => 'lb-bp1b6c719dfa08ex****',
+ ],
+ 'Status' => [
+ 'title' => '关联状态',
+ 'description' => 'The association status between the ACL and the listener.'."\n"
+ ."\n"
+ .'* **Associating**'."\n"
+ .'* **Associated**'."\n"
+ .'* **Dissociating**'."\n",
+ 'type' => 'string',
+ 'example' => 'Associated',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'RequestId' => [
+ 'title' => '请求id',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.Acl',
+ 'errorMessage' => 'Authentication is failed for %s.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"AclRelations\\": [\\n {\\n \\"AclId\\": \\"acl-hp34s2h0xx1ht4nwo****\\",\\n \\"RelatedListeners\\": [\\n {\\n \\"ListenerId\\": \\"lsn-bpn0kn908w4nbw****\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"HTTPS\\",\\n \\"LoadBalancerId\\": \\"alb-bp1b6c719dfa08ex****\\",\\n \\"Status\\": \\"Associated\\"\\n }\\n ]\\n }\\n ],\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0******\\"\\n}","errorExample":""},{"type":"xml","example":"<ListAclRelationsResponse>\\n <AclRelations>\\n <AclId>nacl-hp34s2h0xx1ht4nwo****</AclId>\\n <RelatedListeners>\\n <ListenerId>lsr-bp1bpn0kn908w4nbw****</ListenerId>\\n <ListenerPort>80</ListenerPort>\\n <ListenerProtocol>HTTPS</ListenerProtocol>\\n <LoadBalancerId>lb-bp1b6c719dfa08ex****</LoadBalancerId>\\n <Status>Associated</Status>\\n </RelatedListeners>\\n </AclRelations>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</ListAclRelationsResponse>","errorExample":""}]',
+ 'title' => 'ListAclRelations',
+ ],
+ 'DissociateAclsFromListener' => [
+ 'summary' => 'Disassociates access control lists (ACLs) from a listener.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'AclIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '访问控制策略Id',
+ 'description' => 'The access control list (ACL) IDs. You can disassociate at most three ACLs from a listener in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the ACL.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ 'required' => true,
+ 'maxItems' => 20,
+ ],
+ ],
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听Id',
+ 'description' => 'The ID of the listener.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsr-bp1bpn0kn908w4nbw****',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to disassociate ACLs from a listener.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => '请求id',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Acl',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceInConfiguring',
+ 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.',
+ ],
+ [
+ 'errorCode' => 'LockFailed',
+ 'errorMessage' => 'The specified resource lock failed.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotAssociated.Acl',
+ 'errorMessage' => 'The specified resource %s is not associated.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876******\\"\\n}","errorExample":""},{"type":"xml","example":"<DissociateAclsFromListenerResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n</DissociateAclsFromListenerResponse>","errorExample":""}]',
+ 'title' => 'DissociateAclsFromListener',
+ 'description' => '**DissociateAclsFromListener** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call [ListAclRelations](~~213618~~) to query the status of an ACL.'."\n"
+ ."\n"
+ .'* If an ACL is in the **Dissociating** state, the ACL is being disassociated from the listener.'."\n"
+ .'* If an ACL is in the **Dissociated** state, the ACL is disassociated from the listener.'."\n",
+ ],
+ 'RemoveEntriesFromAcl' => [
+ 'summary' => 'Removes entries from an access control list (ACL).',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ [
+ 'name' => 'AclId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '访问控制策略Id',
+ 'description' => 'The ID of the ACL.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'nacl-hp34s2h0xx1ht4nwo****',
+ ],
+ ],
+ [
+ 'name' => 'Entries',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '条目列表',
+ 'description' => 'The entries that you want to remove. You can remove up to 20 entries in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The entry that you want to remove. You can remove up to 20 entries in each call.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '192.168.1.0/24',
+ ],
+ 'required' => true,
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to remove entries from an ACL.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Acl',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.Acl',
+ 'errorMessage' => 'ACL authentication has failed.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.AclEntry',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\"\\n}","errorExample":""},{"type":"xml","example":"<RemoveEntriesFromAclResponse>\\n <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</RemoveEntriesFromAclResponse>","errorExample":""}]',
+ 'title' => 'RemoveEntriesFromAcl',
+ 'description' => '**RemoveEntriesFromAcl** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAclEntries](~~213616~~) operation to query the status of the task.'."\n"
+ ."\n"
+ .'* If an ACL is in the **Removing** state, the entries are being removed.'."\n"
+ .'* If an ACL cannot be found, the entries are removed.'."\n",
+ ],
+ 'MoveResourceGroup' => [
+ 'summary' => 'Moves a resource to another resource group.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源类型',
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'* **loadbalancer**: Application Load Balancer (ALB) instance'."\n"
+ .'* **acl**: access control list (ACL)'."\n"
+ .'* **securitypolicy**: security policy'."\n"
+ .'* **servergroup**: server group'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'ACL',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '指定资源Id',
+ 'description' => 'The resource ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'acl-hp34s2h0xx1ht4nwo****',
+ ],
+ ],
+ [
+ 'name' => 'NewResourceGroupId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源组id',
+ 'description' => 'The ID of the resource group to which you want to transfer the cloud resource.'."\n"
+ ."\n"
+ .'> You can use resource groups to manage resources within your Alibaba Cloud account by group. This helps you resolve issues such as resource grouping and permission management for your Alibaba Cloud account. For more information, see [What is resource management?](~~94475~~)'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'rg-9gLOoK****',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'NotExist.ResourceGroup',
+ 'errorMessage' => 'ResourceGroup does not exist.',
+ ],
+ ],
+ 403 => [
+ [
+ 'errorCode' => 'Forbidden.Acl',
+ 'errorMessage' => 'ACL authentication has failed.',
+ ],
+ ],
+ [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\"\\n}","errorExample":""},{"type":"xml","example":"<MoveResourceGroupResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</MoveResourceGroupResponse>","errorExample":""}]',
+ 'title' => 'MoveResourceGroup',
+ ],
+ 'ListTagKeys' => [
+ 'summary' => 'Queries tag keys.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源类型',
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'* **acl**: an access control list (ACL)'."\n"
+ .'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
+ .'* **securitypolicy**: a security policy'."\n"
+ .'* **servergroup**: a server group'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'loadbalancer',
+ ],
+ ],
+ [
+ 'name' => 'Category',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '标签类型',
+ 'description' => 'The type of the tag.'."\n"
+ ."\n"
+ .'Valid values: **Custom**, **System**, and **All**.'."\n"
+ ."\n"
+ .'Default value: **All**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'System',
+ ],
+ ],
+ [
+ 'name' => 'Keyword',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '具体的标签Key',
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The number of entries per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'TagKeys' => [
+ 'title' => '标签Key列表',
+ 'description' => 'The tag keys.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Category' => [
+ 'title' => '标签类型',
+ 'description' => 'The type of the tag.'."\n"
+ ."\n"
+ .'Valid values: **Custom**, **System**, and **All**.'."\n"
+ ."\n"
+ .'Default value: **All**.'."\n",
+ 'type' => 'string',
+ 'example' => 'System',
+ ],
+ 'TagKey' => [
+ 'title' => '标签Key',
+ 'description' => 'The tag that matches all filter conditions.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '10',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\",\\n \\"TagKeys\\": [\\n {\\n \\"Category\\": \\"System\\",\\n \\"TagKey\\": \\"test\\"\\n }\\n ],\\n \\"TotalCount\\": 10\\n}","errorExample":""},{"type":"xml","example":"<ListTagKeysResponse>\\n <MaxResults>20</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <TagKeys>\\n <Category>System</Category>\\n <TagKey>test</TagKey>\\n </TagKeys>\\n <TotalCount>10</TotalCount>\\n</ListTagKeysResponse>","errorExample":""}]',
+ 'title' => 'ListTagKeys',
+ ],
+ 'ListTagResources' => [
+ 'summary' => 'Queries the tags of resources.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源类型',
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'* **acl**: an access control list (ACL)'."\n"
+ .'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
+ .'* **securitypolicy**: a security policy'."\n"
+ .'* **servergroup**: a server group'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'loadbalancer',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '资源实例Id',
+ 'description' => 'The resource IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The resource ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'd-2ze1ot4ah7xjyv0d****',
+ ],
+ 'required' => false,
+ 'example' => 'acl-123',
+ 'maxItems' => 50,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '标签列表',
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '标签键',
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'title' => '标签值',
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'example' => 'test',
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The response parameters.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The number of entries per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'TagResources' => [
+ 'title' => '标签值列表',
+ 'description' => 'The tags that match the specified keys and values.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag that matches the specified key and value.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ResourceId' => [
+ 'title' => '资源ID',
+ 'description' => 'The resource ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'd-2ze1ot4ah7xjyv0d****',
+ ],
+ 'ResourceType' => [
+ 'title' => '资源类型',
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'* **acl**: an ACL'."\n"
+ .'* **loadbalancer**: an ALB instance'."\n"
+ .'* **securitypolicy**: a security policy'."\n"
+ .'* **servergroup**: a server group'."\n",
+ 'type' => 'string',
+ 'example' => 'loadbalancer',
+ ],
+ 'TagKey' => [
+ 'title' => '标签Key',
+ 'description' => 'The tag key.'."\n",
+ 'type' => 'string',
+ 'example' => 'env',
+ ],
+ 'TagValue' => [
+ 'title' => '标签Value',
+ 'description' => 'The tag value.'."\n",
+ 'type' => 'string',
+ 'example' => 'product',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FD******\\",\\n \\"TagResources\\": [\\n {\\n \\"ResourceId\\": \\"alb-gws76zijb0******\\",\\n \\"ResourceType\\": \\"loadbalancer\\",\\n \\"TagKey\\": \\"env\\",\\n \\"TagValue\\": \\"product\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListTagResourcesResponse>\\n <MaxResults>20</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <TagResources>\\n <ResourceId>d-2ze1ot4ah7xjyv0d****</ResourceId>\\n <ResourceType>loadbalancer</ResourceType>\\n <TagKey>env</TagKey>\\n <TagValue>product</TagValue>\\n </TagResources>\\n</ListTagResourcesResponse>","errorExample":""}]',
+ 'title' => 'ListTagResources',
+ ],
+ 'ListTagValues' => [
+ 'summary' => 'Queries tag values.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '分页查询标识',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '查询数量',
+ 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'maximum' => '100',
+ 'minimum' => '1',
+ 'example' => '20',
+ 'default' => '20',
+ ],
+ ],
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源类型',
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
+ .'* **acl**: an access control list (ACL)'."\n"
+ .'* **securitypolicy**: a security policy'."\n"
+ .'* **servergroup**: a server group'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'loadbalancer',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源实例Id',
+ 'description' => 'The resource ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'eip-resource-test',
+ ],
+ ],
+ [
+ 'name' => 'TagKey',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '具体的标签Key',
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'test',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to query tag values.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The number of entries per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '20',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ 'TagValues' => [
+ 'title' => '标签值列表',
+ 'description' => 'The tag values.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag that matches all filter conditions.'."\n",
+ 'type' => 'string',
+ 'example' => 'owner',
+ ],
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '10',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\",\\n \\"TagValues\\": [\\n \\"owner\\"\\n ],\\n \\"TotalCount\\": 10\\n}","errorExample":""},{"type":"xml","example":"<ListTagValuesResponse>\\n <MaxResults>20</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <TagValues>owner</TagValues>\\n <TotalCount>10</TotalCount>\\n</ListTagValuesResponse>","errorExample":""}]',
+ 'title' => 'ListTagValues',
+ ],
+ 'TagResources' => [
+ 'summary' => 'Adds tags to resources.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源类型',
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'* **acl**: an access control list (ACL)'."\n"
+ .'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
+ .'* **securitypolicy**: a security policy'."\n"
+ .'* **servergroup**: a server group'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'loadbalancer',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '资源实例Id',
+ 'description' => 'The resource IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The resource ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'i-2zebd226fxed6h4i****',
+ ],
+ 'required' => true,
+ 'example' => 'acl-123',
+ 'maxItems' => 50,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '标签列表',
+ 'description' => 'The tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '标签键',
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'title' => '标签值',
+ 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => true,
+ 'example' => 'test',
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to add tags to resources.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\"\\n}","errorExample":""},{"type":"xml","example":"<TagResourcesResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</TagResourcesResponse>","errorExample":""}]',
+ 'title' => 'TagResources',
+ ],
+ 'UnTagResources' => [
+ 'summary' => 'Removes tags from resources.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源类型',
+ 'description' => 'The type of the resource. Valid values:'."\n"
+ ."\n"
+ .'* **acl**: an access control list (ACL)'."\n"
+ .'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
+ .'* **securitypolicy**: a security policy'."\n"
+ .'* **servergroup**: a server group'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'loadbalancer',
+ ],
+ ],
+ [
+ 'name' => 'ResourceId',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '资源实例Id',
+ 'description' => 'The IDs of the resources from which you want to remove tags.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The ID of the resource from which you want to remove tags.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'd-2ze1ot4ah7xjyv0d****',
+ ],
+ 'required' => true,
+ 'example' => 'acl-123',
+ 'maxItems' => 50,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'Tag',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '标签列表',
+ 'description' => 'The tags that you want to remove.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag that you want to remove.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Key' => [
+ 'title' => '标签键',
+ 'description' => 'The key of the tag that you want to remove. The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'Value' => [
+ 'title' => '标签值',
+ 'description' => 'The value of the tag that you want to remove. The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `acs:` or `aliyun`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'product',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ 'example' => 'test',
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'TagKey',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '标签键列表',
+ 'description' => 'The keys of the tags that you want to remove.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The tag key. The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'env',
+ ],
+ 'required' => false,
+ 'maxItems' => 20,
+ 'minItems' => 1,
+ ],
+ ],
+ [
+ 'name' => 'All',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否删除全部',
+ 'description' => 'Specifies whether to remove all tags from the specified resource. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The operation to remove tags.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Acl',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.SecurityPolicy',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'ResourceNotFound.ServerGroup',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\"\\n}","errorExample":""},{"type":"xml","example":"<UnTagResourcesResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</UnTagResourcesResponse>","errorExample":""}]',
+ 'title' => 'UnTagResources',
+ ],
+ 'ListAsynJobs' => [
+ 'summary' => 'Queries asynchronous tasks in a region.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'JobIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '任务ID列表',
+ 'description' => 'The asynchronous task IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'bp1bpn0kn9****',
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ [
+ 'name' => 'ResourceType',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '资源类型类型',
+ 'description' => 'The type of the associated resource. Valid values:'."\n"
+ ."\n"
+ .'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
+ .'* **listener**: a listener'."\n"
+ .'* **rule**: a forwarding rule'."\n"
+ .'* **acl**: an access control list (ACL)'."\n"
+ .'* **securitypolicy**: a security policy'."\n"
+ .'* **servergroup**: a server group'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'acl',
+ ],
+ ],
+ [
+ 'name' => 'ResourceIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '资源实例ID列表',
+ 'description' => 'The resource IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The resource ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'alb-o8mszt95oamfjy****',
+ ],
+ 'required' => false,
+ 'maxItems' => 10,
+ ],
+ ],
+ [
+ 'name' => 'ApiName',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '操作接口名',
+ 'description' => 'The name of the operation.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'CreateLoadBalancer',
+ ],
+ ],
+ [
+ 'name' => 'BeginTime',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '任务过滤时间范围-开始时间',
+ 'description' => 'The timestamp that indicates the start time of the task. Unit: milliseconds.'."\n"
+ ."\n"
+ .'Specify the timestamp in the Unix format to indicate the total amount of time that is from 00:00:00 (UTC+0) on January 1, 1970 to when the status of the asynchronous task is queried.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '2021-06-03T17:22Z',
+ ],
+ ],
+ [
+ 'name' => 'EndTime',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '任务过滤时间范围-结束时间',
+ 'description' => 'The timestamp that indicates the end time of the task. Unit: milliseconds.'."\n"
+ ."\n"
+ .'Specify the timestamp in the Unix format to indicate the total amount of time that is from 00:00:00 (UTC+0) on January 1, 1970 to when the status of the asynchronous task is returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '2021-06-04T17:22Z',
+ ],
+ ],
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '下一个查询开始Token',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '本次读取的最大数据记录数量',
+ 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'required' => false,
+ 'example' => '20',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The tasks.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'Jobs' => [
+ 'title' => '任务列表',
+ 'description' => 'The tasks.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The task.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'ApiName' => [
+ 'title' => 'openapi名称',
+ 'description' => 'The name of the operation.'."\n",
+ 'type' => 'string',
+ 'example' => 'CreateLoadBalancer',
+ ],
+ 'CreateTime' => [
+ 'title' => '任务开始时间戳',
+ 'description' => 'The timestamp that indicates the start time of the task. Unit: milliseconds.'."\n"
+ ."\n"
+ .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '2134663231234',
+ ],
+ 'ErrorCode' => [
+ 'title' => '如果Status为失败,则为错误码',
+ 'description' => 'If the value of **Status** is Failed, an error code is returned.'."\n",
+ 'type' => 'string',
+ 'example' => '506',
+ ],
+ 'ErrorMessage' => [
+ 'title' => '如果Status为失败,则为错误信息',
+ 'description' => 'If the value of **Status** is Failed, an error message is returned.'."\n",
+ 'type' => 'string',
+ 'example' => 'AllocateEipAddress Failed',
+ ],
+ 'Id' => [
+ 'title' => '任务ID',
+ 'description' => 'The task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B5****',
+ ],
+ 'ModifyTime' => [
+ 'title' => '任务结束时间戳',
+ 'description' => 'The timestamp that indicates the end time of the task. Unit: milliseconds.'."\n"
+ ."\n"
+ .'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '2144663233315',
+ ],
+ 'OperateType' => [
+ 'title' => '操作类型',
+ 'description' => 'The type of the operation. Valid values:'."\n"
+ ."\n"
+ .'* **Create**'."\n"
+ .'* **Update**'."\n"
+ .'* **Delete**'."\n",
+ 'type' => 'string',
+ 'example' => 'Create',
+ ],
+ 'ResourceId' => [
+ 'title' => '关联的资源实例ID',
+ 'description' => 'The associated resource ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-o8mszt95oamfjy****',
+ ],
+ 'ResourceType' => [
+ 'title' => '关联的资源类型',
+ 'description' => 'The type of the associated resource. Valid values:'."\n"
+ ."\n"
+ .'* **loadbalancer**: an ALB instance'."\n"
+ .'* **listener**: a listener'."\n"
+ .'* **rule**: a forwarding rule'."\n"
+ .'* **acl**: an ACL'."\n"
+ .'* **securitypolicy**: a security policy'."\n"
+ .'* **servergroup**: a server group'."\n",
+ 'type' => 'string',
+ 'example' => 'acl',
+ ],
+ 'Status' => [
+ 'title' => '任务状态',
+ 'description' => 'The status of the task. Valid values:'."\n"
+ ."\n"
+ .'* **Succeeded**'."\n"
+ .'* **Failed**'."\n"
+ .'* **Processing**'."\n",
+ 'type' => 'string',
+ 'example' => 'Succeeded',
+ ],
+ ],
+ ],
+ ],
+ 'MaxResults' => [
+ 'title' => '本次查询返回记录数量',
+ 'description' => 'The number of entries per page.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '10',
+ ],
+ 'NextToken' => [
+ 'title' => '分页查询标识',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710',
+ ],
+ 'TotalCount' => [
+ 'title' => '总记录数 ',
+ 'description' => 'The total number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int64',
+ 'example' => '1000',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"Jobs\\": [\\n {\\n \\"ApiName\\": \\"CreateLoadBalancer\\",\\n \\"CreateTime\\": 2134663231234,\\n \\"ErrorCode\\": \\"506\\",\\n \\"ErrorMessage\\": \\"AllocateEipAddress Failed\\",\\n \\"Id\\": \\"365F4154-92F6-4AE4-92F8-7FF34B5****\\",\\n \\"ModifyTime\\": 2144663233315,\\n \\"OperateType\\": \\"Create\\",\\n \\"ResourceId\\": \\"alb-o8mszt95oamfjy****\\",\\n \\"ResourceType\\": \\"loadbalancer\\",\\n \\"Status\\": \\"Succeeded\\"\\n }\\n ],\\n \\"MaxResults\\": 10,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"<ListAsynJobsResponse>\\n <Jobs>\\n <ApiName>CreateLoadBalancer</ApiName>\\n <CreateTime>2134663231234</CreateTime>\\n <ErrorCode>506</ErrorCode>\\n <ErrorMessage>AllocateEipAddress Failed</ErrorMessage>\\n <Id>365F4154-92F6-4AE4-92F8-7FF34B5****</Id>\\n <ModifyTime>2144663233315</ModifyTime>\\n <OperateType>Create</OperateType>\\n <ResourceId>alb-o8mszt95oamfjy****</ResourceId>\\n <ResourceType>acl</ResourceType>\\n <Status>Succeeded</Status>\\n </Jobs>\\n <MaxResults>10</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <TotalCount>1000</TotalCount>\\n</ListAsynJobsResponse>","errorExample":""}]',
+ 'title' => 'ListAsynJobs',
+ ],
+ 'ModifyCapacityReservation' => [
+ 'summary' => '修改资源预留',
+ 'path' => '',
+ 'methods' => [
+ 'post',
+ 'get',
+ ],
+ 'schemes' => [
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'riskType' => 'none',
+ 'chargeType' => 'paid',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbEUW2CG',
+ ],
+ 'autoTest' => true,
+ 'tenantRelevance' => 'tenant',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '应用型负载均衡实例ID。',
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-iv9gj3spak6fbj****',
+ ],
+ ],
+ [
+ 'name' => 'ResetCapacityReservation',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '是否取消资源预留',
+ 'description' => '',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ 'default' => 'false',
+ 'enum' => [
+ 'true',
+ 'false',
+ ],
+ ],
+ ],
+ [
+ 'name' => 'MinimumLoadBalancerCapacity',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '预留的最小负载均衡器容量',
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'CapacityUnits' => [
+ 'title' => 'LCU数量',
+ 'description' => '',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '100',
+ ],
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'boolean',
+ 'required' => false,
+ 'enumValueTitles' => [
+ 'true' => 'true',
+ 'false' => 'false',
+ ],
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'OperationDenied.ListenerNotFound',
+ 'errorMessage' => 'The operation is not allowed because of ListenerNotFound.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.CapacityReservationNotSupport',
+ 'errorMessage' => 'Resource reservation is not supported.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.CapacityUnitsBelowMinimum',
+ 'errorMessage' => 'The operation is not allowed because of CapacityUnitsBelowMinimum.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.CapacityDecreaseRequestLimitExceeded',
+ 'errorMessage' => 'The operation is not allowed because of CapacityDecreaseRequestLimitExceeded.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.PriorRequestNotComplete',
+ 'errorMessage' => 'The operation is not allowed because of PriorRequestNotComplete.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.DeploymentSetExists',
+ 'errorMessage' => 'The operation is not allowed because of OperationDenied.DeploymentSetExists.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.DeploymentSetIsEmpty',
+ 'errorMessage' => 'The operation is not allowed because of OperationDenied.DeploymentSetIsEmpty.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.DeploymentSetsConflicts',
+ 'errorMessage' => 'The operation is not allowed because of OperationDenied.DeploymentSetsConflicts.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.DeploymentSetsNotSupport',
+ 'errorMessage' => 'The operation is not allowed because of OperationDenied.DeploymentSetsNotSupport.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.DeploymentSetsStrategyNotMatch',
+ 'errorMessage' => 'The operation is not allowed because of DeploymentSetsStrategyNotMatch.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.ReservationMaxLcuPerLb',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.ReservationMaxLcuPerRegion',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'QuotaExceeded.DeploymentSetsNum',
+ 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource of %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\"\\n}","type":"json"}]',
+ ],
+ 'DescribeCapacityReservation' => [
+ 'summary' => '查询资源预留',
+ 'path' => '',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'get',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeNodes' => [
+ 'FEATUREslbEUW2CG',
+ ],
+ 'autoTest' => true,
+ 'tenantRelevance' => 'tenant',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'LoadBalancerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '应用型负载均衡实例ID。',
+ 'description' => '',
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'alb-o9ulmq5hgn68jk****'."\n",
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response',
+ 'type' => 'object',
+ 'properties' => [
+ 'RequestId' => [
+ 'title' => '请求id',
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => '365F4154-92F6-4AE4-92F8-7FF3******',
+ ],
+ 'CapacityReservationState' => [
+ 'title' => '容量预留状态',
+ 'description' => '',
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'AvailabilityZone' => [
+ 'title' => '资源可用区',
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'cn-hangzhou-k',
+ ],
+ 'EffectiveCapacityUnits' => [
+ 'title' => '有效的LCU容量',
+ 'description' => '',
+ 'type' => 'number',
+ 'format' => 'double',
+ 'example' => '50.0',
+ ],
+ 'Status' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'enumValueTitles' => [
+ 'Rebalancing' => 'Rebalancing',
+ 'Failed' => 'Failed',
+ 'Pending' => 'Pending',
+ 'Provisioned' => 'Provisioned',
+ ],
+ 'example' => 'Provisioned',
+ ],
+ 'Reason' => [
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => 'INSUFFICIENT_CAPACITY',
+ ],
+ ],
+ ],
+ ],
+ 'DecreaseRequestsRemaining' => [
+ 'title' => '剩余降配、取消资源预留的次数',
+ 'description' => '',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '2',
+ ],
+ 'LastModifiedTime' => [
+ 'title' => '容量预留最后修改时间,格式为yyyy-MM-ddTHH:mm:ssZ。',
+ 'description' => '',
+ 'type' => 'string',
+ 'example' => '2025-08-22 05:06:58',
+ ],
+ 'MinimumLoadBalancerCapacity' => [
+ 'title' => '负载均衡请求的最小预留容量',
+ 'description' => '',
+ 'type' => 'object',
+ 'properties' => [
+ 'CapacityUnits' => [
+ 'title' => 'LCU数量',
+ 'description' => '',
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '100',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.LoadBalancer',
+ 'errorMessage' => 'The specified resource of %s is not found.',
+ ],
+ ],
+ ],
+ 'staticInfo' => [
+ 'returnType' => 'synchronous',
+ ],
+ 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"CapacityReservationState\\": [\\n {\\n \\"AvailabilityZone\\": \\"cn-hangzhou-k\\",\\n \\"EffectiveCapacityUnits\\": 50,\\n \\"Status\\": \\"Provisioned\\",\\n \\"Reason\\": \\"INSUFFICIENT_CAPACITY\\"\\n }\\n ],\\n \\"DecreaseRequestsRemaining\\": 2,\\n \\"LastModifiedTime\\": \\"2025-08-22 05:06:58\\",\\n \\"MinimumLoadBalancerCapacity\\": {\\n \\"CapacityUnits\\": 100\\n }\\n}","type":"json"}]',
+ ],
+ 'UpdateAScripts' => [
+ 'summary' => 'Updates AScript rules.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'update',
+ 'abilityTreeCode' => '34540',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb2Q6O49',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
+ ."\n"
+ .'> If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'b1f642ac-5558-4a36-b7d9-cf53f40ea5c8',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'AScripts',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '脚本',
+ 'description' => 'The information about the AScript rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AScript rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AScriptName' => [
+ 'title' => '脚本名称',
+ 'description' => 'The name of the AScript rule.'."\n"
+ ."\n"
+ .'The name must be 2 to 128 character in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'Group1',
+ ],
+ 'Enabled' => [
+ 'title' => '是否启用',
+ 'description' => 'Specifies whether to enable the AScript rule. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ 'ScriptContent' => [
+ 'title' => '脚本内容',
+ 'description' => 'The content of the AScript rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'if and(match_re($uri, \'^/1.txt$\'), $arg_type) { rewrite(concat(\'/1.\', $arg_type), \'break\') }',
+ ],
+ 'ExtAttributes' => [
+ 'title' => '扩展属性',
+ 'description' => 'The extended attribute.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'AttributeKey' => [
+ 'title' => '属性名称',
+ 'description' => 'The attribute name.'."\n"
+ ."\n"
+ .'Set the value to **EsDebug**, which specifies that when requests carry the \\_es_dbg parameter whose value is the specified key, the debugging header is enabled to output the execution result.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'EsDebug',
+ ],
+ 'AttributeValue' => [
+ 'title' => '属性值',
+ 'description' => 'The attribute value, which must be 1 to 128 characters in length, and can contain letters and digits.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'test123',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ 'AScriptId' => [
+ 'title' => '脚本Id',
+ 'description' => 'The rule ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'as-mhqxcanmivn4g5****',
+ ],
+ 'ExtAttributeEnabled' => [
+ 'title' => '是否启用扩展属性',
+ 'description' => 'Specifies whether to enable the extended attributes of the Ascript rule. Valid values:'."\n"
+ ."\n"
+ .'* true'."\n"
+ .'* false (false)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Updates AScript rules.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '2e82b5f4-1ba9-4d20-89c8-1082ebaa****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'ACA19FE1-C09E-53C7-8FDA-560F49D71891',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.AScriptsNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.AScriptsTotalLinesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.AScriptLinesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ ],
+ 404 => [
+ [
+ 'errorCode' => 'ResourceNotFound.Ascript',
+ 'errorMessage' => 'The specified resource of %s is not found.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"2e82b5f4-1ba9-4d20-89c8-1082ebaa****\\",\\n \\"RequestId\\": \\"ACA19FE1-C09E-53C7-8FDA-560******\\"\\n}","errorExample":""},{"type":"xml","example":"<UpdateAScriptsResponse>\\n <JobId>2e82b5f4-1ba9-4d20-89c8-1082ebaa****</JobId>\\n <RequestId>ACA19FE1-C09E-53C7-8FDA-560F49D71891</RequestId>\\n</UpdateAScriptsResponse>","errorExample":""}]',
+ 'title' => 'UpdateAScripts',
+ 'description' => '**UpdateAScripts** is an an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAScripts](~~472574~~) operation to query the status of an AScript rule.'."\n"
+ ."\n"
+ .'* If the rule is in the **Configuring** state, the rule is being updated.'."\n"
+ .'* If the rule is in the **Available** state, the rule is updated.'."\n",
+ ],
+ 'CreateAScripts' => [
+ 'summary' => 'Creates AScript rules.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'create',
+ 'riskType' => 'none',
+ 'chargeType' => 'free',
+ 'abilityTreeCode' => '34526',
+ 'abilityTreeNodes' => [
+ 'FEATUREslb2Q6O49',
+ ],
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'ListenerId',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '监听id',
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'lsn-6hfq3zs0x04ibn****',
+ ],
+ ],
+ [
+ 'name' => 'AScripts',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'title' => '脚本',
+ 'description' => 'The information about the AScript rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The information about the AScript rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AScriptName' => [
+ 'title' => '脚本名称',
+ 'description' => 'The name of the AScript rule.'."\n"
+ ."\n"
+ .'The length must be between 2 and 128 characters. This name must start with a letter and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'test',
+ ],
+ 'Position' => [
+ 'title' => '执行位置',
+ 'description' => 'The position where the Ascript rule is evaluated. Valid values are:'."\n"
+ ."\n"
+ .'* RequestHead (default): before inbound rules are evaluated'."\n"
+ .'* RequestFoot: after inbound rules are evaluated'."\n"
+ .'* ResponseHead: before outbound rules are evaluated'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'RequestFoot',
+ 'default' => 'RequestHead',
+ ],
+ 'Enabled' => [
+ 'title' => '是否启用',
+ 'description' => 'Enables the AScript rule. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false** (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ 'ScriptContent' => [
+ 'title' => '脚本内容',
+ 'description' => 'The content of the AScript rule.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'if and(match_re($uri, \'^/1.txt$\'), $arg_type) { rewrite(concat(\'/1.\', $arg_type), \'break\') }',
+ ],
+ 'ExtAttributes' => [
+ 'title' => '扩展属性',
+ 'description' => 'The extended attribute of the AScript rule.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'AttributeKey' => [
+ 'title' => '属性名称',
+ 'description' => 'The key of the extended attribute.'."\n"
+ ."\n"
+ .'You can only set the key to **EsDebug**. This extended attribute adds a debug response header to record the execution of the AScript rule if the client request includes the \\_es_dbg parameter and its value matches the specified value of the extended attribute.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'EsDebug',
+ ],
+ 'AttributeValue' => [
+ 'title' => '属性值',
+ 'description' => 'The value of the extended attribute, which can contain a maximum of 128 characters, including letters and digits.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test123',
+ ],
+ ],
+ 'required' => false,
+ 'description' => '',
+ ],
+ 'required' => false,
+ ],
+ 'ExtAttributeEnabled' => [
+ 'title' => '是否启用扩展属性',
+ 'description' => 'Enables the extended attribute of the Ascript rule. Valid values:'."\n"
+ ."\n"
+ .'* true'."\n"
+ .'* false (default)'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'true',
+ ],
+ ],
+ 'required' => false,
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The AScript rules that are created.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '5c607642-535e-4e06-9d77-df53049b****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'BF0FE763-9603-558F-A55B-0F4B9A3E3C02',
+ ],
+ 'AScriptIds' => [
+ 'title' => '可编程脚本列表',
+ 'description' => 'The AScript rule IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AScript rule ID.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AScriptId' => [
+ 'title' => '脚本id',
+ 'description' => 'The AScript rule ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'as-xvq5igaa7uv6vr****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.AScriptsNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.AScriptsTotalLinesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ [
+ 'errorCode' => 'ResourceQuotaExceeded.AScriptLinesNum',
+ 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"5c607642-535e-4e06-9d77-df53049b****\\",\\n \\"RequestId\\": \\"BF0FE763-9603-558F-A55B-0F4******\\",\\n \\"AScriptIds\\": [\\n {\\n \\"AScriptId\\": \\"as-xvq5igaa7uv6vr****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<CreateAScriptsResponse>\\n <JobId>5c607642-535e-4e06-9d77-df53049b****</JobId>\\n <RequestId>BF0FE763-9603-558F-A55B-0F4B9A3E3C02</RequestId>\\n <AScriptIds>\\n <AScriptId>as-xvq5igaa7uv6vr****</AScriptId>\\n </AScriptIds>\\n</CreateAScriptsResponse>","errorExample":""}]',
+ 'title' => 'CreateAScripts',
+ 'description' => '### [](#)Prerequisites'."\n"
+ ."\n"
+ .'* A standard or WAF-enabled Application Load Balancer (ALB) instance is created. For more information, see [CreateLoadBalancer](~~214358~~).'."\n"
+ ."\n"
+ .'### [](#)Usage notes'."\n"
+ ."\n"
+ .'**CreateAScripts** an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAScripts](~~472574~~) operation to query the status of a script.'."\n"
+ ."\n"
+ .'* If the script is in the **Creating** state, the script is being created.'."\n"
+ .'* If the script is in the **Available**, the script is created.'."\n",
+ ],
+ 'DeleteAScripts' => [
+ 'summary' => 'Deletes AScript rules.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'write',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'delete',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'ClientToken',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => '幂等标识',
+ 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
+ ."\n"
+ .'You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'f516e84e-fc0c-4c2d-a461-6cd774a84dbd',
+ ],
+ ],
+ [
+ 'name' => 'DryRun',
+ 'in' => 'query',
+ 'schema' => [
+ 'title' => ' 是否只预检此次请求',
+ 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
+ ."\n"
+ .'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
+ .'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n",
+ 'type' => 'boolean',
+ 'required' => false,
+ 'example' => 'false',
+ ],
+ ],
+ [
+ 'name' => 'AScriptIds',
+ 'in' => 'query',
+ 'style' => 'repeatList',
+ 'schema' => [
+ 'title' => '脚本id列表',
+ 'description' => 'The AScript rule IDs.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AScript rule ID.'."\n"
+ ."\n"
+ .'You can delete up to four AScript rules at a time.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'as-123',
+ ],
+ 'required' => true,
+ 'maxItems' => 10,
+ 'minItems' => 1,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'The AScript rules that are deleted.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'JobId' => [
+ 'title' => '异步任务Id',
+ 'description' => 'The asynchronous task ID.'."\n",
+ 'type' => 'string',
+ 'example' => '03cf3fe1-ab37-479b-92a6-b481d762****',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '1B7B7695-3596-50C8-B739-030C6C685E61',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'ResourceNotFound.AScript',
+ 'errorMessage' => 'The specified resource %s is not found.',
+ ],
+ [
+ 'errorCode' => 'IncorrectStatus.Listener',
+ 'errorMessage' => 'The status of %s [%s] is incorrect.',
+ ],
+ [
+ 'errorCode' => 'OperationDenied.CrossListenerAScripts',
+ 'errorMessage' => 'The operation is not allowed because of %s',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"03cf3fe1-ab37-479b-92a6-b481d762****\\",\\n \\"RequestId\\": \\"1B7B7695-3596-50C8-B739-030C******\\"\\n}","errorExample":""},{"type":"xml","example":"<DeleteAScriptsResponse>\\n <JobId>03cf3fe1-ab37-479b-92a6-b481d762****</JobId>\\n <RequestId>1B7B7695-3596-50C8-B739-030C6C685E61</RequestId>\\n</DeleteAScriptsResponse>","errorExample":""}]',
+ 'title' => 'DeleteAScripts',
+ 'description' => '**DeleteAScripts** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [ListAScripts](~~472574~~) operation to query the status of the task:'."\n"
+ ."\n"
+ .'* If an AScript rule is in the **Deleting** state, the AScript rule is being deleted.'."\n"
+ .'* If an AScript rule cannot be found, the AScript rule is deleted.'."\n",
+ ],
+ 'ListAScripts' => [
+ 'summary' => 'Queries AScript rules.',
+ 'methods' => [
+ 'get',
+ 'post',
+ ],
+ 'schemes' => [
+ 'http',
+ 'https',
+ ],
+ 'security' => [
+ [
+ 'AK' => [],
+ ],
+ ],
+ 'operationType' => 'read',
+ 'deprecated' => false,
+ 'systemTags' => [
+ 'operationType' => 'list',
+ ],
+ 'parameters' => [
+ [
+ 'name' => 'NextToken',
+ 'in' => 'query',
+ 'allowEmptyValue' => true,
+ 'schema' => [
+ 'title' => '标记当前开始读取的位置,置空表示从头开始',
+ 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* You do not need to specify this parameter for the first request.****'."\n"
+ .'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ ],
+ [
+ 'name' => 'MaxResults',
+ 'in' => 'query',
+ 'allowEmptyValue' => true,
+ 'schema' => [
+ 'title' => '本次读取的最大数据记录数量',
+ 'description' => 'The maximum number of entries to return.'."\n"
+ ."\n"
+ .'Valid values: **1** to **100**.'."\n"
+ ."\n"
+ .'Default value: **20**. If you do not specify this parameter, the default value is used.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'required' => false,
+ 'example' => '50',
+ ],
+ ],
+ [
+ 'name' => 'ListenerIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The listener IDs. You can specify at most 20 listener IDs in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'lsn-9v9b8576m2laih****',
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'AScriptIds',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The AScript rule IDs. You can specify at most 20 IDs in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The rule ID.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'as-aznwocxofkakf7****',
+ ],
+ 'required' => false,
+ ],
+ ],
+ [
+ 'name' => 'AScriptNames',
+ 'in' => 'query',
+ 'style' => 'flat',
+ 'schema' => [
+ 'description' => 'The AScript rule names. You can specify at most 10 names in each call.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The name of the AScript rule.'."\n",
+ 'type' => 'string',
+ 'required' => false,
+ 'example' => 'test',
+ ],
+ 'required' => false,
+ ],
+ ],
+ ],
+ 'responses' => [
+ 200 => [
+ 'schema' => [
+ 'title' => 'Schema of Response',
+ 'description' => 'Schema of Response'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'TotalCount' => [
+ 'title' => 'TotalCount本次请求条件下的数据总量,此参数为可选参数,默认可不返回',
+ 'description' => 'The total number of entries returned.'."\n"
+ ."\n"
+ .'> This parameter is optional. By default, this parameter is not returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '1000',
+ ],
+ 'RequestId' => [
+ 'title' => 'Id of the request',
+ 'description' => 'The request ID.'."\n",
+ 'type' => 'string',
+ 'example' => '2CA81429-F160-593A-8AB5-A2A9617845B9',
+ ],
+ 'NextToken' => [
+ 'title' => '表示当前调用返回读取到的位置,空代表数据已经读取完毕',
+ 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
+ ."\n"
+ .'* If **NextToken** is empty, no next page exists.'."\n"
+ .'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n",
+ 'type' => 'string',
+ 'required' => true,
+ 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****',
+ ],
+ 'MaxResults' => [
+ 'title' => 'MaxResults本次请求所返回的最大记录条数',
+ 'description' => 'The maximum number of entries returned.'."\n",
+ 'type' => 'integer',
+ 'format' => 'int32',
+ 'example' => '50',
+ ],
+ 'AScripts' => [
+ 'title' => '可编程脚本列表',
+ 'description' => 'The AScript rules.'."\n",
+ 'type' => 'array',
+ 'items' => [
+ 'description' => 'The AScript rule.'."\n",
+ 'type' => 'object',
+ 'properties' => [
+ 'AScriptId' => [
+ 'title' => '脚本id',
+ 'description' => 'The AScript rule ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'as-aznwocxofkakf7****',
+ ],
+ 'AScriptName' => [
+ 'title' => '脚本名称',
+ 'description' => 'The name of the AScript rule.'."\n",
+ 'type' => 'string',
+ 'example' => 'test',
+ ],
+ 'Enabled' => [
+ 'title' => '是否启用',
+ 'description' => 'Indicates whether the AScript rule is enabled. Valid values:'."\n"
+ ."\n"
+ .'* **true**'."\n"
+ .'* **false**'."\n",
+ 'type' => 'boolean',
+ 'example' => 'true',
+ ],
+ 'ScriptContent' => [
+ 'title' => '脚本内容',
+ 'description' => 'The content of the AScript rule.'."\n",
+ 'type' => 'string',
+ 'example' => '{test}',
+ ],
+ 'AScriptStatus' => [
+ 'title' => '脚本状态',
+ 'description' => 'The status of the AScript rule. Valid values:'."\n"
+ ."\n"
+ .'* **Creating**'."\n"
+ .'* **Available**'."\n"
+ .'* **Configuring**'."\n"
+ .'* **Deleting**'."\n",
+ 'type' => 'string',
+ 'example' => 'Available',
+ ],
+ 'ListenerId' => [
+ 'title' => '监听id',
+ 'description' => 'The listener ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'lsn-t0w1m9r6suiwmc****',
+ ],
+ 'LoadBalancerId' => [
+ 'title' => '实例id',
+ 'description' => 'The Application Load Balancer (ALB) instance ID.'."\n",
+ 'type' => 'string',
+ 'example' => 'alb-vv9rg2ub31tyec****',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'errorCodes' => [
+ 400 => [
+ [
+ 'errorCode' => 'Forbidden.LoadBalancer',
+ 'errorMessage' => 'Authentication has failed for LoadBalancer.',
+ ],
+ ],
+ ],
+ 'responseDemo' => '[{"type":"json","example":"{\\n \\"TotalCount\\": 1000,\\n \\"RequestId\\": \\"2CA81429-F160-593A-8AB5-A2A9617845B9\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"MaxResults\\": 50,\\n \\"AScripts\\": [\\n {\\n \\"AScriptId\\": \\"as-aznwocxofkakf7****\\",\\n \\"AScriptName\\": \\"test\\",\\n \\"Enabled\\": true,\\n \\"ScriptContent\\": \\"{test}\\",\\n \\"AScriptStatus\\": \\"Available\\",\\n \\"ListenerId\\": \\"lsn-t0w1m9r6suiwmc****\\",\\n \\"LoadBalancerId\\": \\"alb-vv9rg2ub31tyec****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<ListAScriptsResponse>\\n <TotalCount>1000</TotalCount>\\n <RequestId>2CA81429-F160-593A-8AB5-A2A9617845B9</RequestId>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <MaxResults>50</MaxResults>\\n <AScripts>\\n <AScriptId>as-aznwocxofkakf7****</AScriptId>\\n <AScriptName>test</AScriptName>\\n <Enabled>true</Enabled>\\n <ScriptContent>{test}</ScriptContent>\\n <AScriptStatus>Available</AScriptStatus>\\n <ListenerId>lsn-t0w1m9r6suiwmc****</ListenerId>\\n <LoadBalancerId>alb-vv9rg2ub31tyec****</LoadBalancerId>\\n </AScripts>\\n</ListAScriptsResponse>","errorExample":""}]',
+ 'title' => 'ListAScripts',
+ ],
+ ],
+ 'endpoints' => [
+ [
+ 'regionId' => 'cn-qingdao',
+ 'endpoint' => 'alb.cn-qingdao.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-beijing',
+ 'endpoint' => 'alb.cn-beijing.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-zhangjiakou',
+ 'endpoint' => 'alb.cn-zhangjiakou.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-zhengzhou-jva',
+ 'endpoint' => 'alb.cn-zhengzhou-jva.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wulanchabu',
+ 'endpoint' => 'alb.cn-wulanchabu.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hangzhou',
+ 'endpoint' => 'alb.cn-hangzhou.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shanghai',
+ 'endpoint' => 'alb.cn-shanghai.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-nanjing',
+ 'endpoint' => 'alb.cn-nanjing.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-fuzhou',
+ 'endpoint' => 'alb.cn-fuzhou.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shenzhen',
+ 'endpoint' => 'alb.cn-shenzhen.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-heyuan',
+ 'endpoint' => 'alb.cn-heyuan.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-guangzhou',
+ 'endpoint' => 'alb.cn-guangzhou.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-chengdu',
+ 'endpoint' => 'alb.cn-chengdu.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wuhan-lr',
+ 'endpoint' => 'alb.cn-wuhan-lr.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hongkong',
+ 'endpoint' => 'alb.cn-hongkong.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-northeast-1',
+ 'endpoint' => 'alb.ap-northeast-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-northeast-2',
+ 'endpoint' => 'alb.ap-northeast-2.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-1',
+ 'endpoint' => 'alb.ap-southeast-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-2',
+ 'endpoint' => 'alb.ap-southeast-2.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-3',
+ 'endpoint' => 'alb.ap-southeast-3.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-5',
+ 'endpoint' => 'alb.ap-southeast-5.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-6',
+ 'endpoint' => 'alb.ap-southeast-6.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'us-east-1',
+ 'endpoint' => 'alb.us-east-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'us-west-1',
+ 'endpoint' => 'alb.us-west-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'eu-west-1',
+ 'endpoint' => 'alb.eu-west-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'eu-central-1',
+ 'endpoint' => 'alb.eu-central-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-south-1',
+ 'endpoint' => 'alb.ap-south-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'me-east-1',
+ 'endpoint' => 'alb.me-east-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-hangzhou-finance',
+ 'endpoint' => 'alb.cn-hangzhou.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shanghai-finance-1',
+ 'endpoint' => 'alb.cn-shanghai-finance-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-shenzhen-finance-1',
+ 'endpoint' => 'alb.cn-shenzhen-finance-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'ap-southeast-7',
+ 'endpoint' => 'alb.ap-southeast-7.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-beijing-finance-1',
+ 'endpoint' => 'alb.cn-beijing-finance-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'me-central-1',
+ 'endpoint' => 'alb.me-central-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-heyuan-acdr-1',
+ 'endpoint' => 'alb.cn-heyuan-acdr-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'na-south-1',
+ 'endpoint' => 'alb.na-south-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'us-southeast-1',
+ 'endpoint' => 'alb.us-southeast-1.aliyuncs.com',
+ ],
+ [
+ 'regionId' => 'cn-wulanchabu-gic-1',
+ 'endpoint' => 'alb.cn-wulanchabu-gic-1.aliyuncs.com',
+ ],
+ ],
+];