diff options
| author | Zhineng Li <im@zhineng.li> | 2026-07-12 17:11:17 +0800 |
|---|---|---|
| committer | Zhineng Li <im@zhineng.li> | 2026-07-12 17:11:17 +0800 |
| commit | 1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634 (patch) | |
| tree | 5f0857666365b7e40cdaa3733ebe1f3ba9e13c67 /data/en_us/gwlb/2024-04-15 | |
| parent | 7347bac4ab7e136157fc94777e6cf87ef9e08599 (diff) | |
| download | afterglow-metadata-full-1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634.tar.gz afterglow-metadata-full-1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634.zip | |
update APIs 20260712
Diffstat (limited to 'data/en_us/gwlb/2024-04-15')
| -rw-r--r-- | data/en_us/gwlb/2024-04-15/api-docs.php | 7257 |
1 files changed, 3104 insertions, 4153 deletions
diff --git a/data/en_us/gwlb/2024-04-15/api-docs.php b/data/en_us/gwlb/2024-04-15/api-docs.php index 6504567..e3f5b21 100644 --- a/data/en_us/gwlb/2024-04-15/api-docs.php +++ b/data/en_us/gwlb/2024-04-15/api-docs.php @@ -1,212 +1,291 @@ <?php return [ 'version' => '1.0', - 'info' => [ - 'style' => 'RPC', - 'product' => 'Gwlb', - 'version' => '2024-04-15', - ], + 'info' => ['style' => 'RPC', 'product' => 'Gwlb', 'version' => '2024-04-15'], 'directories' => [ [ - 'id' => 198458, - 'title' => 'Region and zone management', + 'children' => ['UpdateLoadBalancerAttribute', 'UpdateLoadBalancerZones'], 'type' => 'directory', - 'children' => [ - 'DescribeRegions', - 'DescribeZones', - ], + 'title' => 'Instances', ], [ - 'id' => 198461, - 'title' => 'Gateway Load Balancer instances', + 'children' => ['CreateServerGroup', 'UpdateServerGroupAttribute', 'DeleteServerGroup', 'AddServersToServerGroup', 'ListServerGroups', 'ListServerGroupServers'], 'type' => 'directory', - 'children' => [ - 'CreateLoadBalancer', - 'UpdateLoadBalancerAttribute', - 'UpdateLoadBalancerZones', - 'DeleteLoadBalancer', - 'ListLoadBalancers', - 'GetLoadBalancerAttribute', - ], - ], - [ - 'id' => 198468, 'title' => 'Server groups', - 'type' => 'directory', - 'children' => [ - 'CreateServerGroup', - 'UpdateServerGroupAttribute', - 'DeleteServerGroup', - 'AddServersToServerGroup', - 'RemoveServersFromServerGroup', - 'ListServerGroups', - 'ListServerGroupServers', - ], - ], - [ - 'id' => 198476, - 'title' => 'Listeners', - 'type' => 'directory', - 'children' => [ - 'CreateListener', - 'UpdateListenerAttribute', - 'DeleteListener', - 'ListListeners', - 'GetListenerAttribute', - 'GetListenerHealthStatus', - ], ], [ - 'id' => 198483, - 'title' => 'Tags', + 'children' => ['CreateListener', 'UpdateListenerAttribute', 'DeleteListener', 'ListListeners', 'GetListenerAttribute'], 'type' => 'directory', - 'children' => [ - 'TagResources', - 'UntagResources', - 'ListTagResources', - ], + 'title' => 'Listeners', ], [ - 'id' => 198487, - 'title' => 'Resource groups', + 'children' => ['CreateLoadBalancer', 'DeleteLoadBalancer', 'DescribeRegions', 'DescribeZones', 'GetListenerHealthStatus', 'GetLoadBalancerAttribute', 'ListLoadBalancers', 'ListTagResources', 'MoveResourceGroup', 'RemoveServersFromServerGroup', 'TagResources', 'UntagResources'], + 'title' => 'Others', 'type' => 'directory', - 'children' => [ - 'MoveResourceGroup', - ], ], ], 'components' => [ 'schemas' => [], ], 'apis' => [ - 'DescribeRegions' => [ - 'summary' => 'Queries the most recent region list of Gateway Load Balancer (GWLB).', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'AddServersToServerGroup' => [ + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '222561', - 'abilityTreeNodes' => [ - 'FEATUREslbM7ALO6', - ], - 'tenantRelevance' => 'publicInformation', + 'abilityTreeCode' => '225056', + 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'AcceptLanguage', + 'name' => 'ServerGroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtoptyui****', 'title' => ''], + ], + [ + 'name' => 'Servers', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'description' => 'The supported language. Valid values:'."\n" + 'description' => 'The backend servers.'."\n" ."\n" - .'* **zh-CN**: Chinese'."\n" - .'* **en-US** (default): English'."\n" - .'* **ja**: Japanese'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'zh-CN', + .'> You can specify up to 200 backend servers in each call.', + 'type' => 'array', + 'items' => [ + 'description' => 'The backend server.', + 'type' => 'object', + 'properties' => [ + 'Port' => ['description' => 'The port that is used by the backend server. Valid values:'."\n" + ."\n" + .'- **6081**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '6081'], + 'ServerId' => ['description' => 'The ID of the backend server.'."\n" + ."\n" + .'- If the server group is of the **Instance** type, this parameter specifies the ID of an **ECS** instance, an **ENI**, or an **ECI** instance.'."\n" + ."\n" + .'- If the server group is of the **Ip** type, this parameter specifies an IP address.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'i-bp67acfmxazb4p****'], + 'ServerIp' => ['description' => 'The IP address of the backend server.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '192.168.XX.XX'], + 'ServerType' => [ + 'description' => 'The type of the backend server. Valid values:'."\n" + ."\n" + .'- **Ecs**: an ECS instance.'."\n" + ."\n" + .'- **Eni**: an elastic network interface (ENI).'."\n" + ."\n" + .'- **Eci**: an elastic container instance.'."\n" + ."\n" + .'- **Ip**: an IP address.', + 'type' => 'string', + 'required' => true, + 'enum' => ['Ecs', 'Eni', 'Eci', 'Ip'], + 'title' => '', + 'example' => 'Ecs', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => true, + 'maxItems' => 200, + 'title' => '', + 'example' => '', ], ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['description' => 'Specifies whether to perform a dry run. 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" + ."\n" + .'- **false** (default): sends the request. If the request passes the check, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a 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 **RequestId** of the request as the **ClientToken**. The **RequestId** may be different for each request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => 'The data structure of the response.', 'type' => 'object', 'properties' => [ - 'Regions' => [ - 'description' => 'A list of regions.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The details about the region.'."\n", - 'type' => 'object', - 'properties' => [ - 'LocalName' => [ - 'description' => 'The region name.'."\n", - 'type' => 'string', - 'example' => 'China (Hangzhou)', - ], - 'RegionEndpoint' => [ - 'description' => 'The region endpoint.'."\n", - 'type' => 'string', - 'example' => 'gwlb.cn-hangzhou.aliyuncs.com', - ], - 'RegionId' => [ - 'description' => 'The region ID.'."\n", - 'type' => 'string', - 'example' => 'cn-hangzhou', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '162FCE8D-CEEC-5083-90BF-B45D8C4F81FB', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], ], + 'example' => '', ], ], ], - 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Regions\\": [\\n {\\n \\"LocalName\\": \\"China (Hangzhou)\\",\\n \\"RegionEndpoint\\": \\"gwlb.cn-hangzhou.aliyuncs.com\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ],\\n \\"RequestId\\": \\"162FCE8D-CEEC-5083-90BF-B45D8C4F81FB\\"\\n}","type":"json"}]', - 'title' => 'DescribeRegions', - ], - 'DescribeZones' => [ - 'summary' => 'Queries the most recent zone list of Gateway Load Balancer (GWLB).', - 'methods' => [ - 'post', - 'get', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Conflict.Server', 'errorMessage' => 'The %s [%s] is conflict.', 'description' => 'There is already %s having the same configuration with %s.'], + ['errorCode' => 'Mismatch.ServerType', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'ServerType mismatch.'], + ['errorCode' => 'ResourceInUse.IP', 'errorMessage' => 'The specified resource of %s is in use.', 'description' => 'The specified resource of IP is in use.'], + ['errorCode' => 'IllegalParam.ServerIp', 'errorMessage' => 'The param of %s is illegal.', 'description' => 'The parameter ServerIp is invalid. Please check the input parameters.'], + ['errorCode' => 'IllegalParam.EcsNetworkType', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ['errorCode' => 'DuplicatedParam.Server', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'Duplicate server in parameter.'], + ['errorCode' => 'ResourceInUse.Eni', 'errorMessage' => 'The specified resource of %s is in use.', 'description' => 'The passed-in eni cannot be the eni used by the gateway loadbalancer instance. Please check the parameters.'], + ['errorCode' => 'IncorrectStatus.Eni', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Resource %s current state %s does not support operation'], + ['errorCode' => 'IllegalParam.IP', 'errorMessage' => 'The param of %s is illegal.', 'description' => 'The parameter IP is invalid. Please check the input value of the parameter IP.'], + ['errorCode' => 'Mismatch.IP', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The entered IP type server ID and IP do not match.'], + ['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The VPC IDs of the two resources do not match.'], + ['errorCode' => 'QuotaExceeded.ServerGroupServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota gwlb_quota_servergroup_servers_num has exceeded the quota limit.'], + ['errorCode' => 'QuotaExceeded.ServerGroupAzServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota gwlb_quota_servergroup_az_servers_num has exceeded the quota limit.'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.Eni', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified elastic network interfaces resource does not exist.'], + ['errorCode' => 'ResourceNotFound.Eci', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified elastic container instance resource does not exist.'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], + ['errorCode' => 'ResourceNotFound.Ecs', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified ECS resource does not exist.'], + ], ], - 'schemes' => [ - 'https', + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::ListServerGroupServers', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => 'AddServersToServerGroup', + 'summary' => 'Adds backend servers to a server group.', + 'description' => '**AddServersToServerGroup** is an asynchronous operation. After you send a request, the system returns a request ID, but the backend servers are not added to the server group immediately. The system adds the backend servers in the background.'."\n" + ."\n" + .'1. You can call the ListServerGroups operation to query the status of the server group:'."\n" + ."\n" + .'- If the server group is in the **Configuring** state, the server group is being modified.'."\n" + ."\n" + .'- If the server group is in the **Available** state, the server group is running.'."\n" + ."\n" + .'2. You can call the ListServerGroupServers operation to query the status of backend servers:'."\n" + ."\n" + .'- If a backend server is in the **Adding** state, the backend server is being added to the server group.'."\n" + ."\n" + .'- If a backend server is in the **Available** state, the backend server is running.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'AddServersToServerGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:AddServersToServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', + ], + 'CreateListener' => [ + 'summary' => 'Creates a listener for a Gateway Load Balancer (GWLB) instance.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '222562', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], - 'tenantRelevance' => 'publicInformation', + 'abilityTreeCode' => '220131', + 'abilityTreeNodes' => ['FEATUREslbPNW4R2'], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'AcceptLanguage', + 'name' => 'LoadBalancerId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the GWLB instance.', 'type' => 'string', 'required' => true, 'example' => 'gwlb-te609d6696632f7*****', 'title' => ''], + ], + [ + 'name' => 'ListenerDescription', + 'in' => 'formData', + 'schema' => ['description' => 'The description of the listener.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It can contain Chinese characters, letters, digits, commas (,), periods (.), semicolons (;), forward slashes (/), at signs (@), underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => false, 'example' => 'listener-description', 'title' => ''], + ], + [ + 'name' => 'ServerGroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The server group ID.', 'type' => 'string', 'required' => true, 'example' => 'sgp-ckh01px70dszof****', 'title' => ''], + ], + [ + 'name' => 'TcpIdleTimeout', + 'in' => 'formData', + 'schema' => ['title' => 'TCP连接空闲超时时间。默认值:**350**秒。'."\n" + ."\n" + .'取值范围:**60**-**6000**秒。', 'description' => 'The timeout period of an idle TCP connection.'."\n" + ."\n" + .'Valid values: **60** to **6000** seconds.'."\n" + ."\n" + .'Default value: **350** seconds.', 'type' => 'integer', 'format' => 'int32', 'default' => '350', 'required' => false, 'example' => '350'], + ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'- **true**: performs a dry run. The system checks the required parameters, the request format, and the 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" + ."\n" + .'- **false** (default): sends the request. If the request passes the check, an HTTP 2xx status code is returned and the operation is performed.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', 'in' => 'formData', + 'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a 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 **RequestId** of the request as the **ClientToken**. The **RequestId** may be different for each request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], + [ + 'name' => 'Tag', + 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'description' => 'The supported language. Valid values:'."\n" - ."\n" - .'* **zh-CN**: Chinese'."\n" - .'* **en-US** (default): English'."\n" - .'* **ja**: Japanese'."\n", - 'type' => 'string', + 'description' => 'The tags. You can specify up to 20 tags in each call.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key. If you specify this parameter, you cannot leave it empty. The tag key can be up to 128 characters in length and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'testKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'testValue', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => false, - 'example' => 'zh-CN', + 'maxItems' => 20, + 'title' => '', + 'example' => '', ], ], ], @@ -214,54 +293,70 @@ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => 'The returned data.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '4C605F7E-D0F6-54E2-B004-F9B132F0D8B2', - ], - 'Zones' => [ - 'description' => 'A list of zones.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the zone.'."\n", - 'type' => 'object', - 'properties' => [ - 'LocalName' => [ - 'description' => 'The zone name.'."\n", - 'type' => 'string', - 'example' => 'Hangzhou Zone G', - ], - 'ZoneId' => [ - 'description' => 'The zone ID.'."\n", - 'type' => 'string', - 'example' => 'cn-hangzhou-g', - ], - ], - ], - ], + 'ListenerId' => ['description' => 'The listener ID.', 'type' => 'string', 'title' => '', 'example' => 'lsn-wi3c0v30ivysrg****'], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A045E652-D298-5E70-A978-7247135336FB', 'title' => ''], ], + 'example' => '', ], ], ], - 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'Resource %s with business state %s does not support current operation'], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => 'The parameter of tag key is missing.'], + ['errorCode' => 'MissingParam.TagValue', 'errorMessage' => 'The param of TagValue is missing.', 'description' => 'The parameter of tag value is missing.'], + ['errorCode' => 'OperationDenied.TooManyListeners', 'errorMessage' => 'The operation is not allowed because of TooManyListener.', 'description' => 'The number of listeners of the load balancer instance exceeds the limit. The operation is denied.'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Resource %s current state %s does not support operation'], + ['errorCode' => 'ResourceInUse.IP', 'errorMessage' => 'The specified resource of IP is in use.', 'description' => ''], + ['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The VPC IDs of the two resources do not match.'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The parameter of tag key is duplicated.'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ['errorCode' => 'IllegalParam.TagValue', 'errorMessage' => 'The param of %s is illegal.', 'description' => 'The parameter of tag value is illegal.'], + ['errorCode' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', 'errorMessage' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', 'description' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of .LoadBalancer is not found.'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4C605F7E-D0F6-54E2-B004-F9B132F0D8B2\\",\\n \\"Zones\\": [\\n {\\n \\"LocalName\\": \\"Hangzhou Zone G\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'DescribeZones', + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => 'CreateListener', + 'description' => 'The **CreateListener** operation is asynchronous. After you send a request, the system returns a request ID. The listener is created in the background. You can call the [GetListenerAttribute](~~2853569~~) operation to query the creation status of the listener:'."\n" + ."\n" + .'- If a listener is in the **Provisioning** state, the listener is being created.'."\n" + ."\n" + .'- If a listener is in the **Running** state, the listener is created.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateListener'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateListener', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerId\\": \\"lsn-wi3c0v30ivysrg****\\",\\n \\"RequestId\\": \\"A045E652-D298-5E70-A978-7247135336FB\\"\\n}","type":"json"}]', ], 'CreateLoadBalancer' => [ 'summary' => 'Creates a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -274,9 +369,7 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221915', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -293,29 +386,20 @@ 'example' => 'IPv4', 'default' => 'Ipv4', 'enum' => [], + 'title' => '', ], ], [ 'name' => 'LoadBalancerName', 'in' => 'formData', - 'schema' => [ - 'description' => 'The GWLB instance 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' => 'testGwlbName', - ], + 'schema' => ['description' => 'The GWLB instance 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' => 'testGwlbName', 'title' => ''], ], [ 'name' => 'VpcId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The virtual private cloud (VPC) ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'vpc-uf6qcgpv22ttrnnjh****', - ], + 'schema' => ['description' => 'The virtual private cloud (VPC) ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'vpc-uf6qcgpv22ttrnnjh****', 'title' => ''], ], [ 'name' => 'ZoneMappings', @@ -328,23 +412,15 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'VSwitchId' => [ - 'description' => 'The ID of the vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of a GWLB instance.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'vsw-2f0eb020****', - ], - 'ZoneId' => [ - 'description' => 'The zone ID. You can call the DescribeZones operation to query the most recent zone list.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou-a', - ], + 'VSwitchId' => ['description' => 'The ID of the vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of a GWLB instance.'."\n", 'type' => 'string', 'required' => true, 'example' => 'vsw-2f0eb020****', 'title' => ''], + 'ZoneId' => ['description' => 'The zone ID. You can call the DescribeZones operation to query the most recent zone list.'."\n", 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou-a', 'title' => ''], ], 'required' => false, + 'title' => '', ], 'required' => true, 'maxItems' => 20, + 'title' => '', ], ], [ @@ -358,65 +434,40 @@ 'description' => 'The tag. You can specify up to 20 tags in each call.'."\n", 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string.'."\n" - ."\n" - .'It can be up to 128 characters in length, cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => 'The tag value. It can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testTagValue', - ], + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'It can be up to 128 characters in length, cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'testTagKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. It can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'testTagValue', 'title' => ''], ], 'required' => false, + 'title' => '', ], 'required' => false, 'maxItems' => 20, + 'title' => '', ], ], [ 'name' => 'ResourceGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The resource group ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rg-acfmwbufq6q3****', - ], + 'schema' => ['description' => 'The resource group ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'rg-acfmwbufq6q3****', 'title' => ''], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform 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', - ], + 'schema' => ['title' => '', 'description' => 'Specifies whether to perform 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' => 'ClientToken', 'in' => 'formData', - '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 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', - ], + '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'], ], ], 'responses' => [ @@ -426,67 +477,26 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'LoadBalancerId' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '00B19438-66BB-58C3-8C2F-DA5B6F95CBDA', - ], + 'LoadBalancerId' => ['description' => 'The GWLB instance ID.'."\n", 'type' => 'string', 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '00B19438-66BB-58C3-8C2F-DA5B6F95CBDA', 'title' => ''], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'DuplicatedParam.ZoneId', - 'errorMessage' => 'The param of ZoneId is duplicated.', - ], - [ - 'errorCode' => 'OperationDenied.VSwitchNotSupportIpv6', - 'errorMessage' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', - ], - [ - 'errorCode' => 'ResourceNotEnough.VSwitchIp', - 'errorMessage' => 'The specified resource of VSwitchIp is not enough.', - ], - [ - 'errorCode' => 'DuplicatedParam.VSwitchId', - 'errorMessage' => 'The param of VSwitchId is duplicated.', - ], - [ - 'errorCode' => 'IllegalParamSize.ZoneMappings', - 'errorMessage' => 'The param size of ZoneMappings is illegal.', - ], - [ - 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId', - 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', - ], - [ - 'errorCode' => 'QuotaExceeded.LoadBalancersNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"RequestId\\": \\"00B19438-66BB-58C3-8C2F-DA5B6F95CBDA\\"\\n}","type":"json"}]', + ['errorCode' => 'DuplicatedParam.ZoneId', 'errorMessage' => 'The param of ZoneId is duplicated.', 'description' => 'Duplicate ZoneId parameter in list'], + ['errorCode' => 'OperationDenied.VSwitchNotSupportIpv6', 'errorMessage' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', 'description' => 'The operation is not allowed because IPv6 is not enabled for the vSwitch.'], + ['errorCode' => 'ResourceNotEnough.VSwitchIp', 'errorMessage' => 'The specified resource of VSwitchIp is not enough.', 'description' => 'Insufficient vSwitch IP resources'], + ['errorCode' => 'DuplicatedParam.VSwitchId', 'errorMessage' => 'The param of VSwitchId is duplicated.', 'description' => 'Duplicate vSwitchId parameter in list'], + ['errorCode' => 'IllegalParamSize.ZoneMappings', 'errorMessage' => 'The param size of ZoneMappings is illegal.', 'description' => 'Illegal number of ZoneMappings lists'], + ['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', 'description' => 'The value of the ZoneId parameter does not match that of the vSwitchId'], + ['errorCode' => 'QuotaExceeded.LoadBalancersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota gwlb_quota_loadbalancers_num has exceeded the quota limit.'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The parameter of tag key is duplicated.'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ], + ], + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], 'title' => 'CreateLoadBalancer', 'description' => '**Ensure that you fully understand the billing methods and [pricing](~~2806160~~) of GWLB before calling this operation.**'."\n" ."\n" @@ -496,98 +506,307 @@ ."\n" .' * If the GWLB instance is in the **Provisioning** state, the GWLB instance is being created.'."\n" .' * If the GWLB instance is in the **Active** state, the GWLB instance is created.'."\n", - ], - 'UpdateLoadBalancerAttribute' => [ - 'summary' => 'Updates the attributes of a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateLoadBalancer'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateLoadBalancer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"RequestId\\": \\"00B19438-66BB-58C3-8C2F-DA5B6F95CBDA\\"\\n}","type":"json"}]', + ], + 'CreateServerGroup' => [ + 'summary' => 'Creates a server group for a Gateway Load Balancer (GWLB) instance.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221916', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], + 'abilityTreeCode' => '225035', + 'abilityTreeNodes' => ['FEATUREslb88O4KB', 'FEATUREslb98XMCW', 'FEATUREslb4EL8LZ', 'FEATUREslb5QFSS9'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'LoadBalancerId', + 'name' => 'ServerGroupType', 'in' => 'formData', 'schema' => [ - 'description' => 'The GWLB instance ID.'."\n", + 'description' => 'The type of the server group. Valid values:'."\n" + ."\n" + .'- **Instance** (default): allows you to specify resources of the **Ecs**, **Eni**, or **Eci** type.'."\n" + ."\n" + .'- **Ip**: allows you to add servers by specifying their IP addresses.', 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-9njtjmqt7zfcqm****', + 'enum' => ['Instance', 'Ip'], + 'title' => '', + 'required' => false, + 'example' => 'Instance', ], ], [ - 'name' => 'LoadBalancerName', + 'name' => 'ServerGroupName', + 'in' => 'formData', + 'schema' => ['description' => 'The server group name.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'testServerGroupName'], + ], + [ + 'name' => 'Protocol', 'in' => 'formData', 'schema' => [ - 'description' => 'The GWLB instance name.'."\n" + 'description' => 'The backend protocol. Valid value:'."\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", + .'- **GENEVE** (default)', + 'enumValueTitles' => ['GENEVE' => 'GENEVE'], 'type' => 'string', + 'enum' => ['GENEVE'], + 'title' => '', 'required' => false, - 'example' => 'testGwlbName', + 'example' => 'GENEVE', ], ], [ - 'name' => 'DryRun', + 'name' => 'Scheduler', 'in' => 'formData', 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform a dry run, without performing the actual request. Valid values:'."\n" + 'description' => 'The scheduling algorithm. Valid values:'."\n" + ."\n" + .'- **5TCH** (default): specifies consistent hashing that is based on the following factors: source IP address, destination IP address, source port, protocol, and destination port. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" + ."\n" + .'- **3TCH**: specifies consistent hashing that is based on the following factors: source IP address, destination IP address, and protocol. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\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', + .'- **2TCH**: specifies consistent hashing that is based on the following factors: source IP address and destination IP address. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.', + 'type' => 'string', + 'enum' => ['5TCH', '3TCH', '2TCH'], + 'title' => '', 'required' => false, - 'example' => 'false', + 'example' => '5TCH', ], ], [ - 'name' => 'ClientToken', + 'name' => 'ServerFailoverMode', 'in' => 'formData', 'schema' => [ - 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + 'description' => 'Specifies how GWLB processes requests over existing connections when a backend server is not running as expected. Valid values:'."\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" + .'- **NoRebalance** (default): GWLB continues to forward requests over existing connections to the unavailable backend server.'."\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", + .'- **Rebalance**: GWLB forwards requests over existing connections to the remaining healthy backend servers.', 'type' => 'string', + 'title' => '', + 'enum' => ['NoRebalance', 'Rebalance'], 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-426655440000', + 'example' => 'NoRebalance', ], ], [ - 'name' => 'TrafficMode', + 'name' => 'VpcId', + 'in' => 'formData', + 'schema' => ['description' => 'The VPC ID.'."\n" + ."\n" + .'> If **ServerGroupType** is set to **Instance**, only servers in the specified VPC can be added to the server group.', 'type' => 'string', 'required' => true, 'docRequired' => false, 'title' => '', 'example' => 'vpc-bp15zckdt37pq72zv****'], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The resource group ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'rg-atstuj3rtop****'], + ], + [ + 'name' => 'ConnectionDrainConfig', + 'in' => 'formData', + 'style' => 'flat', + 'schema' => [ + 'title' => '', + 'description' => 'The configurations of connection draining.', + 'type' => 'object', + 'properties' => [ + 'ConnectionDrainEnabled' => ['description' => 'Specifies whether to enable connection draining. Valid values:'."\n" + ."\n" + .'- **true**'."\n" + ."\n" + .'- **false**', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], + 'ConnectionDrainTimeout' => ['description' => 'The timeout period of connection draining.'."\n" + ."\n" + .'Unit: seconds'."\n" + ."\n" + .'Valid values: **1** to **3600**.'."\n" + ."\n" + .'Default value: **300**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '300'], + ], + 'required' => false, + 'example' => '', + ], + ], + [ + 'name' => 'HealthCheckConfig', + 'in' => 'formData', + 'style' => 'flat', + 'schema' => [ + 'title' => '', + 'description' => 'The health check configurations.', + 'type' => 'object', + 'properties' => [ + 'HealthCheckConnectPort' => ['description' => 'The backend server port used for health checks.'."\n" + ."\n" + .'Valid values: **1** to **65535**.'."\n" + ."\n" + .'Default value: **80**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '80'], + 'HealthCheckConnectTimeout' => ['description' => 'The maximum timeout period for a health check response.'."\n" + ."\n" + .'Unit: seconds.'."\n" + ."\n" + .'Valid values: **1** to **300**.'."\n" + ."\n" + .'Default value: **5**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '5'], + 'HealthCheckDomain' => ['description' => 'The domain name used for health checks. Valid values:'."\n" + ."\n" + .'- **$SERVER\\_IP** (default): the private IP address of a backend server.'."\n" + ."\n" + .'- **domain**: a domain name. The domain name must be 1 to 80 characters in length, and can contain letters, digits, hyphens (-), and periods (.).'."\n" + ."\n" + .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '$SERVER_IP'], + 'HealthCheckEnabled' => ['description' => 'Specifies whether to enable health checks. Valid values:'."\n" + ."\n" + .'- **true** (default)'."\n" + ."\n" + .'- **false**', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'], + 'HealthCheckHttpCode' => [ + 'title' => '', + 'description' => 'The HTTP status codes that the system returns for health checks.', + 'type' => 'array', + 'items' => [ + 'description' => 'The HTTP status codes returned for health checks. Multiple HTTP status codes are separated by commas (,). Valid values:'."\n" + ."\n" + .'- **http\\_2xx**'."\n" + ."\n" + .'- **http\\_3xx**'."\n" + ."\n" + .'- **http\\_4xx**'."\n" + ."\n" + .'- **http\\_5xx**'."\n" + ."\n" + .'Default value: **http\\_2xx**.'."\n" + ."\n" + .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.', + 'type' => 'string', + 'enum' => ['http_2xx', 'http_3xx', 'http_4xx', 'http_5xx'], + 'required' => false, + 'example' => 'http_2xx', + 'title' => '', + ], + 'required' => false, + 'example' => '', + ], + 'HealthCheckInterval' => ['description' => 'The interval at which health checks are performed.'."\n" + ."\n" + .'Unit: seconds.'."\n" + ."\n" + .'Valid values: **1** to **50**.'."\n" + ."\n" + .'Default value: **10**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '10'], + 'HealthCheckPath' => ['description' => 'The path used for health checks.'."\n" + ."\n" + .'It must be 1 to 80 characters in length, and can contain letters, digits, hyphens (-), forward slashes (/), periods (.), percent signs (%), question marks (?), number signs (#), and ampersands (&). The URL can also contain the following extended characters: \\_ ; \\~ ! ( ) \\* \\[ ] @ $ ^ : \' , + ='."\n" + ."\n" + .'It must start with a forward slash (/).'."\n" + ."\n" + .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/test/index.html'], + 'HealthCheckProtocol' => [ + 'description' => 'The protocol used for health checks. Valid values:'."\n" + ."\n" + .'- **TCP** (default): GWLB performs TCP health checks by sending SYN packets to a backend server to check whether the port of the backend server is available to receive requests.'."\n" + ."\n" + .'- **HTTP**: GWLB performs HTTP health checks to check whether backend servers are healthy by sending GET requests which simulate access from browsers.', + 'type' => 'string', + 'enum' => ['TCP', 'HTTP'], + 'title' => '', + 'required' => false, + 'example' => 'TCP', + ], + 'HealthyThreshold' => ['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: **2**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '2'], + 'UnhealthyThreshold' => ['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: **2**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '2'], + 'HealthCheckReq' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], + 'HealthCheckExp' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], + ], + 'required' => false, + 'example' => '', + ], + ], + [ + 'name' => 'Tag', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'description' => 'Specifies the traffic processing mode. Valid values:'."\n" + 'title' => '', + 'description' => 'The tag keys.'."\n" ."\n" - .'* **LoadBalance**: load balancing mode. In this mode, GWLB forwards traffic to backend servers.'."\n" - .'* **ByPass**: bypass mode. GWLB returns traffic directly to the GWLB endpoint instead of forwarding the traffic to backend servers.'."\n", - 'type' => 'string', + .'You can specify at most 20 tags in each call.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'testTagKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'testTagValue', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => false, - 'example' => 'LoadBalance', + 'maxItems' => 20, + 'example' => '', ], ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + '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 code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + ."\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.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'False'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + '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 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.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], ], 'responses' => [ 200 => [ @@ -596,236 +815,154 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], + 'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'example' => 'sgp-atstuj3rtoptyui****', 'title' => ''], ], + 'example' => '', ], ], ], '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' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'IllegalParam.HealthCheckProtocol', 'errorMessage' => 'The param of %s is illegal.', 'description' => 'The health check protocol is invalid. Check the input parameters.'], + ['errorCode' => 'QuotaExceeded.ServerGroupsNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota gwlb_quota_servergroups_num has exceeded the quota limit.'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The parameter of tag key is duplicated.'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.Vpc', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified virtual private cloud resource does not exist.'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD\\"\\n}","type":"json"}]', - 'title' => 'UpdateLoadBalancerAttribute', - 'description' => '* UpdateLoadBalancerAttribute 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 operation to query the status of the GWLB instance.'."\n" + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::ListServerGroups', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + '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 the ListServerGroups operation to query the status of the task.'."\n" ."\n" - .' * If the GWLB instance is in the Configuring state, the GWLB instance is being modified.'."\n" - .' * If the GWLB instance is in the Active state, the GWLB instance is modified.'."\n", - ], - 'UpdateLoadBalancerZones' => [ - 'summary' => 'Updates the zones of a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', + .'- If the server group is in the **Creating** state, it indicates that the server group is being created.'."\n" + ."\n" + .'- If the server group is in the **Available** state, it indicates that the server group is created.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateServerGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\"\\n}","type":"json"}]', + ], + 'DeleteListener' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221912', - 'abilityTreeNodes' => [ - 'FEATUREslb23BWZ4', - ], + 'abilityTreeCode' => '221398', + 'abilityTreeNodes' => ['FEATUREslbC68LB1'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'LoadBalancerId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], - ], - [ - 'name' => 'ZoneMappings', + 'name' => 'ListenerId', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => 'The mappings between zones and vSwitches. You must specify at least one zone. You can specify at most 20 zones. If the region supports two or more zones, we recommend that you select two or more zones.', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'VSwitchId' => [ - 'description' => 'The ID of the vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of a GWLB instance.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'vsw-bp1n75pbs77v5q6p3****', - ], - 'ZoneId' => [ - 'description' => 'The zone ID. You can call the DescribeZones operation to query the most recent zone list.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou-h', - ], - ], - 'required' => false, - ], - 'required' => true, - 'maxItems' => 20, - ], + 'schema' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => true, 'example' => 'lsn-brx2y3hqdincizg***', 'title' => ''], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform 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', - ], + 'schema' => ['description' => 'Specifies whether to perform a dry run. 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" + ."\n" + .'- **false** (default): sends a normal request. If the request passes the check, an HTTP 2xx status code is returned and the operation is performed.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - '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 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-42665544****', - ], + 'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a 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 **RequestId** of the request as the **ClientToken**. The **RequestId** may be different for each request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => 'The data returned.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'ED8905C2-A4F6-5E43-87B7-6A5DC8757146', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5C6E3548-086F-5FF6-A2B3-B1871B3AB488', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'OperationDenied.VSwitchChangeNotSupport', - 'errorMessage' => 'The operation is not allowed because of VSwitchChangeNotSupport.', - ], - [ - 'errorCode' => 'DuplicatedParam.VSwitchId', - 'errorMessage' => 'The param of VSwitchId is duplicated.', - ], - [ - 'errorCode' => 'DuplicatedParam.ZoneId', - 'errorMessage' => 'The param of ZoneId is duplicated.', - ], - [ - 'errorCode' => 'IllegalParamSize.ZoneMappings', - 'errorMessage' => 'The param size of ZoneMappings is illegal.', - ], - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId', - 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', - ], - [ - 'errorCode' => 'MissingParam.LoadBalancerId', - 'errorMessage' => 'The param of LoadBalancerId is missing.', - ], - [ - 'errorCode' => 'OperationDenied.VSwitchNotSupportIpv6', - 'errorMessage' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', - ], - [ - 'errorCode' => 'ResourceAlreadyAssociated.GwlbeAssociated', - 'errorMessage' => 'The specified resource of %s is already associated.', - ], - [ - 'errorCode' => 'ResourceNotEnough.VSwitchIp', - 'errorMessage' => 'The specified resource of VSwitchIp is not enough.', - ], - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'Resource %s with business state %s does not support current operation'], + ['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Operation not supported for resource% s in current state% s.'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Resource %s current state %s does not support operation'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of .LoadBalancer is not found.'], + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"ED8905C2-A4F6-5E43-87B7-6A5DC8757146\\"\\n}","type":"json"}]', - 'title' => 'UpdateLoadBalancerZones', - 'description' => '**Ensure that you fully understand the billing methods and [pricing](~~2806160~~) of GWLB before calling this operation.**'."\n" - ."\n" - .'**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 the [GetLoadBalancerAttribute](~~2853555~~) operation to query the status of the GWLB instance.'."\n" + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => 'DeleteListener', + 'summary' => 'Deletes a Server Load Balancer listener.', + 'description' => '**DeleteListener** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. The listener is not deleted immediately. You can call the **GetListenerAttribute** operation to query the status of the listener:'."\n" ."\n" - .'* If the GWLB instance is in the **Configuring** state, the GWLB instance is being modified.'."\n" - .'* If the GWLB instance is in the **Active** state, the GWLB instance is modified.'."\n" + .'- If the listener is in the **Deleting** state, it is being deleted.'."\n" ."\n" - .'> Before you initiate a call, ensure that all zones, including the current zones and the zones that you want to add, are specified. The zones that you do not specify are deleted. You can call the GetLoadBalancerAttribute operation to query the current zones of your GWLB instance.'."\n", + .'- If you cannot query the listener, it has been deleted.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteListener'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteListener', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5C6E3548-086F-5FF6-A2B3-B1871B3AB488\\"\\n}","type":"json"}]', ], 'DeleteLoadBalancer' => [ - 'summary' => 'Deletes a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -838,9 +975,7 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221917', - 'abilityTreeNodes' => [ - 'FEATUREslb12YEWG', - ], + 'abilityTreeNodes' => ['FEATUREslb12YEWG'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -848,41 +983,25 @@ [ 'name' => 'LoadBalancerId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], + 'schema' => ['description' => 'The ID of the Gateway Load Balancer instance.', 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform a dry run, without sending 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', - ], + 'schema' => ['description' => 'Specifies whether to perform a dry run. 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" + ."\n" + .'- **false** (default): sends the request. If the request passes the check, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - '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 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', - ], + 'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a 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 **RequestId** of the request as the **ClientToken**. The **RequestId** of each request may be different.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ @@ -892,289 +1011,471 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '37907828-01AB-5AC3-9DDE-25D419091D54', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '37907828-01AB-5AC3-9DDE-25D419091D54', 'title' => ''], ], + 'example' => '', ], ], ], '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' => 'MissingParam.LoadBalancerId', - 'errorMessage' => 'The param of LoadBalancerId is missing.', - ], - [ - 'errorCode' => 'ResourceAlreadyAssociated.GwlbeAssociated', - 'errorMessage' => 'The specified resource of %s is already associated.', - ], - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'Resource %s with business state %s does not support current operation'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Resource %s current state %s does not support operation'], + ['errorCode' => 'MissingParam.LoadBalancerId', 'errorMessage' => 'The param of LoadBalancerId is missing.', 'description' => 'Load balancing ID parameter missing'], + ['errorCode' => 'ResourceAlreadyAssociated.GwlbeAssociated', 'errorMessage' => 'The specified resource of %s is already associated.', 'description' => 'The specified resource %s is already associated'], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DeleteLoadBalancer', + 'summary' => 'Deletes a Gateway Load Balancer instance.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteLoadBalancer'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteLoadBalancer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"37907828-01AB-5AC3-9DDE-25D419091D54\\"\\n}","type":"json"}]', - 'title' => 'DeleteLoadBalancer', ], - 'ListLoadBalancers' => [ - 'summary' => 'Queries Gateway Load Balancer (GWLB) instances.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'DeleteServerGroup' => [ + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221914', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], + 'abilityTreeCode' => '225038', + 'abilityTreeNodes' => ['FEATUREslb5QFSS9'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ZoneIds', + 'name' => 'ServerGroupId', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => 'The zone IDs. You can query at most 20 zone IDs in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The zone ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-beijing-h', - ], - 'required' => false, - 'maxItems' => 20, - ], + 'schema' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'sgp-atstuj3rtoptyui****'], ], [ - 'name' => 'VpcIds', + 'name' => 'DryRun', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '专有网络唯一标识', - 'description' => 'The virtual private cloud (VPC) IDs. You can query at most 20 IDs in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The VPC ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'vpc-bp1xuejaht4o7yhh2****', - ], - 'required' => false, - 'maxItems' => 20, - ], + 'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'- **true**: sends a check request without deleting the server group. The system checks whether the required parameters are specified, the request format is valid, and the service limits are met. If the request fails the check, the corresponding error is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n" + ."\n" + .'- **false** (default): sends a normal request. After the request passes the check, an HTTP 2xx status code is returned and the operation is performed.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], ], [ - 'name' => 'AddressIpVersion', + 'name' => 'ClientToken', 'in' => 'formData', + 'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a value, and you must make sure that the value is unique among different requests. The ClientToken parameter can contain only ASCII characters.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each API request may be different.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '协议类型', - 'description' => 'The IP version of the NLB instance. Valid values:'."\n" - ."\n" - .'* **Ipv4**'."\n" - ."\n" - .'Enumeration values:'."\n" - ."\n" - .'* IPv4: IPv4'."\n" - .'* DualStack: dual-stack'."\n", - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'IPv4' => 'IPv4', - 'DualStack' => 'DualStack', + 'title' => '', + 'description' => 'The returned data.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], ], - 'example' => 'IPv4', - 'enum' => [], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IncorrectStatus.BackendServer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The current operation cannot be performed on the server as its status is unavailable. Please check if the server is currently undergoing any other operations.'], + ['errorCode' => 'ResourceInUse.ServerGroup', 'errorMessage' => 'The specified resource of %s is in use.', 'description' => 'The specified server group resource is in use, please try again later.'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DeleteServerGroup', + 'summary' => 'Deletes a server group.', + 'description' => 'You can delete a server group only if it is not associated with a listener.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteServerGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', + ], + 'DescribeRegions' => [ + 'summary' => 'Queries the regions and endpoints supported by load balancing.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'LoadBalancerStatus', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '222561', + 'abilityTreeNodes' => ['FEATUREslbM7ALO6'], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'AcceptLanguage', 'in' => 'formData', + 'schema' => ['description' => 'The supported language. Valid values:'."\n" + ."\n" + .'- **zh-CN**: Chinese.'."\n" + ."\n" + .'- **en-US** (default): English.'."\n" + ."\n" + .'- **ja**: Japanese.', 'type' => 'string', 'required' => false, 'example' => 'zh-CN', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '实例状态', - 'description' => 'The GWLB instance status. Valid values:'."\n" - ."\n" - .'* **Active**: The GWLB instance is running.'."\n" - .'* **Inactive**: The GWLB instance is disabled. Listeners of GWLB instances in the Inactive state do not forward traffic.'."\n" - .'* **Provisioning**: The GWLB instance is being created.'."\n" - .'* **Configuring**: The GWLB instance is being modified.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Active', + 'title' => '', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Regions' => [ + 'description' => 'The list of regions.', + 'type' => 'array', + 'items' => [ + 'description' => 'The region information.', + 'type' => 'object', + 'properties' => [ + 'LocalName' => ['description' => 'The region name.', 'type' => 'string', 'example' => 'China (Hangzhou)', 'title' => ''], + 'RegionEndpoint' => ['description' => 'The endpoint of the region.', 'type' => 'string', 'example' => 'gwlb.cn-hangzhou.aliyuncs.com', 'title' => ''], + 'RegionId' => ['description' => 'The region ID.', 'type' => 'string', 'example' => 'cn-hangzhou', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '162FCE8D-CEEC-5083-90BF-B45D8C4F81FB', 'title' => ''], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Regions\\": [\\n {\\n \\"LocalName\\": \\"China (Hangzhou)\\",\\n \\"RegionEndpoint\\": \\"gwlb.cn-hangzhou.aliyuncs.com\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ],\\n \\"RequestId\\": \\"162FCE8D-CEEC-5083-90BF-B45D8C4F81FB\\"\\n}","type":"json"}]', + 'title' => 'Query regions', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeRegions'], + ], + ], + 'ramActions' => [], + ], + 'DescribeZones' => [ + 'summary' => 'Queries the zones that support Server Load Balancer.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'LoadBalancerBusinessStatus', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '222562', + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'AcceptLanguage', 'in' => 'formData', + 'schema' => ['description' => 'The supported language. Valid values:'."\n" + ."\n" + .'- **zh-CN**: Chinese'."\n" + ."\n" + .'- **en-US** (default): English'."\n" + ."\n" + .'- **ja**: Japanese', 'type' => 'string', 'required' => false, 'example' => 'zh-CN', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '实例业务状态', - 'description' => 'The business status of the GWLB instance. Valid values:'."\n" - ."\n" - .'* **Normal**: running as expected'."\n" - .'* **FinancialLocked**: locked due to overdue payments'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Normal', + 'title' => '', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '4C605F7E-D0F6-54E2-B004-F9B132F0D8B2', 'title' => ''], + 'Zones' => [ + 'description' => 'The list of zones.', + 'type' => 'array', + 'items' => [ + 'description' => 'The zone object.', + 'type' => 'object', + 'properties' => [ + 'LocalName' => ['description' => 'The name of the zone.', 'type' => 'string', 'example' => 'Hangzhou Zone G', 'title' => ''], + 'ZoneId' => ['description' => 'The ID of the zone.', 'type' => 'string', 'example' => 'cn-hangzhou-g', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4C605F7E-D0F6-54E2-B004-F9B132F0D8B2\\",\\n \\"Zones\\": [\\n {\\n \\"LocalName\\": \\"Hangzhou Zone G\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribeZones', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeZones'], + ], + ], + 'ramActions' => [], + ], + 'GetListenerAttribute' => [ + 'summary' => 'Queries the attributes of a listener for a Gateway Load Balancer (GWLB) instance.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'LoadBalancerNames', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '221399', + 'abilityTreeNodes' => ['FEATUREslbC68LB1'], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'ListenerId', 'in' => 'formData', - 'style' => 'flat', + 'schema' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => true, 'example' => 'lsn-brx2y3hqdinciz****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '负载均衡实例名称', - 'description' => 'The GWLB instance names. You can specify at most 20 GWLB instance names in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The GWLB instance name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testGwlbName', + 'title' => '', + 'description' => 'The data returned.', + 'type' => 'object', + 'properties' => [ + 'ListenerDescription' => ['description' => 'The custom description of the listener.'."\n" + ."\n" + .'The description must be 2 to 256 characters in length. It can contain Chinese characters, letters, digits, commas (,), periods (.), semicolons (;), forward slashes (/), at signs (@), underscores (\\_), and hyphens (-).', 'type' => 'string', 'title' => '', 'example' => 'listener_description'], + 'ListenerId' => ['description' => 'The listener ID.', 'type' => 'string', 'title' => '', 'example' => 'lsn-3kbj3587mqhm3p****'], + 'ListenerStatus' => ['description' => 'The status of the listener. Valid values:'."\n" + ."\n" + .'- **Provisioning**: The listener is being created.'."\n" + ."\n" + .'- **Running**: The listener is running.'."\n" + ."\n" + .'- **Configuring**: The listener is being configured.'."\n" + ."\n" + .'- **Deleting**: The listener is being deleted.', 'type' => 'string', 'title' => '', 'example' => 'Provisioning'], + 'LoadBalancerId' => ['description' => 'The ID of the Gateway Load Balancer instance.', 'type' => 'string', 'title' => '', 'example' => 'gwlb-te609d6696632f76****'], + 'RegionId' => ['description' => 'The ID of the region where the Gateway Load Balancer instance is deployed.', 'type' => 'string', 'title' => '', 'example' => 'cn-hangzhou'], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '75CC3312-7757-5EE1-90D8-49CEA66608AE', 'title' => ''], + 'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'title' => '', 'example' => 'sgp-sp8d2r6y7t0xtl****'], + 'TcpIdleTimeout' => ['title' => 'TCP连接空闲超时时间。', 'description' => 'The timeout period of an idle TCP connection.', 'type' => 'integer', 'format' => 'int32', 'example' => '350'], + 'Tags' => [ + 'description' => 'The list of tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'testKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'testValue', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], ], - 'required' => false, - 'maxItems' => 20, + 'example' => '', ], ], + ], + 'errorCodes' => [ + 404 => [ + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'GetListenerAttribute', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetListenerAttribute'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetListenerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerDescription\\": \\"listener_description\\",\\n \\"ListenerId\\": \\"lsn-3kbj3587mqhm3p****\\",\\n \\"ListenerStatus\\": \\"Provisioning\\",\\n \\"LoadBalancerId\\": \\"gwlb-te609d6696632f76****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RequestId\\": \\"75CC3312-7757-5EE1-90D8-49CEA66608AE\\",\\n \\"ServerGroupId\\": \\"sgp-sp8d2r6y7t0xtl****\\",\\n \\"TcpIdleTimeout\\": 350,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testKey\\",\\n \\"Value\\": \\"testValue\\"\\n }\\n ]\\n}","type":"json"}]', + ], + 'GetListenerHealthStatus' => [ + 'summary' => 'Queries the health check status of a Gateway Load Balancer (GWLB) listener.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'ResourceGroupId', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '221400', + 'abilityTreeNodes' => ['FEATUREslbL239O5'], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'ListenerId', 'in' => 'formData', - 'schema' => [ - 'title' => '企业资源组标识', - 'description' => 'The resource group ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rg-aek2htf5qsyrn****', - ], + 'schema' => ['description' => 'The listener ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'lsn-7sixpvm5fc3v0b****', 'title' => ''], ], [ - 'name' => 'LoadBalancerIds', + 'name' => 'NextToken', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '实例列表', - 'description' => 'The GWLB instance IDs. You can query at most 20 GWLB instances in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-cp6prgqy40hols****', - ], - 'required' => false, - 'maxItems' => 20, - ], + 'schema' => ['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 a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", 'type' => 'string', 'required' => false, 'example' => '4f1d7cc9f51e18904e8a063603a6b0c3d03bc69f78734254e0b5e8707e68****'], ], [ - 'name' => 'TrafficMode', + 'name' => 'MaxResults', 'in' => 'formData', - 'schema' => [ - 'description' => 'Specifies the traffic processing mode. Valid values:'."\n" - ."\n" - .'* **LoadBalance**: load balancing mode. GWLB continues to forward traffic to backend servers.'."\n" - .'* **ByPass**: bypass mode. GWLB directly returns traffic to the GWLB endpoint without forwarding it to the backend servers.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'LoadBalance', - ], + 'schema' => ['title' => '', 'description' => 'The number of entries per page. Valid values: 1 to 1000. Default value: 20.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '1000', 'minimum' => '1', 'example' => '20'], ], [ - 'name' => 'Tag', + 'name' => 'Skip', + 'in' => 'formData', + 'schema' => ['description' => 'The number of entries to be skipped in the call.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'Filter', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'title' => '标签', - 'description' => 'The tags. You can specify up to 20 tags in each call.'."\n", + 'description' => 'The filter conditions. You can specify at most 20 filter conditions.'."\n", 'type' => 'array', 'items' => [ - 'description' => 'The information about the tag.'."\n", + 'description' => 'The filter condition.'."\n", 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. You cannot specify an empty string as a tag key.'."\n" + 'Name' => [ + 'description' => 'The filter condition name. You can filter by one or more filter condition names. The URL must meet the following requirements:'."\n" ."\n" - .'The tag key can be up to 128 characters in length, cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", + .'* **Status**: the health status.'."\n" + .'* **ReasonCode**: the cause of an unhealthy server.'."\n" + .'* **ServerId**: the ID of the backend server.'."\n" + .'* **ServerIp**: the IP address of the backend server.'."\n", 'type' => 'string', 'required' => false, - 'example' => 'testTagKey', + 'example' => 'Status', + 'enum' => ['Status', 'ReasonCode', 'ServerId', 'ServerIp'], + 'title' => '', ], - 'Value' => [ - 'description' => 'The tag value. It can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', + 'Values' => [ + 'description' => 'The filter condition values. You can specify at most 20 condition values.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The filter condition value. The valid values vary based on the specified filter condition name in the response.'."\n", 'type' => 'string', 'required' => false, 'example' => 'Unhealthy', 'title' => ''], 'required' => false, - 'example' => 'testTagValue', + 'maxItems' => 20, + 'minItems' => 1, + 'title' => '', ], ], 'required' => false, + 'title' => '', ], 'required' => false, 'maxItems' => 20, - ], - ], - [ - 'name' => 'NextToken', - 'in' => 'formData', - 'schema' => [ - '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 a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'WyJyb290IiwibiIsIm4iLDEsMCwxNjg1MDY1NTgyNzYwLCI2NDcwMGY2ZTc2Zjc0MWFiZGEyZjQyNzc4ZDk2MmJkOTk3ZGZmM2Nm****', - ], - ], - [ - 'name' => 'MaxResults', - 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => 'The number of entries per page. Valid values: 1 to 1000. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], - ], - [ - 'name' => 'Skip', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of entries to be skipped in the call.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', + 'minItems' => 1, + 'title' => '', ], ], ], @@ -1182,180 +1483,124 @@ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'LoadBalancers' => [ - 'description' => 'The GWLB instances.'."\n", + 'ListenerHealthStatus' => [ + 'description' => 'The health check status of the server groups that are associated with the listener.'."\n", 'type' => 'array', 'items' => [ - 'description' => 'The information about the GWLB instances.'."\n", + 'description' => 'The health check status of the server groups that are associated with the listener.'."\n", 'type' => 'object', 'properties' => [ - 'AddressIpVersion' => [ - 'description' => 'The IP version. Valid values:'."\n" - ."\n" - .'* **IPv4**'."\n", - 'type' => 'string', - 'example' => 'IPv4', - ], - 'CreateTime' => [ - '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' => '2024-08-05 18:24:07', - ], - 'LoadBalancerBusinessStatus' => [ - 'description' => 'The business status of the GWLB instance. Valid values:'."\n" - ."\n" - .'* **Normal**: running as expected'."\n" - .'* **FinancialLocked**: locked due to overdue payments'."\n", - 'type' => 'string', - 'example' => 'Normal', - ], - 'LoadBalancerId' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'example' => 'gwlb-9njtjmqt7zfcqm****'."\n", - ], - 'LoadBalancerName' => [ - 'description' => 'The GWLB instance 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', - 'example' => 'testGwlbName', - ], - 'LoadBalancerStatus' => [ - 'description' => 'The GWLB instance status. Valid values:'."\n" - ."\n" - .'* **Active**: The GWLB instance is running.'."\n" - .'* **Inactive**: The GWLB instance is disabled. Listeners of GWLB instances in the Inactive state do not forward traffic.'."\n" - .'* **Provisioning**: The GWLB instance is being created.'."\n" - .'* **Configuring**: The GWLB instance is being modified.'."\n", - 'type' => 'string', - 'example' => 'Active', - ], - 'ResourceGroupId' => [ - 'description' => 'The resource group ID.'."\n", - 'type' => 'string', - 'example' => 'rg-aek26jasguy****', - ], - 'Tags' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string.'."\n" - ."\n" - .'The tag key can be up to 128 characters in length. The tag key cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => 'The tag value. You can specify at most 20 tag values. The tag value cannot be an empty string.'."\n" - ."\n" - .'The tag value can be up to 128 characters in length. It must start with a letter and can contain digits, periods (.), underscores (\\_), and hyphens (-). It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'example' => 'testTagValue', - ], - ], - ], - ], - 'VpcId' => [ - 'description' => 'The VPC ID.'."\n", - 'type' => 'string', - 'example' => 'vpc-uf6eg0vndlsa84n7r****', - ], - 'ZoneMappings' => [ - 'description' => 'The mappings between zones and vSwitches. You must specify at least one zone. You can specify at most 20 zones. If the region supports two or more zones, specify at least two zones.'."\n", + 'ListenerId' => ['description' => 'The listener ID.'."\n", 'type' => 'string', 'example' => 'lsn-sg8aha6pzjavvo****', 'title' => ''], + 'ServerGroupInfos' => [ + 'description' => 'The information about the server groups.'."\n", 'type' => 'array', 'items' => [ - 'description' => 'The information about the zones and vSwitches.'."\n", + 'description' => 'The information about the server group.'."\n", 'type' => 'object', 'properties' => [ - 'LoadBalancerAddresses' => [ - 'description' => 'The GWLB instance addresses.'."\n", + 'HealthCheckEnabled' => ['description' => 'Indicates whether the health check feature is enabled. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'ServerGroupId' => ['description' => 'The server group ID.'."\n", 'type' => 'string', 'example' => 'sgp-0vdsbyszro3nr6****', 'title' => ''], + 'Servers' => [ + 'description' => 'The backend servers.'."\n", 'type' => 'array', 'items' => [ - 'description' => 'The information about the GWLB instance addresses.'."\n", + 'description' => 'The backend server.'."\n", 'type' => 'object', 'properties' => [ - 'EniId' => [ - 'description' => 'The ID of the elastic network interface (ENI) used by the GWLB instance.'."\n", - 'type' => 'string', - 'example' => 'eni-bp17qv9zbzyqy629****', - ], - 'PrivateIpv4Address' => [ - 'description' => 'The private IPv4 address.'."\n", - 'type' => 'string', - 'example' => '192.168.XX.XX', + 'Port' => ['title' => '', 'description' => 'The backend port.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '6081'], + 'Reason' => [ + 'description' => 'The reason why **Status** indicates an unhealthy status.'."\n", + 'type' => 'object', + 'properties' => [ + 'ReasonCode' => ['description' => 'The reason why **Status** indicates an unhealthy status. Valid values:'."\n" + ."\n" + .'* **CONNECT_TIMEOUT**: The GWLB instance failed to connect to the backend server within the specified period of time.'."\n" + .'* **CONNECT_FAILED**: The GWLB instance failed to connect to the backend server.'."\n" + .'* **RECV_RESPONSE_TIMEOUT**: The GWLB instance failed to receive a response from the backend server within the specified period of time.'."\n" + .'* **CONNECT_INTERRUPT**: The connection between the health check and the backend server was interrupted.'."\n" + .'* **HTTP_CODE_NOT_MATCH**: The HTTP status code from the backend server is not the expected one.'."\n" + .'* **HTTP_INVALID_HEADER**: The format of the response from the backend servers is invalid.'."\n", 'type' => 'string', 'example' => 'CONNECT_TIMEOUT', 'title' => ''], + ], + 'title' => '', ], + 'ServerId' => ['title' => '', 'description' => 'The backend server ID.'."\n", 'type' => 'string', 'example' => 'i-2ze4rnh8yj9kif3z****'], + 'ServerIp' => ['title' => '', 'description' => 'The IP address of the server.'."\n", 'type' => 'string', 'example' => '192.168.0.XXX'], + 'Status' => ['description' => 'The health status of the backend server. Valid values:'."\n" + ."\n" + .'* **Initial**: Health checks are configured for the GWLB instance, but no data is found.'."\n" + .'* **Unhealthy**: The backend server consecutively fails health checks.'."\n" + .'* **Unused**: The backend server is not in use.'."\n" + .'* **Unavailable**: Health checks are disabled.'."\n" + .'* **Healthy**: The backend server is healthy.'."\n", 'type' => 'string', 'example' => 'Healthy', 'title' => ''], ], + 'title' => '', ], - ], - 'VSwitchId' => [ - 'description' => 'The ID of the vSwitch in the zone. By default, each zone contains one vSwitch and one subnet.'."\n", - 'type' => 'string', - 'example' => 'vsw-2zemule5dz7okwqfv****', - ], - 'ZoneId' => [ - 'description' => 'The zone ID. You can call the DescribeZones operation to query the most recent zone list.'."\n", - 'type' => 'string', - 'example' => 'cn-hangzhou-g', + 'title' => '', ], ], + 'title' => '', ], + 'title' => '', ], ], + 'title' => '', ], + 'title' => '', ], - 'MaxResults' => [ - 'description' => 'The number of entries per page. Valid values: 1 to 1000. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - '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" - .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", - 'type' => 'string', - 'example' => 'CAESGgoSChAKDGNvbXBsZXRlVGltZRABCgQiAggAGAAiQAoJAIldD2UAAAAACjMDLgAAADFTNzMyZDMwMzAzMDY5NzQzNDM0NmI3NzM2NjUzNzc4NzM2YTc0NjYzOTYz****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '378A80E9-4262-5D8E-8D62-0969E52D7358', - ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '100', - ], + 'MaxResults' => ['description' => 'The number of entries per page. Valid values: 1 to 1000. Default value: 20.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'NextToken' => ['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 of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", 'type' => 'string', 'example' => 'U12WEI6Ro2ol3wA54rBNSwdC5+lYy6q5SjIQEvc1wz5mjZxV+YjsHRdXV8XauY1BpOQIvwX63E0en54H3D****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '0ED4F222-36A0-5470-8A9A-AAB4E96BAC1A', 'title' => ''], + 'TotalCount' => ['description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '31', 'title' => ''], ], ], ], ], - 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IllegalParam.FilterValue', 'errorMessage' => 'The param of %s is illegal.', 'description' => 'The parameter of FilterValue is illegal.'], + ['errorCode' => 'IllegalParam.FilterName', 'errorMessage' => 'The param of %s is illegal.', 'description' => 'The parameter of FilterName is illegal.'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerHealthStatus\\": [\\n {\\n \\"ListenerId\\": \\"lsn-sg8aha6pzjavvo****\\",\\n \\"ServerGroupInfos\\": [\\n {\\n \\"HealthCheckEnabled\\": true,\\n \\"ServerGroupId\\": \\"sgp-0vdsbyszro3nr6****\\",\\n \\"Servers\\": [\\n {\\n \\"Port\\": 6081,\\n \\"Reason\\": {\\n \\"ReasonCode\\": \\"CONNECT_TIMEOUT\\"\\n },\\n \\"ServerId\\": \\"i-2ze4rnh8yj9kif3z****\\",\\n \\"ServerIp\\": \\"192.168.0.XXX\\",\\n \\"Status\\": \\"Healthy\\"\\n }\\n ]\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"U12WEI6Ro2ol3wA54rBNSwdC5+lYy6q5SjIQEvc1wz5mjZxV+YjsHRdXV8XauY1BpOQIvwX63E0en54H3D****\\",\\n \\"RequestId\\": \\"0ED4F222-36A0-5470-8A9A-AAB4E96BAC1A\\",\\n \\"TotalCount\\": 31\\n}","type":"json"}]', + 'title' => 'GetListenerHealthStatus', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetListenerHealthStatus'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetListenerHealthStatus', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancers\\": [\\n {\\n \\"AddressIpVersion\\": \\"IPv4\\",\\n \\"CreateTime\\": \\"2024-08-05T18:24:07Z\\",\\n \\"LoadBalancerBusinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"LoadBalancerName\\": \\"testGwlbName\\",\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"ResourceGroupId\\": \\"rg-aek26jasguy****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-uf6eg0vndlsa84n7r****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"EniId\\": \\"eni-bp17qv9zbzyqy629****\\",\\n \\"PrivateIpv4Address\\": \\"192.168.XX.XX\\"\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-2zemule5dz7okwqfv****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"CAESGgoSChAKDGNvbXBsZXRlVGltZRABCgQiAggAGAAiQAoJAIldD2UAAAAACjMDLgAAADFTNzMyZDMwMzAzMDY5NzQzNDM0NmI3NzM2NjUzNzc4NzM2YTc0NjYzOTYz****\\",\\n \\"RequestId\\": \\"378A80E9-4262-5D8E-8D62-0969E52D7358\\",\\n \\"TotalCount\\": 100\\n}","type":"json"}]', - 'title' => 'ListLoadBalancers', ], 'GetLoadBalancerAttribute' => [ 'summary' => 'Queries the details of a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -1368,9 +1613,7 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221913', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -1378,12 +1621,7 @@ [ 'name' => 'LoadBalancerId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], + 'schema' => ['description' => 'The GWLB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], ], ], 'responses' => [ @@ -1393,58 +1631,26 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'AddressIpVersion' => [ - 'description' => 'The protocol version. Valid values:'."\n" - ."\n" - .'* **Ipv4**: IPv4.'."\n", - 'type' => 'string', - 'example' => 'IPv4', - ], - 'CreateTime' => [ - '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' => '2024-07-08T10:12:58Z', - ], - 'LoadBalancerBusinessStatus' => [ - 'description' => 'The business status of the GWLB instance. Valid values:'."\n" - ."\n" - .'* **Normal**: running as expected'."\n" - .'* **FinancialLocked**: locked due to overdue payments'."\n", - 'type' => 'string', - 'example' => 'Normal', - ], - 'LoadBalancerId' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], - 'LoadBalancerName' => [ - 'description' => 'The GWLB instance 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', - 'example' => 'gwlb', - ], - 'LoadBalancerStatus' => [ - 'description' => 'The GWLB instance status. Valid values:'."\n" - ."\n" - .'* **Active**: The GWLB instance is running.'."\n" - .'* **Inactive**: The GWLB instance is disabled. Listeners of GWLB instances in the Inactive state do not forward traffic.'."\n" - .'* **Provisioning**: The GWLB instance is being created.'."\n" - .'* **Configuring**: The GWLB instance is being modified.'."\n", - 'type' => 'string', - 'example' => 'Active', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B6DC5DDC-9560-59BF-80FA-ED1E5CB417DF', - ], - 'ResourceGroupId' => [ - 'description' => 'The resource group ID.'."\n", - 'type' => 'string', - 'example' => 'rg-acfmx7pmxcy****', - ], + 'AddressIpVersion' => ['description' => 'The protocol version. Valid values:'."\n" + ."\n" + .'* **Ipv4**: IPv4.'."\n", 'type' => 'string', 'example' => 'IPv4', 'title' => ''], + 'CreateTime' => ['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' => '2024-07-08T10:12:58Z', 'title' => ''], + 'LoadBalancerBusinessStatus' => ['description' => 'The business status of the GWLB instance. Valid values:'."\n" + ."\n" + .'* **Normal**: running as expected'."\n" + .'* **FinancialLocked**: locked due to overdue payments'."\n", 'type' => 'string', 'example' => 'Normal', 'title' => ''], + 'LoadBalancerId' => ['description' => 'The GWLB instance ID.'."\n", 'type' => 'string', 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], + 'LoadBalancerName' => ['description' => 'The GWLB instance 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', 'example' => 'gwlb', 'title' => ''], + 'LoadBalancerStatus' => ['description' => 'The GWLB instance status. Valid values:'."\n" + ."\n" + .'* **Active**: The GWLB instance is running.'."\n" + .'* **Inactive**: The GWLB instance is disabled. Listeners of GWLB instances in the Inactive state do not forward traffic.'."\n" + .'* **Provisioning**: The GWLB instance is being created.'."\n" + .'* **Configuring**: The GWLB instance is being modified.'."\n", 'type' => 'string', 'example' => 'Active', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'B6DC5DDC-9560-59BF-80FA-ED1E5CB417DF', 'title' => ''], + 'ResourceGroupId' => ['description' => 'The resource group ID.'."\n", 'type' => 'string', 'example' => 'rg-acfmx7pmxcy****', 'title' => ''], 'Tags' => [ 'description' => 'The tags.'."\n", 'type' => 'array', @@ -1452,26 +1658,16 @@ 'description' => 'The information about the tag.'."\n", 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string.'."\n" - ."\n" - .'The tag key can be up to 128 characters in length. The tag key cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'example' => 'testTagValue', - ], + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length. The tag key cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'example' => 'testTagKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'example' => 'testTagValue', 'title' => ''], ], + 'title' => '', ], + 'title' => '', ], - 'VpcId' => [ - 'description' => 'The VPC ID.'."\n", - 'type' => 'string', - 'example' => 'vpc-k1aajsbwbaq4todet****', - ], + 'VpcId' => ['description' => 'The VPC ID.'."\n", 'type' => 'string', 'example' => 'vpc-k1aajsbwbaq4todet****', 'title' => ''], 'ZoneMappings' => [ 'description' => 'The mappings between zones and vSwitches. You must specify at least one zone. You can specify at most 20 zones. If the region supports two or more zones, specify at least two zones.'."\n", 'type' => 'array', @@ -1486,1247 +1682,575 @@ 'description' => 'The details about the GWLB instance addresses.'."\n", 'type' => 'object', 'properties' => [ - 'EniId' => [ - 'description' => 'The ID of the elastic network interface (ENI) used by the GWLB instance.'."\n", - 'type' => 'string', - 'example' => 'eni-bp1iahwz3rzgvltz****', - ], - 'PrivateIpv4Address' => [ - 'description' => 'The private IPv4 address.'."\n", - 'type' => 'string', - 'example' => '192.168.XX.XX', - ], + 'EniId' => ['description' => 'The ID of the elastic network interface (ENI) used by the GWLB instance.'."\n", 'type' => 'string', 'example' => 'eni-bp1iahwz3rzgvltz****', 'title' => ''], + 'PrivateIpv4Address' => ['description' => 'The private IPv4 address.'."\n", 'type' => 'string', 'example' => '192.168.XX.XX', 'title' => ''], ], + 'title' => '', ], + 'title' => '', ], - 'VSwitchId' => [ - 'description' => 'The vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of a GWLB instance.'."\n", - 'type' => 'string', - 'example' => 'vsw-uf6v8l7d2f1k53xrl****', - ], - 'ZoneId' => [ - 'description' => 'The zone ID.'."\n", - 'type' => 'string', - 'example' => 'cn-hangzhou-j', - ], + 'VSwitchId' => ['description' => 'The vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of a GWLB instance.'."\n", 'type' => 'string', 'example' => 'vsw-uf6v8l7d2f1k53xrl****', 'title' => ''], + 'ZoneId' => ['description' => 'The zone ID.'."\n", 'type' => 'string', 'example' => 'cn-hangzhou-j', 'title' => ''], ], + 'title' => '', ], + 'title' => '', ], - 'TrafficMode' => [ - 'description' => 'Traffic processing mode. Valid values:'."\n" - ."\n" - .'* **LoadBalance**: load balancing mode. GWLB forwards traffic to backend servers.'."\n" - .'* **ByPass**: bypass mode. GWLB directly returns traffic to the GWLB endpoint without forwarding it to the backend servers.'."\n", - 'type' => 'string', - 'example' => 'LoadBalance', - ], + 'TrafficMode' => ['description' => 'Traffic processing mode. Valid values:'."\n" + ."\n" + .'* **LoadBalance**: load balancing mode. GWLB forwards traffic to backend servers.'."\n" + .'* **ByPass**: bypass mode. GWLB directly returns traffic to the GWLB endpoint without forwarding it to the backend servers.'."\n", 'type' => 'string', 'example' => 'LoadBalance', 'title' => ''], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'MissingParam.LoadBalancerId', - 'errorMessage' => 'The param of LoadBalancerId is missing.', - ], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''], + ['errorCode' => 'MissingParam.LoadBalancerId', 'errorMessage' => 'The param of LoadBalancerId is missing.', 'description' => 'Load balancing ID parameter missing'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AddressIpVersion\\": \\"Ipv4\\",\\n \\"CreateTime\\": \\"2024-07-08T10:12:58Z\\",\\n \\"LoadBalancerBusinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"LoadBalancerName\\": \\"gwlb\\",\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"RequestId\\": \\"B6DC5DDC-9560-59BF-80FA-ED1E5CB417DF\\",\\n \\"ResourceGroupId\\": \\"rg-acfmx7pmxcy****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-k1aajsbwbaq4todet****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"EniId\\": \\"eni-bp1iahwz3rzgvltz****\\",\\n \\"PrivateIpv4Address\\": \\"192.168.XX.XX\\"\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-uf6v8l7d2f1k53xrl****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-j\\"\\n }\\n ],\\n \\"TrafficMode\\": \\"LoadBalance\\"\\n}","type":"json"}]', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AddressIpVersion\\": \\"IPv4\\",\\n \\"CreateTime\\": \\"2024-07-08T10:12:58Z\\",\\n \\"LoadBalancerBusinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"LoadBalancerName\\": \\"gwlb\\",\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"RequestId\\": \\"B6DC5DDC-9560-59BF-80FA-ED1E5CB417DF\\",\\n \\"ResourceGroupId\\": \\"rg-acfmx7pmxcy****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-k1aajsbwbaq4todet****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"EniId\\": \\"eni-bp1iahwz3rzgvltz****\\",\\n \\"PrivateIpv4Address\\": \\"192.168.XX.XX\\"\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-uf6v8l7d2f1k53xrl****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-j\\"\\n }\\n ],\\n \\"TrafficMode\\": \\"LoadBalance\\"\\n}","type":"json"}]', 'title' => 'GetLoadBalancerAttribute', - ], - 'CreateServerGroup' => [ - 'summary' => 'Creates a server group for a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetLoadBalancerAttribute'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetLoadBalancerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], + ], + 'ListListeners' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225035', - 'abilityTreeNodes' => [ - 'FEATUREslb88O4KB', - 'FEATUREslb98XMCW', - 'FEATUREslb4EL8LZ', - 'FEATUREslb5QFSS9', - ], + 'abilityTreeCode' => '221401', + 'abilityTreeNodes' => ['FEATUREslbC68LB1'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ServerGroupType', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组类型', - 'description' => 'The type of the server group. Valid values:'."\n" - ."\n" - .'* **Instance** (default): allows you to specify resources of the **Ecs**, **Eni**, or **Eci** type.'."\n" - .'* **Ip**: allows you to add servers by specifying their IP addresses.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Instance', - 'enum' => [ - 'Instance', - 'Ip', - ], - ], - ], - [ - 'name' => 'ServerGroupName', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组名称', - 'description' => 'The server group name.'."\n" - ."\n" - .'The name must be 2 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testServerGroupName', - ], - ], - [ - 'name' => 'Protocol', + 'name' => 'ListenerIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '后端服务器类型', - 'description' => 'The backend protocol. Valid value:'."\n" - ."\n" - .'* **GENEVE** (default)'."\n", - 'type' => 'string', + 'description' => 'The listener IDs. You can specify up to 20 listener IDs.', + 'type' => 'array', + 'items' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => false, 'example' => 'lsn-w3t3vpgjj12b2i****', 'title' => ''], 'required' => false, - 'enumValueTitles' => [ - 'GENEVE' => 'GENEVE', - ], - 'example' => 'GENEVE', - 'enum' => [ - 'GENEVE', - ], + 'maxItems' => 20, + 'minItems' => 1, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'Scheduler', + 'name' => 'LoadBalancerIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '会话保持类型', - 'description' => 'The scheduling algorithm. Valid values:'."\n" - ."\n" - .'* **5TCH** (default): specifies consistent hashing that is based on the following factors: source IP address, destination IP address, source port, protocol, and destination port. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" - .'* **3TCH**: specifies consistent hashing that is based on the following factors: source IP address, destination IP address, and protocol. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" - .'* **2TCH**: specifies consistent hashing that is based on the following factors: source IP address and destination IP address. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n", - 'type' => 'string', + 'description' => 'The IDs of the Gateway Load Balancer (GWLB) instances. You can specify up to 20 instance IDs.', + 'type' => 'array', + 'items' => ['description' => 'The ID of the Gateway Load Balancer (GWLB) instance.', 'type' => 'string', 'required' => false, 'example' => 'gwlb-rbtjolkkbudmrr****', 'title' => ''], 'required' => false, - 'example' => '5TCH', - 'enum' => [ - '5TCH', - '3TCH', - '2TCH', - ], - ], - ], - [ - 'name' => 'ServerFailoverMode', - 'in' => 'formData', - 'schema' => [ + 'maxItems' => 20, + 'minItems' => 1, 'title' => '', - 'description' => 'Specifies how GWLB processes requests over existing connections when a backend server is not running as expected. Valid values:'."\n" - ."\n" - .'* **NoRebalance** (default): GWLB continues to forward requests over existing connections to the unavailable backend server.'."\n" - .'* **Rebalance**: GWLB forwards requests over existing connections to the remaining healthy backend servers.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'NoRebalance', - 'enum' => [ - 'NoRebalance', - 'Rebalance', - ], + 'example' => '', ], ], [ - 'name' => 'VpcId', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组所在vpc的id', - 'description' => 'The VPC ID.'."\n" - ."\n" - .'> If **ServerGroupType** is set to **Instance**, only servers in the specified VPC can be added to the server group.'."\n", - 'type' => 'string', - 'required' => true, - 'docRequired' => false, - 'example' => 'vpc-bp15zckdt37pq72zv****', - ], - ], - [ - 'name' => 'ResourceGroupId', + 'name' => 'NextToken', 'in' => 'formData', - 'schema' => [ - 'title' => '企业资源组id', - 'description' => 'The resource group ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rg-atstuj3rtop****', - ], + 'schema' => ['description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'- If **NextToken** is empty, no subsequent query is performed.'."\n" + ."\n" + .'- If a value is returned for **NextToken**, the value is the token that is used for the next query.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'd209f4e63ec942c967c50c888a13****'], ], [ - 'name' => 'ConnectionDrainConfig', + 'name' => 'MaxResults', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '连接优雅中断配置', - 'description' => 'The configurations of connection draining.'."\n", - 'type' => 'object', - 'properties' => [ - 'ConnectionDrainEnabled' => [ - 'title' => '是否开启连接优雅中断', - 'description' => 'Specifies whether to enable connection draining. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - 'ConnectionDrainTimeout' => [ - 'title' => '连接优雅中断超时时间', - 'description' => 'The timeout period of connection draining.'."\n" - ."\n" - .'Unit: seconds'."\n" - ."\n" - .'Valid values: **1** to **3600**.'."\n" - ."\n" - .'Default value: **300**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '300', - ], - ], - 'required' => false, - ], - ], - [ - 'name' => 'HealthCheckConfig', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '健康检查配置', - 'description' => 'The health check configurations.'."\n", - 'type' => 'object', - 'properties' => [ - 'HealthCheckConnectPort' => [ - 'title' => '健康检查使用的端口', - 'description' => 'The backend server port used for health checks.'."\n" - ."\n" - .'Valid values: **1** to **65535**.'."\n" - ."\n" - .'Default value: **80**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '80', - ], - 'HealthCheckConnectTimeout' => [ - 'title' => '健康检查响应的最大超时时间', - 'description' => 'The maximum timeout period for a health check response.'."\n" - ."\n" - .'Unit: seconds.'."\n" - ."\n" - .'Valid values: **1** to **300**.'."\n" - ."\n" - .'Default value: **5**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - ], - 'HealthCheckDomain' => [ - 'title' => '健康检查的域名', - 'description' => 'The domain name used for health checks. Valid values:'."\n" - ."\n" - .'* **$SERVER_IP** (default): the private IP address of a backend server.'."\n" - .'* **domain**: a domain name. The domain name must be 1 to 80 characters in length, and can contain letters, digits, hyphens (-), and periods (.).'."\n" - ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '$SERVER_IP', - ], - 'HealthCheckEnabled' => [ - 'title' => '是否开启健康检查', - 'description' => 'Specifies whether to enable health checks. Valid values:'."\n" - ."\n" - .'* **true** (default)'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'HealthCheckHttpCode' => [ - 'title' => '状态码,多个状态码用逗号分隔', - 'description' => 'The HTTP status codes that the system returns for health checks.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The HTTP status codes returned for health checks. Multiple HTTP status codes are separated by commas (,). Valid values:'."\n" - ."\n" - .'* **http\\_2xx**'."\n" - .'* **http\\_3xx**'."\n" - .'* **http\\_4xx**'."\n" - .'* **http\\_5xx**'."\n" - ."\n" - .'Default value: **http\\_2xx**.'."\n" - ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http_2xx', - 'enum' => [ - 'http_2xx', - 'http_3xx', - 'http_4xx', - 'http_5xx', - ], - ], - 'required' => false, - ], - 'HealthCheckInterval' => [ - 'title' => '健康检查时间间隔', - 'description' => 'The interval at which health checks are performed.'."\n" - ."\n" - .'Unit: seconds.'."\n" - ."\n" - .'Valid values: **1** to **50**.'."\n" - ."\n" - .'Default value: **10**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], - 'HealthCheckPath' => [ - 'title' => '健康检查的path', - 'description' => 'The path used for health checks.'."\n" - ."\n" - .'It must be 1 to 80 characters in length, and can contain letters, digits, hyphens (-), forward slashes (/), periods (.), percent signs (%), question marks (?), number signs (#), and ampersands (&). The URL can also contain the following extended characters: \\_ ; ~ ! ( ) \\* \\[ ] @ $ ^ : \' , + ='."\n" - ."\n" - .'It must start with a forward slash (/).'."\n" - ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '/test/index.html', - ], - 'HealthCheckProtocol' => [ - 'title' => '健康检查协议类型', - 'description' => 'The protocol used for health checks. Valid values:'."\n" - ."\n" - .'* **TCP** (default): GWLB performs TCP health checks by sending SYN packets to a backend server to check whether the port of the backend server is available to receive requests.'."\n" - .'* **HTTP**: GWLB performs HTTP health checks to check whether backend servers are healthy by sending GET requests which simulate access from browsers.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TCP', - 'enum' => [ - 'TCP', - 'HTTP', - ], - ], - 'HealthyThreshold' => [ - 'title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', - '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: **2**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - 'UnhealthyThreshold' => [ - 'title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', - '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: **2**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - ], - 'required' => false, - ], + 'schema' => ['description' => 'The number of entries to return on each page. Valid values: 1 to 1000. Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '20'], ], [ 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'title' => '标签列表', - 'description' => 'The tag keys.'."\n" - ."\n" - .'You can specify at most 20 tags in each call.'."\n", + 'description' => 'The tags. You can specify up to 20 tags in each call.', 'type' => 'array', 'items' => [ - 'description' => 'The tag.'."\n", + 'description' => 'The tag.', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testTagValue', - ], + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length and cannot start with `aliyun` or `acs:`. The tag key cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'tagKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'tagValue', 'title' => ''], ], 'required' => false, + 'title' => '', + 'example' => '', ], 'required' => false, 'maxItems' => 20, + 'minItems' => 1, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'DryRun', - 'in' => 'formData', - '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', - ], - ], - [ - 'name' => 'ClientToken', + 'name' => 'Skip', 'in' => 'formData', - '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 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-42665544****', - ], + 'schema' => ['description' => 'The number of entries to skip for a paged query.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => 'The returned data.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', - ], - 'ServerGroupId' => [ - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'example' => 'sgp-atstuj3rtoptyui****', + 'Listeners' => [ + 'description' => 'A list of listeners for the Gateway Load Balancer (GWLB) instance.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the listener.', + 'type' => 'object', + 'properties' => [ + 'ListenerDescription' => ['description' => 'The description of the listener.', 'type' => 'string', 'title' => '', 'example' => 'listener-description'], + 'ListenerId' => ['description' => 'The listener ID.', 'type' => 'string', 'title' => '', 'example' => 'lsn-vu7folhh5ntm8u****'], + 'ListenerStatus' => ['description' => 'The status of the listener. Valid values:'."\n" + ."\n" + .'- **Provisioning**: The listener is being created.'."\n" + ."\n" + .'- **Running**: The listener is running.'."\n" + ."\n" + .'- **Configuring**: The listener is being configured.'."\n" + ."\n" + .'- **Deleting**: The listener is being deleted.', 'type' => 'string', 'title' => '', 'example' => 'Running'], + 'LoadBalancerId' => ['description' => 'The ID of the Gateway Load Balancer (GWLB) instance.', 'type' => 'string', 'title' => '', 'example' => 'gwlb-uf6hbeh795xlqln7g****'], + 'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'title' => '', 'example' => 'sgp-5yapcb422i51ru****'], + 'TcpIdleTimeout' => ['title' => 'TCP连接空闲超时时间。', 'description' => 'The timeout period of an idle TCP connection.', 'type' => 'integer', 'format' => 'int32', 'example' => '350'], + 'Tags' => [ + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key.', 'type' => 'string', 'example' => 'testKey', 'title' => ''], + 'Value' => ['description' => 'The tag value.', 'type' => 'string', 'example' => 'testValue', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'MaxResults' => ['description' => 'The number of entries returned on each page. Valid values: 1 to 1000. Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'NextToken' => ['description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'- If **NextToken** is empty, no subsequent query is performed.'."\n" + ."\n" + .'- If a value is returned for **NextToken**, the value is the token that is used for the next query.', 'type' => 'string', 'example' => '5c281c0a0d6bfb6355ed088c2108aca8e0b5e8707e68****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7DBFC67C-A272-5952-8287-6C3EBE4E04D9', 'title' => ''], + 'TotalCount' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int32', 'example' => '8', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IllegalParam.HealthCheckProtocol', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'QuotaExceeded.ServerGroupsNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => 'The parameter of tag key is missing.'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The parameter of tag key is duplicated.'], ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Vpc', - 'errorMessage' => 'The specified resource of %s is not found.', + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ListListeners', + 'summary' => 'Queries listeners for Gateway Load Balancers.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListListeners'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListListeners', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::ListServerGroups', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\"\\n}","type":"json"}]', - '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 the ListServerGroups operation to query the status of the task.'."\n" - ."\n" - .'* If the server group is in the **Creating** state, it indicates that the server group is being created.'."\n" - .'* If the server group is in the **Available** state, it indicates that the server group is created.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Listeners\\": [\\n {\\n \\"ListenerDescription\\": \\"listener-description\\",\\n \\"ListenerId\\": \\"lsn-vu7folhh5ntm8u****\\",\\n \\"ListenerStatus\\": \\"Running\\",\\n \\"LoadBalancerId\\": \\"gwlb-uf6hbeh795xlqln7g****\\",\\n \\"ServerGroupId\\": \\"sgp-5yapcb422i51ru****\\",\\n \\"TcpIdleTimeout\\": 350,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testKey\\",\\n \\"Value\\": \\"testValue\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"5c281c0a0d6bfb6355ed088c2108aca8e0b5e8707e68****\\",\\n \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\",\\n \\"TotalCount\\": 8\\n}","type":"json"}]', ], - 'UpdateServerGroupAttribute' => [ - 'summary' => 'Updates the attributes of a server group.', - 'methods' => [ - 'get', - 'post', - ], - 'schemes' => [ - 'https', - ], + 'ListLoadBalancers' => [ + 'summary' => 'Lists Gateway Load Balancer (GWLB) instances.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225039', - 'abilityTreeNodes' => [ - 'FEATUREslb3GOGI0', - ], + 'abilityTreeCode' => '221914', + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ServerGroupId', + 'name' => 'ZoneIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '服务器组ID', - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-atstuj3rtoptyui****', + 'description' => 'The list of zone IDs. You can query up to 20 zone IDs at a time.', + 'type' => 'array', + 'items' => ['description' => 'The zone ID.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'cn-beijing-h'], + 'required' => false, + 'maxItems' => 20, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ServerGroupName', + 'name' => 'VpcIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '服务器组名称', - 'description' => 'The server group name.'."\n" - ."\n" - .'The name must be 2 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n", - 'type' => 'string', + 'title' => '', + 'description' => 'The list of virtual private cloud (VPC) IDs. You can query up to 20 VPC IDs at a time.', + 'type' => 'array', + 'items' => ['description' => 'The VPC ID.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'vpc-bp1xuejaht4o7yhh2****'], 'required' => false, - 'example' => 'testServerGroupName', + 'maxItems' => 20, + 'example' => '', ], ], [ - 'name' => 'Scheduler', + 'name' => 'AddressIpVersion', 'in' => 'formData', 'schema' => [ - 'title' => '会话保持类型', - 'description' => 'The scheduling algorithm. Valid values:'."\n" + 'title' => '', + 'description' => 'The protocol version. Valid value:'."\n" ."\n" - .'* **5TCH**: specifies consistent hashing that is based on the following factors: source IP address, destination IP address, source port, protocol, and destination port. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" - .'* **3TCH**: indicates consistent hashing that is based on the following factors: source IP address, destination IP address, and protocol. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" - .'* **2TCH**: specifies consistent hashing that is based on the following factors: source IP address and destination IP address. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n", + .'- **Ipv4**: IPv4.', 'type' => 'string', 'required' => false, - 'example' => '5TCH', - 'enum' => [ - '5TCH', - '3TCH', - '2TCH', - ], + 'enumValueTitles' => ['IPv4' => 'IPv4', 'DualStack' => 'Dual-stack'], + 'enum' => [], + 'example' => 'Ipv4', ], ], [ - 'name' => 'ServerFailoverMode', + 'name' => 'LoadBalancerStatus', 'in' => 'formData', - 'schema' => [ - 'description' => 'Specifies how GWLB processes requests over existing connections when a backend server is not running as expected. Valid values:'."\n" - ."\n" - .'* **NoRebalance**: GWLB continues to forward requests over existing connections to the unavailable backend server.'."\n" - .'* **Rebalance**: GWLB forwards requests over existing connections to the remaining healthy backend servers.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'NoRebalance', - 'enum' => [ - 'NoRebalance', - 'Rebalance', - ], - ], + 'schema' => ['title' => '', 'description' => 'The status of the GWLB instance. Valid values:'."\n" + ."\n" + .'- **Active**: The instance is running.'."\n" + ."\n" + .'- **Inactive**: The instance is stopped. In this state, the listener of the instance does not forward traffic.'."\n" + ."\n" + .'- **Provisioning**: The instance is being created.'."\n" + ."\n" + .'- **Configuring**: The instance is being modified.', 'type' => 'string', 'required' => false, 'example' => 'Active'], ], [ - 'name' => 'ConnectionDrainConfig', + 'name' => 'LoadBalancerBusinessStatus', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '连接优雅中断配置', - 'description' => 'The configurations of connection draining.'."\n", - 'type' => 'object', - 'properties' => [ - 'ConnectionDrainEnabled' => [ - 'title' => '是否开启连接优雅中断', - 'description' => 'Specifies whether to enable connection draining. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - 'ConnectionDrainTimeout' => [ - 'title' => '连接优雅中断超时时间', - 'description' => 'The timeout period of connection draining.'."\n" - ."\n" - .'Unit: seconds'."\n" - ."\n" - .'Valid values: 1 to 3600.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '300', - ], - ], - 'required' => false, - ], + 'schema' => ['title' => '', 'description' => 'The business status of the GWLB instance. Valid values:'."\n" + ."\n" + .'- **Normal**: The instance is running as expected.'."\n" + ."\n" + .'- **FinancialLocked**: The instance is locked due to an overdue payment.', 'type' => 'string', 'required' => false, 'example' => 'Normal'], ], [ - 'name' => 'HealthCheckConfig', + 'name' => 'LoadBalancerNames', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'title' => '健康检查配置', - 'description' => 'The health check configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'HealthCheckConnectPort' => [ - 'title' => '健康检查使用的端口', - 'description' => 'The backend server port that is used for health checks.'."\n" - ."\n" - .'Valid values: **1** to **65535**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '80', - ], - 'HealthCheckConnectTimeout' => [ - 'title' => '健康检查响应的最大超时时间', - 'description' => 'The maximum timeout period for a health check response.'."\n" - ."\n" - .'Unit: seconds.'."\n" - ."\n" - .'Valid values: **1** to **300**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - ], - 'HealthCheckDomain' => [ - 'title' => '健康检查的域名', - 'description' => 'The domain name used for health checks. Valid values:'."\n" - ."\n" - .'* **$SERVER_IP**: the internal IP address of a backend server.'."\n" - .'* **domain**: a domain name. The domain name must be 1 to 80 characters in length, and can contain letters, digits, hyphens (-), and periods (.).'."\n" - ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '$SERVER_IP', - ], - 'HealthCheckEnabled' => [ - 'title' => '是否开启健康检查', - 'description' => 'Specifies whether to enable health checks. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'HealthCheckHttpCode' => [ - 'title' => '状态码,多个状态码用逗号分隔', - 'description' => 'The HTTP status codes that the system returns for health checks.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The HTTP status codes to return for health checks. Separate multiple HTTP status codes with commas (,). Valid values:'."\n" - ."\n" - .'* **http\\_2xx**: HTTP 2xx status codes.'."\n" - .'* **http\\_3xx**: HTTP 3xx status codes.'."\n" - .'* **http\\_4xx**: HTTP 4xx status codes.'."\n" - .'* **http\\_5xx**: HTTP 5xx status codes.'."\n" - ."\n" - .'Default value: **http\\_2xx**'."\n" - ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http_2xx', - 'enum' => [ - 'http_2xx', - 'http_3xx', - 'http_4xx', - 'http_5xx', - ], - ], - 'required' => false, - ], - 'HealthCheckInterval' => [ - 'title' => '健康检查时间间隔', - 'description' => 'The interval at which health checks are performed.'."\n" - ."\n" - .'Unit: seconds.'."\n" - ."\n" - .'Valid values: **1** to **50**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], - 'HealthCheckPath' => [ - 'title' => '健康检查的path', - 'description' => 'The URL 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 must start with a forward slash (/).'."\n" - ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '/test/index.html', - ], - 'HealthCheckProtocol' => [ - 'title' => '健康检查协议类型', - 'description' => 'The protocol that is used for health checks. Valid values:'."\n" - ."\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" - .'* **HTTP**: HTTP health checks simulate a process that uses a web browser to access resources by sending GET requests to an instance. These requests are used to check whether the instance is healthy.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TCP', - 'enum' => [ - 'TCP', - 'HTTP', - ], - ], - 'HealthyThreshold' => [ - 'title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', - '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", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - 'UnhealthyThreshold' => [ - 'title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', - '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", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - ], + 'title' => '', + 'description' => 'The list of GWLB instance names. You can query up to 20 instance names at a time.', + 'type' => 'array', + 'items' => ['description' => 'The name of the GWLB instance.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'testGwlbName'], 'required' => false, + 'maxItems' => 20, + 'example' => '', ], ], [ - 'name' => 'DryRun', + 'name' => 'ResourceGroupId', 'in' => 'formData', - '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', - ], + 'schema' => ['title' => '', 'description' => 'The ID of the resource group.', 'type' => 'string', 'required' => false, 'example' => 'rg-aek2htf5qsyrn****'], ], [ - 'name' => 'ClientToken', + 'name' => 'LoadBalancerIds', 'in' => 'formData', - '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 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-42665544****', - ], - ], - ], - 'responses' => [ - 200 => [ + 'style' => 'flat', 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'."\n", - ], - ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'IllegalParam.HealthCheckProtocol', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'OperationDenied.SchedulerNotConfigurable', - 'errorMessage' => 'The scheduling algorithm of server group is configurable only when TCP idle timeout of listener is default value.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::ListServerGroups', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\\\n\\"\\n}","type":"json"}]', - 'title' => 'UpdateServerGroupAttribute', - 'description' => '**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 operation to query the status of the task.'."\n" - ."\n" - .'* If the server group is in the **Configuring** state, the configuration of the server group is being modified.'."\n" - .'* If the server group is in the **Available** state, the configuration of the server group is modified.'."\n", - ], - 'DeleteServerGroup' => [ - 'summary' => 'Deletes a server group from a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225038', - 'abilityTreeNodes' => [ - 'FEATUREslb5QFSS9', - ], - 'autoTest' => true, - 'tenantRelevance' => 'tenant', - ], - 'parameters' => [ - [ - 'name' => 'ServerGroupId', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组ID', - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-atstuj3rtoptyui****', - ], - ], - [ - 'name' => 'DryRun', - 'in' => 'formData', - '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', - ], - ], - [ - 'name' => 'ClientToken', - 'in' => 'formData', - '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 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', + 'description' => 'The list of GWLB instance IDs. You can query up to 20 instance IDs at a time.', + 'type' => 'array', + 'items' => ['description' => 'The ID of the GWLB instance.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'gwlb-cp6prgqy40hols****'], 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => '', - 'description' => 'The response parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', - ], - ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'IncorrectStatus.BackendServer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'ResourceInUse.ServerGroup', - 'errorMessage' => 'The specified resource of %s is in use.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', + 'maxItems' => 20, + 'example' => '', ], ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', - 'title' => 'DeleteServerGroup', - 'description' => 'You can delete server groups that are not associated with listeners.'."\n", - ], - 'AddServersToServerGroup' => [ - 'summary' => 'Adds backend servers to the server group of a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'create', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225056', - 'abilityTreeNodes' => [ - 'FEATUREslb3GOGI0', - ], - 'autoTest' => true, - 'tenantRelevance' => 'tenant', - ], - 'parameters' => [ [ - 'name' => 'ServerGroupId', + 'name' => 'TrafficMode', 'in' => 'formData', - 'schema' => [ - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-atstuj3rtoptyui****', - ], + 'schema' => ['description' => 'The traffic mode. Valid values:'."\n" + ."\n" + .'- **LoadBalance**: The instance is in load balancing mode.'."\n" + ."\n" + .'- **ByPass**: The instance is in bypass mode.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'LoadBalance'], ], [ - 'name' => 'Servers', + 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => 'The backend servers that you want to add.'."\n" - ."\n" - .'> You can add up to 200 backend servers in each call.'."\n", + 'title' => '', + 'description' => 'The list of tags. You can specify up to 20 tags in each call.', 'type' => 'array', 'items' => [ - 'description' => 'The backend server.'."\n", + 'description' => 'The tag object.', 'type' => 'object', 'properties' => [ - 'Port' => [ - 'title' => '服务器端口', - 'description' => 'The backend server port. Valid values:'."\n" - ."\n" - .'* **6081**'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '6081', - ], - 'ServerId' => [ - 'title' => '服务器id', - 'description' => 'The backend server ID.'."\n" - ."\n" - .'* If the server group is of the **Instance** type, set this parameter to the IDs of resources of the **Ecs**, **Eni**, **Eci** type.'."\n" - .'* If the server group is of the **Ip** type, set ServerId to IP addresses.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'i-bp67acfmxazb4p****', - ], - 'ServerIp' => [ - 'title' => '服务器ip', - 'description' => 'The IP address of the backend server.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '192.168.XX.XX', - ], - 'ServerType' => [ - 'title' => '服务器类型', - 'description' => 'The type of the backend server. Valid 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", - 'type' => 'string', - 'required' => true, - 'example' => 'Ecs', - 'enum' => [ - 'Ecs', - 'Eni', - 'Eci', - 'Ip', - ], - ], + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'testTagKey'], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'testTagValue'], ], 'required' => false, + 'title' => '', + 'example' => '', ], - 'required' => true, - 'maxItems' => 200, + 'required' => false, + 'maxItems' => 20, + 'example' => '', ], ], [ - 'name' => 'DryRun', + 'name' => 'NextToken', 'in' => 'formData', - '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', - ], + 'schema' => ['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" + ."\n" + .'- If **NextToken** has a value, the value is the token that is used for the next query.', 'type' => 'string', 'required' => false, 'example' => 'WyJyb290IiwibiIsIm4iLDEsMCwxNjg1MDY1NTgyNzYwLCI2NDcwMGY2ZTc2Zjc0MWFiZGEyZjQyNzc4ZDk2MmJkOTk3ZGZmM2Nm****'], ], [ - 'name' => 'ClientToken', + 'name' => 'MaxResults', 'in' => 'formData', - '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 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'."\n", - ], + 'schema' => ['title' => '', 'description' => 'The number of entries to return on each page. Valid values: 1 to 1000. Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20'], + ], + [ + 'name' => 'Skip', + 'in' => 'formData', + 'schema' => ['description' => 'The number of entries to skip.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '1'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + 'LoadBalancers' => [ + 'description' => 'The list of GWLB instances.', + 'type' => 'array', + 'items' => [ + 'description' => 'The GWLB instance.', + 'type' => 'object', + 'properties' => [ + 'AddressIpVersion' => ['description' => 'The protocol version. Valid value:'."\n" + ."\n" + .'- **IPv4**: IPv4.', 'type' => 'string', 'title' => '', 'example' => 'IPv4'], + 'CreateTime' => ['description' => 'The time when the resource was created. The time is displayed in UTC and follows the **yyyy-MM-ddTHH:mm:ssZ** format.', 'type' => 'string', 'title' => '', 'example' => '2024-08-05T18:24:07Z'], + 'LoadBalancerBusinessStatus' => ['description' => 'The business status of the GWLB instance. Valid values:'."\n" + ."\n" + .'- **Normal**: The instance is running as expected.'."\n" + ."\n" + .'- **FinancialLocked**: The instance is locked due to an overdue payment.', 'type' => 'string', 'title' => '', 'example' => 'Normal'], + 'LoadBalancerId' => ['description' => 'The ID of the GWLB instance.', 'type' => 'string', 'title' => '', 'example' => 'gwlb-9njtjmqt7zfcqm****'], + 'LoadBalancerName' => ['description' => 'The name of the GWLB instance.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, start with a letter or a Chinese character, and can contain digits, periods (.), underscores (\\_), and hyphens (-).', 'type' => 'string', 'title' => '', 'example' => 'testGwlbName'], + 'LoadBalancerStatus' => ['description' => 'The status of the GWLB instance. Valid values:'."\n" + ."\n" + .'- **Active**: The instance is running.'."\n" + ."\n" + .'- **Inactive**: The instance is stopped. In this state, the listener of the instance does not forward traffic.'."\n" + ."\n" + .'- **Provisioning**: The instance is being created.'."\n" + ."\n" + .'- **Configuring**: The instance is being modified.', 'type' => 'string', 'title' => '', 'example' => 'Active'], + 'ResourceGroupId' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'title' => '', 'example' => 'rg-aek26jasguy****'], + 'Tags' => [ + 'description' => 'The list of tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string.'."\n" + ."\n" + .'The tag key can be up to 128 characters in length, and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'title' => '', 'example' => 'testTagKey'], + 'Value' => ['description' => 'The tag value. You can specify up to 20 tag values. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length, must start with a letter or a Chinese character, and can contain digits, periods (.), underscores (\\_), and hyphens (-). The tag value cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.', 'type' => 'string', 'title' => '', 'example' => 'testTagValue'], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'VpcId' => ['description' => 'The VPC ID.', 'type' => 'string', 'title' => '', 'example' => 'vpc-uf6eg0vndlsa84n7r****'], + 'ZoneMappings' => [ + 'description' => 'The list of mappings between zones and vSwitches. You must add at least one zone and can add up to 20 zones. If the current region supports two or more zones, we recommend that you add two or more zones.', + 'type' => 'array', + 'items' => [ + 'description' => 'The mapping between a zone and a vSwitch.', + 'type' => 'object', + 'properties' => [ + 'LoadBalancerAddresses' => [ + 'description' => 'The list of addresses of the GWLB instance.', + 'type' => 'array', + 'items' => [ + 'description' => 'The address of the GWLB instance.', + 'type' => 'object', + 'properties' => [ + 'EniId' => ['description' => 'The ID of the elastic network interface (ENI).', 'type' => 'string', 'title' => '', 'example' => 'eni-bp17qv9zbzyqy629****'], + 'PrivateIpv4Address' => ['description' => 'The private IPv4 address.', 'type' => 'string', 'title' => '', 'example' => '192.168.XX.XX'], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'VSwitchId' => ['description' => 'The vSwitch in the zone. Each zone uses a vSwitch and a subnet by default.', 'type' => 'string', 'title' => '', 'example' => 'vsw-2zemule5dz7okwqfv****'], + 'ZoneId' => ['description' => 'The zone ID. You can call the DescribeZones operation to query the most recent zone list.', 'type' => 'string', 'title' => '', 'example' => 'cn-hangzhou-g'], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'MaxResults' => ['description' => 'The number of entries returned on each page. Valid values: 1 to 1000. Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '20'], + 'NextToken' => ['description' => 'The token that is used for the next query. Valid values:'."\n" + ."\n" + .'- You do not need to specify this parameter for the first request or if no subsequent request is to be sent.'."\n" + ."\n" + .'- If a subsequent query is to be sent, set the value to the \\`NextToken\\` value that is returned from the previous API call.', 'type' => 'string', 'title' => '', 'example' => 'CAESGgoSChAKDGNvbXBsZXRlVGltZRABCgQiAggAGAAiQAoJAIldD2UAAAAACjMDLgAAADFTNzMyZDMwMzAzMDY5NzQzNDM0NmI3NzM2NjUzNzc4NzM2YTc0NjYzOTYz****'], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '378A80E9-4262-5D8E-8D62-0969E52D7358'], + 'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '100'], ], + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Conflict.Server', - 'errorMessage' => 'The %s [%s] is conflict.', - ], - [ - 'errorCode' => 'Mismatch.ServerType', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'ResourceInUse.IP', - 'errorMessage' => 'The specified resource of %s is in use.', - ], - [ - 'errorCode' => 'IllegalParam.ServerIp', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IllegalParam.EcsNetworkType', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'DuplicatedParam.Server', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'ResourceInUse.Eni', - 'errorMessage' => 'The specified resource of %s is in use.', - ], - [ - 'errorCode' => 'IncorrectStatus.Eni', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IllegalParam.IP', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'Mismatch.IP', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'Mismatch.VpcId', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'QuotaExceeded.ServerGroupServersNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'QuotaExceeded.ServerGroupAzServersNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Eni', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Eci', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Ecs', - 'errorMessage' => 'The specified resource of %s is not found.', + 'errorCodes' => [], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancers\\": [\\n {\\n \\"AddressIpVersion\\": \\"IPv4\\",\\n \\"CreateTime\\": \\"2024-08-05T18:24:07Z\\",\\n \\"LoadBalancerBusinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"LoadBalancerName\\": \\"testGwlbName\\",\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"ResourceGroupId\\": \\"rg-aek26jasguy****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-uf6eg0vndlsa84n7r****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"EniId\\": \\"eni-bp17qv9zbzyqy629****\\",\\n \\"PrivateIpv4Address\\": \\"192.168.XX.XX\\"\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-2zemule5dz7okwqfv****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"CAESGgoSChAKDGNvbXBsZXRlVGltZRABCgQiAggAGAAiQAoJAIldD2UAAAAACjMDLgAAADFTNzMyZDMwMzAzMDY5NzQzNDM0NmI3NzM2NjUzNzc4NzM2YTc0NjYzOTYz****\\",\\n \\"RequestId\\": \\"378A80E9-4262-5D8E-8D62-0969E52D7358\\",\\n \\"TotalCount\\": 100\\n}","type":"json"}]', + 'title' => 'ListLoadBalancers', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListLoadBalancers'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListLoadBalancers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::ListServerGroupServers', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', - '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 operation to query the status of the 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 the ListServerGroupServers operation to query the status of the backend server.'."\n" - ."\n" - .'* If the backend server is in the **Adding** state, the backend server is being added to the server group.'."\n" - .'* If the backend server is in the **Available** state, the server is running.'."\n", ], - 'RemoveServersFromServerGroup' => [ - 'summary' => 'Removes backend servers from the server group of a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'ListServerGroupServers' => [ + 'summary' => 'Queries the servers in a Server Load Balancer server group.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225065', - 'abilityTreeNodes' => [ - 'FEATUREslb3GOGI0', - ], + 'abilityTreeCode' => '225066', + 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -2734,181 +2258,157 @@ [ 'name' => 'ServerGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-atstuj3rtoptyui****', - ], + 'schema' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => false, 'example' => 'sgp-atstuj3rtoptyui****', 'title' => ''], ], [ - 'name' => 'Servers', + 'name' => 'ServerIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => 'The backend servers that you want to remove.'."\n" + 'description' => 'The list of server IDs.'."\n" ."\n" - .'> You can remove at most 200 backend servers in each call.'."\n", + .'You can specify up to 200 server IDs in each call.', 'type' => 'array', - 'items' => [ - 'description' => 'The backend server.'."\n", - 'type' => 'object', - 'properties' => [ - 'Port' => [ - 'title' => '服务器端口', - 'description' => 'The port that is used by the backend server. Valid values:'."\n" - ."\n" - .'* **6081**'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '6081', - ], - 'ServerId' => [ - 'title' => '服务器id', - 'description' => 'The backend server ID.'."\n" - ."\n" - .'* If the server group is of the **Instance** type, set this parameter to the IDs of servers of the **Ecs**, **Eni**, or **Eci** type.'."\n" - .'* If the server group is of the **Ip** type, set ServerId to IP addresses.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'i-bp67acfmxazb4p****', - ], - 'ServerIp' => [ - 'title' => '服务器ip', - 'description' => 'The IP address of the backend server.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '192.168.xxx.xxx'."\n", - ], - 'ServerType' => [ - 'title' => '服务器类型', - 'description' => 'The type of the backend server. Valid 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", - 'type' => 'string', - 'required' => true, - 'example' => 'Ecs', - 'enum' => [ - 'Ecs', - 'Eni', - 'Eci', - 'Ip', - ], - ], - ], - 'required' => false, - ], - 'required' => true, + 'items' => ['description' => 'The server ID.'."\n" + ."\n" + .'- If the server group is of the **Instance** type, this parameter specifies the resource ID of an **ECS** instance, an elastic network interface (**ENI**), or an elastic container instance (**ECI**).'."\n" + ."\n" + .'- If the server group is of the **Ip** type, this parameter specifies an IP address.', 'type' => 'string', 'required' => false, 'example' => 'i-bp67acfmxazb4p****', 'title' => ''], + 'required' => false, 'maxItems' => 200, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'DryRun', + 'name' => 'ServerIps', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + 'description' => 'The list of server IP addresses.'."\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', + .'You can specify up to 200 server IP addresses in each call.', + 'type' => 'array', + 'items' => ['description' => 'The IP address of the server.', 'type' => 'string', 'required' => false, 'example' => '192.168.xxx.xxx', 'title' => ''], 'required' => false, - 'example' => 'false', + 'maxItems' => 200, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ClientToken', + 'name' => 'NextToken', 'in' => 'formData', - '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 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-42665544****', - ], + 'schema' => ['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" + ."\n" + .'- If a value is returned for **NextToken**, the value is the token that is used to retrieve the next page.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'], + ], + [ + 'name' => 'MaxResults', + 'in' => 'formData', + 'schema' => ['description' => 'The number of entries to return on each page.'."\n" + ."\n" + .'Valid values: 1 to 1000.'."\n" + ."\n" + .'Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '20'], + ], + [ + 'name' => 'Skip', + 'in' => 'formData', + 'schema' => ['description' => 'The number of entries to skip.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => 'The data structure of the response.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + 'MaxResults' => ['description' => 'The number of entries returned per page.'."\n" + ."\n" + .'Valid values: 1 to 1000.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'NextToken' => ['description' => 'A pagination token. It can be 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 or if no next page exists.'."\n" + ."\n" + .'- If a next page exists, set the value to the NextToken value that is returned in the last API call.', 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], + 'Servers' => [ + 'description' => 'The list of backend servers.', + 'type' => 'array', + 'items' => [ + 'description' => 'The backend server.', + 'type' => 'object', + 'properties' => [ + 'Port' => ['description' => 'The port used by the backend server. Valid values:'."\n" + ."\n" + .'- **6081**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '6081'], + 'ServerGroupId' => ['description' => 'The ID of the server group.', 'type' => 'string', 'title' => '', 'example' => 'sgp-atstuj3rtoptyui****'], + 'ServerId' => ['description' => 'The ID of the backend server.', 'type' => 'string', 'title' => '', 'example' => 'i-bp67acfmxazb4p****'], + 'ServerIp' => ['description' => 'The IP address of the backend server.', 'type' => 'string', 'title' => '', 'example' => '192.168.xxx.xxx'], + 'ServerType' => ['description' => 'The type of the backend server. Valid values:'."\n" + ."\n" + .'- **Ecs**: an ECS instance.'."\n" + ."\n" + .'- **Eni**: an elastic network interface (ENI).'."\n" + ."\n" + .'- **Eci**: an elastic container instance (ECI).'."\n" + ."\n" + .'- **Ip**: an IP address.', 'type' => 'string', 'title' => '', 'example' => 'Ecs'], + 'Status' => ['description' => 'The status of the backend server. Valid values:'."\n" + ."\n" + .'- **Adding**: The backend server is being added.'."\n" + ."\n" + .'- **Available**: The backend server is running as expected.'."\n" + ."\n" + .'- **Draining**: Connections to the backend server are being drained.'."\n" + ."\n" + .'- **Removing**: The backend server is being removed.'."\n" + ."\n" + .'- **Replacing**: The backend server is being replaced.', 'type' => 'string', 'title' => '', 'example' => 'Available'], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'TotalCount' => ['description' => 'The number of entries in the list.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'IncorrectStatus.BackendServer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], + 'errorCodes' => [], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ListServerGroupServers', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroupServers'], ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.BackendServer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:ListServerGroupServers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::ListServerGroupServers', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', - '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 the ListServerGroups operation 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 the ListServerGroupServers operation 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" - ."\n" - .'> '."\n" - ."\n" - .'* If connection draining id enabled (**ConnectionDrainEnabled** set to true) for the server group of the backend server, the backend server that you remove enters the **Removing** state before entering the **Draining** state. When the connection draining timeout period (**ConnectionDrainTimeout**) ends, the backend server is removed from the server group.'."\n" - ."\n" - .'* You can add the backend server to the server group again before the connection draining timeout period ends. In this case, the status of the backend server changes from **Draining** to **Adding**. After the backend server is added to the server group, the backend server enters the **Available** state.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"Servers\\": [\\n {\\n \\"Port\\": 6081,\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"ServerId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"ServerIp\\": \\"192.168.xxx.xxx\\",\\n \\"ServerType\\": \\"Ecs\\",\\n \\"Status\\": \\"Available\\"\\n }\\n ],\\n \\"TotalCount\\": 1\\n}","type":"json"}]', ], 'ListServerGroups' => [ - 'summary' => 'Queries the server groups of a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -2921,9 +2421,7 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225041', - 'abilityTreeNodes' => [ - 'FEATUREslb5QFSS9', - ], + 'abilityTreeNodes' => ['FEATUREslb5QFSS9'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -2935,16 +2433,13 @@ 'schema' => [ 'description' => 'The server group IDs.'."\n" ."\n" - .'You can specify at most 20 server group IDs in each call.'."\n", + .'You can specify at most 20 server group IDs in each call.', 'type' => 'array', - 'items' => [ - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sgp-atstuj3rtoptyui****', - ], + 'items' => ['description' => 'The server group ID.', 'type' => 'string', 'required' => false, 'example' => 'sgp-atstuj3rtoptyui****', 'title' => ''], 'required' => false, 'maxItems' => 20, + 'title' => '', + 'example' => '', ], ], [ @@ -2954,16 +2449,13 @@ 'schema' => [ 'description' => 'The server group names.'."\n" ."\n" - .'You can specify at most 20 server group names in each call.'."\n", + .'You can specify at most 20 server group names in each call.', 'type' => 'array', - 'items' => [ - 'description' => 'The server group name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testServerGroupName', - ], + 'items' => ['description' => 'The server group name.', 'type' => 'string', 'required' => false, 'example' => 'testServerGroupName', 'title' => ''], 'required' => false, 'maxItems' => 20, + 'title' => '', + 'example' => '', ], ], [ @@ -2972,26 +2464,20 @@ 'schema' => [ 'description' => 'The server group type. Valid values:'."\n" ."\n" - .'* **Instance**: allows you to specify resources of the **Ecs**, **Eni**, or **Eci** type.'."\n" - .'* **Ip**: allows you to add servers by specifying IP addresses.'."\n", + .'- **Instance**: allows you to specify resources of the **Ecs**, **Eni**, or **Eci** type.'."\n" + ."\n" + .'- **Ip**: allows you to add servers by specifying IP addresses.', 'type' => 'string', + 'enum' => ['Instance', 'Ip'], 'required' => false, 'example' => 'Instance', - 'enum' => [ - 'Instance', - 'Ip', - ], + 'title' => '', ], ], [ 'name' => 'ResourceGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the resource group to which the instance belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rg-atstuj3rtop****', - ], + 'schema' => ['description' => 'The ID of the resource group to which the instance belongs.', 'type' => 'string', 'required' => false, 'example' => 'rg-atstuj3rtop****', 'title' => ''], ], [ 'name' => 'Tag', @@ -3000,396 +2486,264 @@ 'schema' => [ 'description' => 'The tag keys.'."\n" ."\n" - .'You can specify at most 20 tags in each call.'."\n", + .'You can specify at most 20 tags in each call.', 'type' => 'array', 'items' => [ - 'description' => 'The tag.'."\n", + 'description' => 'The tag.', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testTagValue', - ], + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'testTagKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'testTagValue', 'title' => ''], ], 'required' => false, + 'title' => '', + 'example' => '', ], 'required' => false, 'maxItems' => 20, + 'title' => '', + 'example' => '', ], ], [ 'name' => 'VpcId', 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组所在vpc的id', - 'description' => 'The VPC ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'vpc-bp15zckdt37pq72zv****', - ], + 'schema' => ['description' => 'The VPC ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'vpc-bp15zckdt37pq72zv****'], ], [ 'name' => 'NextToken', 'in' => 'formData', - 'schema' => [ - '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 a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', - ], + 'schema' => ['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" + ."\n" + .'- If a value of **NextToken** is returned, the value indicates the token that is used for the next query.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'], ], [ 'name' => 'MaxResults', 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => 'The number of entries per page.'."\n" - ."\n" - .'Valid values: 1 to 1000.'."\n" - ."\n" - .'Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], + 'schema' => ['description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 1000.'."\n" + ."\n" + .'Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '20'], ], [ 'name' => 'Skip', 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of entries to be skipped in the call.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The number of entries to be skipped in the call.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'MaxResults' => [ - 'description' => 'The number of entries per page.'."\n" - ."\n" - .'Valid values: 1 to 1000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - '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 of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', - ], + 'MaxResults' => ['description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 1000.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'NextToken' => ['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" + ."\n" + .'- If a value of **NextToken** is returned, the value indicates the token that is used for the next query.', 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], 'ServerGroups' => [ - 'description' => 'The configurations of the server group.'."\n", + 'description' => 'The configurations of the server group.', 'type' => 'array', 'items' => [ - 'description' => 'The server group.'."\n", + 'description' => 'The server group.', 'type' => 'object', 'properties' => [ 'ConnectionDrainConfig' => [ - 'description' => 'The configurations of connection draining.'."\n", + 'description' => 'The configurations of 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" - ."\n" - .'Unit: seconds'."\n" - ."\n" - .'Valid values: 1 to 3600.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '300', - ], + 'ConnectionDrainEnabled' => ['description' => 'Indicates whether connection draining is enabled. Valid values:'."\n" + ."\n" + .'- **true**'."\n" + ."\n" + .'- **false**', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'ConnectionDrainTimeout' => ['description' => 'The timeout period of connection draining.'."\n" + ."\n" + .'Unit: seconds'."\n" + ."\n" + .'Valid values: 1 to 3600.', 'type' => 'integer', 'format' => 'int32', 'example' => '300', 'title' => ''], ], + 'title' => '', + 'example' => '', ], - 'CreateTime' => [ - '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' => '2024-08-05T18:24:07Z', - ], + 'CreateTime' => ['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.', 'type' => 'string', 'example' => '2024-08-05T18:24:07Z', 'title' => ''], 'HealthCheckConfig' => [ - 'title' => '健康检查配置', - 'description' => 'The configuration of health checks.'."\n", + 'title' => '', + 'description' => 'The configuration of health checks.', 'type' => 'object', 'properties' => [ - 'HealthCheckConnectPort' => [ - 'title' => '健康检查使用的端口', - 'description' => 'The backend server port that is used for health checks.'."\n" - ."\n" - .'Valid values: **1** to **65535**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '80', - ], - 'HealthCheckConnectTimeout' => [ - 'title' => '健康检查响应的最大超时时间', - 'description' => 'The maximum timeout period of a health check.'."\n" - ."\n" - .'Unit: seconds'."\n" - ."\n" - .'Valid values: **1** to **300**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'HealthCheckDomain' => [ - 'title' => '健康检查的域名', - 'description' => 'The domain name that is used for health checks. Valid values:'."\n" - ."\n" - .'* **$SERVER_IP**: the internal IP address of a backend server.'."\n" - .'* **domain**: a domain name. The domain name must be 1 to 80 characters in length, and can contain letters, digits, hyphens (-), and periods (.).'."\n" - ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'example' => '$SERVER_IP', - ], - 'HealthCheckEnabled' => [ - 'title' => '是否开启健康检查', - 'description' => 'Indicates whether the health check feature is enabled. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], + 'HealthCheckConnectPort' => ['description' => 'The backend server port that is used for health checks.'."\n" + ."\n" + .'Valid values: **1** to **65535**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '80'], + 'HealthCheckConnectTimeout' => ['description' => 'The maximum timeout period of a health check.'."\n" + ."\n" + .'Unit: seconds'."\n" + ."\n" + .'Valid values: **1** to **300**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '5'], + 'HealthCheckDomain' => ['description' => 'The domain name that is used for health checks. Valid values:'."\n" + ."\n" + .'- **$SERVER\\_IP**: the internal IP address of a backend server.'."\n" + ."\n" + .'- **domain**: a domain name. The domain name must be 1 to 80 characters in length, and can contain letters, digits, hyphens (-), and periods (.).'."\n" + ."\n" + .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.', 'type' => 'string', 'title' => '', 'example' => '$SERVER_IP'], + 'HealthCheckEnabled' => ['description' => 'Indicates whether the health check feature is enabled. Valid values:'."\n" + ."\n" + .'- **true**'."\n" + ."\n" + .'- **false**', 'type' => 'boolean', 'title' => '', 'example' => 'true'], 'HealthCheckHttpCode' => [ - 'title' => '状态码,多个状态码用逗号分隔', - 'description' => 'The HTTP status codes that the system returns for health checks.'."\n", + 'title' => '', + 'description' => 'The HTTP status codes that the system returns for health checks.', 'type' => 'array', - 'items' => [ - 'description' => 'The HTTP status code to return for health checks. Separate multiple HTTP status codes with commas (,). Valid values:'."\n" - ."\n" - .'* **http\\_2xx**'."\n" - .'* **http\\_3xx**'."\n" - .'* **http\\_4xx**'."\n" - .'* **http\\_5xx**'."\n" - ."\n" - .'Default value: **http\\_2xx**.'."\n" - ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'example' => 'http_2xx', - ], - ], - 'HealthCheckInterval' => [ - 'title' => '健康检查时间间隔', - 'description' => 'The interval at which health checks are performed.'."\n" + 'items' => ['description' => 'The HTTP status code to return for health checks. Separate multiple HTTP status codes with commas (,). Valid values:'."\n" ."\n" - .'Unit: seconds'."\n" + .'- **http\\_2xx**'."\n" ."\n" - .'Valid values: **1** to **50**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'HealthCheckPath' => [ - 'title' => '健康检查的path', - 'description' => 'The URL that is used for health checks.'."\n" + .'- **http\\_3xx**'."\n" ."\n" - .'The URL must be 1 to 80 characters in length, and can contain letters, digits, and the following special characters: ` - / . % ? # & `The URL must start with a forward slash (/).'."\n" + .'- **http\\_4xx**'."\n" ."\n" - .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.'."\n", - 'type' => 'string', - 'example' => '/test/index.html', - ], - 'HealthCheckProtocol' => [ - 'title' => '健康检查协议类型', - 'description' => 'The protocol that is used for health checks. Valid values:'."\n" + .'- **http\\_5xx**'."\n" ."\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" - .'* **HTTP**: HTTP health checks simulate a process that uses a web browser to access resources by sending HEAD or GET requests to an instance. These requests are used to check whether the instance is healthy.'."\n", - 'type' => 'string', - 'example' => 'TCP', - ], - 'HealthyThreshold' => [ - 'title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', - '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", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'UnhealthyThreshold' => [ - 'title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', - '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" + .'Default value: **http\\_2xx**.'."\n" ."\n" - .'Valid values: **2** to **10**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', + .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.', 'type' => 'string', 'example' => 'http_2xx', 'title' => ''], + 'example' => '', ], + 'HealthCheckInterval' => ['description' => 'The interval at which health checks are performed.'."\n" + ."\n" + .'Unit: seconds'."\n" + ."\n" + .'Valid values: **1** to **50**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '10'], + 'HealthCheckPath' => ['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: `- / . % ? # & `The URL must start with a forward slash (/).'."\n" + ."\n" + .'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**.', 'type' => 'string', 'title' => '', 'example' => '/test/index.html'], + 'HealthCheckProtocol' => ['description' => 'The protocol that is used for health checks. Valid values:'."\n" + ."\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" + ."\n" + .'- **HTTP**: HTTP health checks simulate a process that uses a web browser to access resources by sending HEAD or GET requests to an instance. These requests are used to check whether the instance is healthy.', 'type' => 'string', 'title' => '', 'example' => 'TCP'], + 'HealthyThreshold' => ['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**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '2'], + 'UnhealthyThreshold' => ['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**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '2'], + 'HealthCheckReq' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], + 'HealthCheckExp' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], ], + 'example' => '', ], - 'Protocol' => [ - 'title' => '后端协议', - 'description' => 'The backend protocol. Valid values:'."\n" - ."\n" - .'* **GENEVE**.'."\n", - 'type' => 'string', - 'example' => 'GENEVE', - ], + 'Protocol' => ['description' => 'The backend protocol. Valid values:'."\n" + ."\n" + .'- **GENEVE**.', 'type' => 'string', 'title' => '', 'example' => 'GENEVE'], 'RelatedLoadBalancerIds' => [ - 'description' => 'The IDs of the GWLB instances that are associated with the server group.'."\n", + 'description' => 'The IDs of the GWLB instances that are associated with the server group.', 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the GWLB instance that is associated with the server group.'."\n", - 'type' => 'string', - 'example' => 'gwlb-cp6prgqy40hols****', - ], - ], - 'ResourceGroupId' => [ - 'title' => '资源组id', - 'description' => 'The resource group ID.'."\n", - 'type' => 'string', - 'example' => 'rg-atstuj3rtop****', - ], - 'Scheduler' => [ - 'title' => '流量调度算法', - 'description' => 'The scheduling algorithm. Valid values:'."\n" - ."\n" - .'* **5TCH**: indicates consistent hashing that is based on the following factors: source IP address, destination IP address, source port, protocol, and destination port. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" - .'* **3TCH**: indicates consistent hashing that is based on the following factors: source IP address, destination IP address, and protocol. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" - .'* **2TCH**: indicates consistent hashing that is based on the following factors: source IP address and destination IP address. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n", - 'type' => 'string', - 'example' => '5TCH', - ], - 'ServerCount' => [ - 'description' => 'The number of server groups.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'ServerGroupId' => [ - 'title' => '服务器组id', - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'example' => 'sgp-atstuj3rtoptyui****', - ], - 'ServerGroupName' => [ - 'title' => '服务器组名称', - 'description' => 'The server group name.'."\n", - 'type' => 'string', - 'example' => 'testServerGroupName', - ], - '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**: allows you to specify servers of the **Ecs**, **Eni**, or **Eci** type.'."\n" - .'* **Ip**: allows you to add servers of by specifying IP addresses.'."\n", - 'type' => 'string', - 'example' => 'Instance', - ], - 'ServerFailoverMode' => [ - 'description' => 'Specifies how GWLB processes requests over existing connections when a backend server is not running as expected. Valid values:'."\n" - ."\n" - .'* **NoRebalance**: GWLB continues to forward requests over existing connections to the unhealthy backend server.'."\n" - .'* **Rebalance**: GWLB forwards requests over existing connections to the remaining healthy backend servers.'."\n", - 'type' => 'string', - 'example' => 'NoRebalance', + 'items' => ['description' => 'The ID of the GWLB instance that is associated with the server group.', 'type' => 'string', 'example' => 'gwlb-cp6prgqy40hols****', 'title' => ''], + 'title' => '', + 'example' => '', ], + 'ResourceGroupId' => ['description' => 'The resource group ID.', 'type' => 'string', 'title' => '', 'example' => 'rg-atstuj3rtop****'], + 'Scheduler' => ['description' => 'The scheduling algorithm. Valid values:'."\n" + ."\n" + .'- **5TCH**: indicates consistent hashing that is based on the following factors: source IP address, destination IP address, source port, protocol, and destination port. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" + ."\n" + .'- **3TCH**: indicates consistent hashing that is based on the following factors: source IP address, destination IP address, and protocol. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.'."\n" + ."\n" + .'- **2TCH**: indicates consistent hashing that is based on the following factors: source IP address and destination IP address. Requests that contain the same information based on the preceding factors are forwarded to the same backend server.', 'type' => 'string', 'title' => '', 'example' => '5TCH'], + 'ServerCount' => ['description' => 'The number of server groups.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'title' => '', 'example' => 'sgp-atstuj3rtoptyui****'], + 'ServerGroupName' => ['description' => 'The server group name.', 'type' => 'string', 'title' => '', 'example' => 'testServerGroupName'], + 'ServerGroupStatus' => ['description' => 'The status of the server group. Valid values:'."\n" + ."\n" + .'- **Creating**'."\n" + ."\n" + .'- **Available**'."\n" + ."\n" + .'- **Configuring**', 'type' => 'string', 'title' => '', 'example' => 'Available'], + 'ServerGroupType' => ['description' => 'The server group type. Valid values:'."\n" + ."\n" + .'- **Instance**: allows you to specify servers of the **Ecs**, **Eni**, or **Eci** type.'."\n" + ."\n" + .'- **Ip**: allows you to add servers of by specifying IP addresses.', 'type' => 'string', 'title' => '', 'example' => 'Instance'], + 'ServerFailoverMode' => ['description' => 'Specifies how GWLB processes requests over existing connections when a backend server is not running as expected. Valid values:'."\n" + ."\n" + .'- **NoRebalance**: GWLB continues to forward requests over existing connections to the unhealthy backend server.'."\n" + ."\n" + .'- **Rebalance**: GWLB forwards requests over existing connections to the remaining healthy backend servers.', 'type' => 'string', 'example' => 'NoRebalance', 'title' => ''], 'Tags' => [ - 'title' => '标签', - 'description' => 'The tags.'."\n", + 'title' => '', + 'description' => 'The tags.', 'type' => 'array', 'items' => [ - 'description' => 'The tag.'."\n", + 'description' => 'The tag.', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'example' => 'testTagValue', - ], + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'testTagKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'testTagValue', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], - 'VpcId' => [ - 'title' => '服务器组的vpcid', - 'description' => 'The VPC ID.'."\n", - 'type' => 'string', - 'example' => 'vpc-bp15zckdt37pq72zv****', - ], + 'VpcId' => ['description' => 'The VPC ID.', 'type' => 'string', 'title' => '', 'example' => 'vpc-bp15zckdt37pq72zv****'], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], + 'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ServerGroups\\": [\\n {\\n \\"ConnectionDrainConfig\\": {\\n \\"ConnectionDrainEnabled\\": false,\\n \\"ConnectionDrainTimeout\\": 300\\n },\\n \\"CreateTime\\": \\"2024-08-05T18:24:07Z\\",\\n \\"HealthCheckConfig\\": {\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckConnectTimeout\\": 5,\\n \\"HealthCheckDomain\\": \\"$SERVER_IP\\",\\n \\"HealthCheckEnabled\\": true,\\n \\"HealthCheckHttpCode\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckInterval\\": 10,\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"TCP\\",\\n \\"HealthyThreshold\\": 2,\\n \\"UnhealthyThreshold\\": 2\\n },\\n \\"Protocol\\": \\"GENEVE\\",\\n \\"RelatedLoadBalancerIds\\": [\\n \\"gwlb-cp6prgqy40hols****\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Scheduler\\": \\"5TCH\\",\\n \\"ServerCount\\": 2,\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"ServerGroupName\\": \\"testServerGroupName\\",\\n \\"ServerGroupStatus\\": \\"Available\\",\\n \\"ServerGroupType\\": \\"Instance\\",\\n \\"ServerFailoverMode\\": \\"NoRebalance\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\"\\n }\\n ],\\n \\"TotalCount\\": 1\\n}","type":"json"}]', + 'staticInfo' => ['returnType' => 'synchronous'], 'title' => 'ListServerGroups', - ], - 'ListServerGroupServers' => [ 'summary' => 'Queries the server groups of a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroups'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:ListServerGroups', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ServerGroups\\": [\\n {\\n \\"ConnectionDrainConfig\\": {\\n \\"ConnectionDrainEnabled\\": false,\\n \\"ConnectionDrainTimeout\\": 300\\n },\\n \\"CreateTime\\": \\"2024-08-05T18:24:07Z\\",\\n \\"HealthCheckConfig\\": {\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckConnectTimeout\\": 5,\\n \\"HealthCheckDomain\\": \\"$SERVER_IP\\",\\n \\"HealthCheckEnabled\\": true,\\n \\"HealthCheckHttpCode\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckInterval\\": 10,\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"TCP\\",\\n \\"HealthyThreshold\\": 2,\\n \\"UnhealthyThreshold\\": 2,\\n \\"HealthCheckReq\\": \\"\\",\\n \\"HealthCheckExp\\": \\"\\"\\n },\\n \\"Protocol\\": \\"GENEVE\\",\\n \\"RelatedLoadBalancerIds\\": [\\n \\"gwlb-cp6prgqy40hols****\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Scheduler\\": \\"5TCH\\",\\n \\"ServerCount\\": 2,\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"ServerGroupName\\": \\"testServerGroupName\\",\\n \\"ServerGroupStatus\\": \\"Available\\",\\n \\"ServerGroupType\\": \\"Instance\\",\\n \\"ServerFailoverMode\\": \\"NoRebalance\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\"\\n }\\n ],\\n \\"TotalCount\\": 1\\n}","type":"json"}]', + ], + 'ListTagResources' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -3398,224 +2752,165 @@ 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225066', - 'abilityTreeNodes' => [ - 'FEATUREslb3GOGI0', - ], + 'abilityTreeCode' => '225143', + 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ServerGroupId', + 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ - 'description' => 'The server group ID.'."\n", + 'description' => 'The resource type. Valid values:'."\n" + ."\n" + .'- **loadbalancer**: a Gateway Load Balancer (GWLB) instance.'."\n" + ."\n" + .'- **listener**: a listener.'."\n" + ."\n" + .'- **servergroup**: a server group.', 'type' => 'string', - 'required' => false, - 'example' => 'sgp-atstuj3rtoptyui****', + 'required' => true, + 'enum' => [], + 'example' => 'loadbalancer', + 'title' => '', ], ], [ - 'name' => 'ServerIds', + 'name' => 'ResourceId', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => 'The server IDs.'."\n" - ."\n" - .'You can specify at most 200 servers in each call.'."\n", + 'description' => 'A list of resource IDs. You can specify up to 50 resource IDs in each call.', 'type' => 'array', - 'items' => [ - 'description' => 'The server group ID.'."\n" - ."\n" - .'* If the server group is of the **Instance** type, set this parameter to the IDs of servers of the **Ecs**, **Eni**, or **Eci** type.'."\n" - .'* If the server group is of the **Ip** type, set ServerId to IP addresses.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'i-bp67acfmxazb4p****', - ], + 'items' => ['description' => 'The resource ID.', 'type' => 'string', 'required' => false, 'example' => 'gwlb-nrnrxwd15en27r****', 'title' => ''], 'required' => false, - 'maxItems' => 200, + 'maxItems' => 50, + 'minItems' => 1, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ServerIps', + 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => 'The server IP addresses.'."\n" - ."\n" - .'You can specify at most 200 servers in each call.'."\n", + 'description' => 'A list of tags. You can specify up to 20 tags in each call.', 'type' => 'array', 'items' => [ - 'description' => 'The server IP address.'."\n", - 'type' => 'string', + 'description' => 'The tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key.', 'type' => 'string', 'required' => false, 'example' => 'testKey', 'title' => ''], + 'Value' => ['description' => 'The tag value.', 'type' => 'string', 'required' => false, 'example' => 'testValue', 'title' => ''], + ], 'required' => false, - 'example' => '192.168.xxx.xxx', + 'title' => '', + 'example' => '', ], 'required' => false, - 'maxItems' => 200, + 'maxItems' => 20, + 'minItems' => 1, + 'title' => '', + 'example' => '', ], ], [ 'name' => 'NextToken', 'in' => 'formData', - 'schema' => [ - '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 a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', - ], + 'schema' => ['description' => 'The token that is used to retrieve the next page of results. Valid values:'."\n" + ."\n" + .'- If the **NextToken** parameter is empty, it indicates that no subsequent query is required.'."\n" + ."\n" + .'- If a value is returned for **NextToken**, the value is the token that is used to retrieve the next page of results.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'WyI2NDQ3MWUxM2EzOWNhMmY0Y2M2YTRiNzZhOWQwNmU1Y2RlNTYzMGEzIiwibiIsIm4iLDEsLTEsMTY5ODcxMzI2NjU0MywiNjU0MDRlYjI2MmI3MDhjY2JiMjM0ZmU0ODNkNTVmMGRhZDllOTBi****'], ], [ 'name' => 'MaxResults', 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => 'The number of entries per page.'."\n" - ."\n" - .'Valid values: 1 to 1000.'."\n" - ."\n" - .'Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], - ], - [ - 'name' => 'Skip', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of entries to be skipped in the call.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The number of entries to return on each page. Valid values: 1 to 1000. Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => 'The response that is returned.', 'type' => 'object', 'properties' => [ - 'MaxResults' => [ - 'description' => 'The number of entries per page.'."\n" - ."\n" - .'Valid values: 1 to 1000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - '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" - .'* You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", - 'type' => 'string', - 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', - ], - 'Servers' => [ - 'description' => 'The backend servers.'."\n", + 'NextToken' => ['description' => 'The token that is used to retrieve the next page of results. Valid values:'."\n" + ."\n" + .'- If the **NextToken** parameter is empty, it indicates that no subsequent query is required.'."\n" + ."\n" + .'- If a value is returned for **NextToken**, the value is the token that is used to retrieve the next page of results.', 'type' => 'string', 'example' => 'd209f4e63ec942c967c50c888a13****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A95325A2-E421-58A6-88AD-7A26CE610F45', 'title' => ''], + 'TagResources' => [ + 'description' => 'The list of tag resources.', 'type' => 'array', 'items' => [ - 'description' => 'The backend server.'."\n", + 'description' => 'The information about the tags that are attached to the resource.', 'type' => 'object', 'properties' => [ - 'Port' => [ - 'title' => '服务器端口', - 'description' => 'The backend server port. Valid values:'."\n" - ."\n" - .'* **6081**'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '6081', - ], - 'ServerGroupId' => [ - 'title' => '服务器所属的服务器组ID', - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'example' => 'sgp-atstuj3rtoptyui****', - ], - 'ServerId' => [ - 'title' => '服务器id', - 'description' => 'The backend server ID.'."\n", - 'type' => 'string', - 'example' => 'i-bp67acfmxazb4p****', - ], - 'ServerIp' => [ - 'title' => '服务器ip', - 'description' => 'The IP address of the backend server.'."\n", - 'type' => 'string', - 'example' => '192.168.xxx.xxx', - ], - 'ServerType' => [ - 'title' => '服务器类型', - 'description' => 'The type of the backend server. Valid 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", - 'type' => 'string', - 'example' => 'Ecs', - ], - 'Status' => [ - 'title' => '资源状态', - 'description' => 'Indicates the status of the backend server. Valid values:'."\n" - ."\n" - .'* **Adding**: The backend server is being added.'."\n" - .'* **Available**: The backend server is available.'."\n" - .'* **Draining**: The backend server is in connection draining.'."\n" - .'* **Removing**: The backend server is being removed.'."\n" - .'* **Replacing**: The backend server is being replaced.'."\n", - 'type' => 'string', - 'example' => 'Available', - ], + 'ResourceId' => ['description' => 'The resource ID.', 'type' => 'string', 'example' => 'gwlb-nrnrxwd15en27r****'."\n", 'title' => ''], + 'ResourceType' => ['description' => 'The resource type. Valid values:'."\n" + ."\n" + .'- **loadbalancer**: a Gateway Load Balancer instance.'."\n" + ."\n" + .'- **listener**: a listener.'."\n" + ."\n" + .'- **servergroup**: a server group.', 'type' => 'string', 'example' => 'loadbalancer', 'title' => ''], + 'TagKey' => ['description' => 'The tag key.', 'type' => 'string', 'example' => 'testKey', 'title' => ''], + 'TagValue' => ['description' => 'The tag value.', 'type' => 'string', 'example' => 'testValue', 'title' => ''], ], + 'title' => '', + 'example' => '', ], - ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"Servers\\": [\\n {\\n \\"Port\\": 6081,\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"ServerId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"ServerIp\\": \\"192.168.xxx.xxx\\",\\n \\"ServerType\\": \\"Ecs\\",\\n \\"Status\\": \\"Available\\"\\n }\\n ],\\n \\"TotalCount\\": 1\\n}","type":"json"}]', - 'title' => 'ListServerGroupServers', - ], - 'CreateListener' => [ - 'summary' => 'Creates a listener for a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam.TagsOrResourceIds', 'errorMessage' => 'The param of TagsOrResourceIds is missing.', 'description' => 'The param of TagsOrResourceIds is missing.'], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => 'The parameter of tag key is missing.'], + ['errorCode' => 'DuplicatedParam.ResourceId', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The param of %s is duplicated.'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The parameter of tag key is duplicated.'], + ], ], - 'schemes' => [ - 'https', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ListTagResources', + 'summary' => 'Lists the tags that are attached to specified resources.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListTagResources'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListTagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"d209f4e63ec942c967c50c888a13****\\",\\n \\"RequestId\\": \\"A95325A2-E421-58A6-88AD-7A26CE610F45\\",\\n \\"TagResources\\": [\\n {\\n \\"ResourceId\\": \\"gwlb-nrnrxwd15en27r****\\\\n\\",\\n \\"ResourceType\\": \\"loadbalancer\\",\\n \\"TagKey\\": \\"testKey\\",\\n \\"TagValue\\": \\"testValue\\"\\n }\\n ]\\n}","type":"json"}]', + ], + 'MoveResourceGroup' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -3624,234 +2919,112 @@ 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '220131', - 'abilityTreeNodes' => [ - 'FEATUREslbPNW4R2', - ], + 'abilityTreeCode' => '225546', + 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'LoadBalancerId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-te609d6696632f7*****', - ], - ], - [ - 'name' => 'ListenerDescription', + 'name' => 'ResourceId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The description of the listener.'."\n" - ."\n" - .'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", - 'type' => 'string', - 'required' => false, - 'example' => 'listener-description', - ], + 'schema' => ['description' => 'The resource ID.', 'type' => 'string', 'required' => true, 'example' => 'gwlb-nrnrxwd15en27r****', 'title' => ''], ], [ - 'name' => 'ServerGroupId', + 'name' => 'NewResourceGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-ckh01px70dszof****', - ], + 'schema' => ['description' => 'The ID of the destination resource group.', 'type' => 'string', 'required' => true, 'example' => 'rg-aek253e4oit****', 'title' => ''], ], [ - 'name' => 'TcpIdleTimeout', + 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ - 'title' => 'TCP连接空闲超时时间。默认值:**350**秒。'."\n" - ."\n" - .'取值范围:**60**-**6000**秒。', - 'description' => 'The timeout period of an idle TCP connection. Unit: seconds.'."\n" + 'description' => 'The resource type. Valid values:'."\n" ."\n" - .'Default value: **350**.'."\n" + .'- **loadbalancer**: a Gateway Load Balancer instance.'."\n" ."\n" - .'Valid values: **60** to **6000**.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'default' => '350', - 'example' => '350', + .'- **servergroup**: a server group.', + 'type' => 'string', + 'required' => true, + 'enum' => ['loadbalancer', 'servergroup'], + 'example' => 'loadbalancer', + 'title' => '', ], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform a dry run, without sending 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', - ], + 'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'- **true**: performs a dry run. The system checks the required parameters, the 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" + ."\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.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - '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 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-42665544****', - ], - ], - [ - 'name' => 'Tag', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => 'The tags. You can specify at most 20 tags in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testValue', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - ], + 'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a 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 **RequestId** of the request as the **ClientToken**. The **RequestId** may be different for each request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => 'The data returned.', 'type' => 'object', 'properties' => [ - 'ListenerId' => [ - 'title' => '', - 'description' => 'The listener ID.'."\n", - 'type' => 'string', - 'example' => 'lsn-wi3c0v30ivysrg****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A045E652-D298-5E70-A978-7247135336FB', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '78828B5C-521E-50F3-84D4-7019691D1382', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'MissingParam.TagValue', - 'errorMessage' => 'The param of TagValue is missing.', - ], - [ - 'errorCode' => 'OperationDenied.TooManyListeners', - 'errorMessage' => 'The operation is not allowed because of TooManyListener.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'ResourceInUse.IP', - 'errorMessage' => 'The specified resource of IP is in use.', - ], - [ - 'errorCode' => 'Mismatch.VpcId', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IllegalParam.TagValue', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', - 'errorMessage' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', - ], + ['errorCode' => 'OperationDenied.NotExist.ResourceGroup', 'errorMessage' => 'The operation is not allowed because of NotExist.ResourceGroup.', 'description' => 'The operation is not allowed because of NotExist.ResourceGroup.'], + ['errorCode' => 'OperationDenied.StatusCheckFail.ResourceGroup', 'errorMessage' => 'The operation is not allowed because of StatusCheckFail.ResourceGroup.', 'description' => 'The operation is not allowed because of StatusCheckFail.ResourceGroup.'], ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of .LoadBalancer is not found.'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'MoveResourceGroup', + 'summary' => 'Moves a resource to another resource group.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'MoveResourceGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:MoveResourceGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:serverGroup/{#serverGroupId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerId\\": \\"lsn-wi3c0v30ivysrg****\\",\\n \\"RequestId\\": \\"A045E652-D298-5E70-A978-7247135336FB\\"\\n}","type":"json"}]', - 'title' => 'CreateListener', - 'description' => '**CreateListener** 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** operation to query the status of the task.'."\n" - ."\n" - .'* If the listener is in the **Provisioning** state, the listener is being created.'."\n" - .'* If the listener is in the **Running** state, the listener is running.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"78828B5C-521E-50F3-84D4-7019691D1382\\"\\n}","type":"json"}]', ], - 'UpdateListenerAttribute' => [ - 'summary' => 'Updates the configurations of a Gateway Load Balancer (GWLB) listener.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'RemoveServersFromServerGroup' => [ + 'summary' => 'Removes backend servers from the server group of a Gateway Load Balancer (GWLB) instance.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -3860,88 +3033,79 @@ 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221402', - 'abilityTreeNodes' => [ - 'FEATUREslbC68LB1', - 'FEATUREslbPNW4R2', - ], + 'abilityTreeCode' => '225065', + 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ListenerId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The listener ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'lsn-lxce8iqbof2vl0****', - ], - ], - [ - 'name' => 'ListenerDescription', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The listener description.'."\n" - ."\n" - .'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", - 'type' => 'string', - 'required' => false, - 'example' => 'listener_description', - ], - ], - [ 'name' => 'ServerGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sgp-sp8d2r6y7t0xtl****', - ], + 'schema' => ['description' => 'The server group ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtoptyui****', 'title' => ''], ], [ - 'name' => 'TcpIdleTimeout', + 'name' => 'Servers', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => 'TCP连接空闲超时时间。取值范围:**60**-**6000**秒。', - 'description' => 'The timeout period of an idle TCP connection. Unit: seconds.'."\n" + 'description' => 'The backend servers that you want to remove.'."\n" ."\n" - .'Valid values: **60** to **6000**.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '350', + .'> You can remove at most 200 backend servers in each call.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The backend server.'."\n", + 'type' => 'object', + 'properties' => [ + 'Port' => ['title' => '', 'description' => 'The port that is used by the backend server. Valid values:'."\n" + ."\n" + .'* **6081**'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '6081'], + 'ServerId' => ['title' => '', 'description' => 'The backend server ID.'."\n" + ."\n" + .'* If the server group is of the **Instance** type, set this parameter to the IDs of servers of the **Ecs**, **Eni**, or **Eci** type.'."\n" + .'* If the server group is of the **Ip** type, set ServerId to IP addresses.'."\n", 'type' => 'string', 'required' => true, 'example' => 'i-bp67acfmxazb4p****'], + 'ServerIp' => ['title' => '', 'description' => 'The IP address of the backend server.'."\n", 'type' => 'string', 'required' => false, 'example' => '192.168.xxx.xxx'."\n"], + 'ServerType' => [ + 'title' => '', + 'description' => 'The type of the backend server. Valid 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", + 'type' => 'string', + 'required' => true, + 'example' => 'Ecs', + 'enum' => ['Ecs', 'Eni', 'Eci', 'Ip'], + ], + ], + 'required' => false, + 'title' => '', + ], + 'required' => true, + 'maxItems' => 200, + 'title' => '', ], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform 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', - ], + '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' => 'ClientToken', 'in' => 'formData', - '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 token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters. 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****', - ], + '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-42665544****'], ], ], 'responses' => [ @@ -3951,87 +3115,67 @@ 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7DBFC67C-A272-5952-8287-6C3EBE4E04D9', - ], + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], ], ], ], ], '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' => 'Mismatch.VpcId', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'ResourceInUse.IP', - 'errorMessage' => 'The specified resource of IP is in use.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', - 'errorMessage' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', - ], - [ - 'errorCode' => 'OperationDenied.TcpIdleTimeoutNotConfigurable', - 'errorMessage' => 'The TCP idle timeout of listener is configurable only when the scheduling algorithm of server group is 5TCH.', - ], + ['errorCode' => 'IncorrectStatus.BackendServer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The current operation cannot be performed on the server as its status is unavailable. Please check if the server is currently undergoing any other operations.'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'], ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.BackendServer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified backend server resource does not exist.'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\"\\n}","type":"json"}]', - '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** operation to query the status of a listener.'."\n" + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::ListServerGroupServers', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', + '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" - .'* If the listener is in the **Configuring** state, the listener is being modified.'."\n" - .'* If the listener is in the **Running** state, the listener is modified.'."\n", - ], - 'DeleteListener' => [ - 'summary' => 'Deletes a listener from a Gateway Load Balancer (GWLB) instance.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', + .'1. You can call the ListServerGroups operation 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 the ListServerGroupServers operation 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" + ."\n" + .'> '."\n" + ."\n" + .'* If connection draining id enabled (**ConnectionDrainEnabled** set to true) for the server group of the backend server, the backend server that you remove enters the **Removing** state before entering the **Draining** state. When the connection draining timeout period (**ConnectionDrainTimeout**) ends, the backend server is removed from the server group.'."\n" + ."\n" + .'* You can add the backend server to the server group again before the connection draining timeout period ends. In this case, the status of the backend server changes from **Draining** to **Adding**. After the backend server is added to the server group, the backend server enters the **Available** state.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'RemoveServersFromServerGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:RemoveServersFromServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], + ], + ], + ], ], + ], + 'TagResources' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -4040,245 +3184,230 @@ 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221398', - 'abilityTreeNodes' => [ - 'FEATUREslbC68LB1', - ], + 'abilityTreeCode' => '225141', + 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ListenerId', + 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ - 'description' => 'The listener ID.'."\n", + 'description' => 'The resource type. Valid values:'."\n" + ."\n" + .'- **loadbalancer**: a Gateway Load Balancer (GWLB) instance.'."\n" + ."\n" + .'- **listener**: a listener.'."\n" + ."\n" + .'- **servergroup**: a server group.', 'type' => 'string', 'required' => true, - 'example' => 'lsn-brx2y3hqdincizg***', + 'enum' => [], + 'example' => 'loadbalancer', + 'title' => '', ], ], [ - 'name' => 'DryRun', + 'name' => 'ResourceId', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform a dry run, without sending 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', + 'description' => 'The list of resource IDs. You can specify up to 50 resource IDs in each call.', + 'type' => 'array', + 'items' => ['description' => 'The resource ID.', 'type' => 'string', 'required' => false, 'example' => 'gwlb-nrnrxwd15en27r****', 'title' => ''], + 'required' => true, + 'maxItems' => 50, + 'minItems' => 1, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ClientToken', + 'name' => 'Tag', 'in' => 'formData', + 'style' => 'flat', '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 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-42665544****', + 'description' => 'The tags. You can specify up to 20 tags in each call.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => true, 'example' => 'testKey', 'title' => ''], + 'Value' => ['description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => true, 'example' => 'testValue', 'title' => ''], + ], + 'required' => true, + 'title' => '', + 'example' => '', + ], + 'required' => true, + 'maxItems' => 20, + 'minItems' => 1, + 'title' => '', + 'example' => '', ], ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'- **true**: performs a dry run. The system checks the required parameters, the request format, and the 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" + ."\n" + .'- **false** (default): performs a normal request. If the request passes the check, the system returns a 2xx HTTP status code and performs the operation.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['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.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the RequestId of the request as the ClientToken. The RequestId may be different for each request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => 'The data returned.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5C6E3548-086F-5FF6-A2B3-B1871B3AB488', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54F6E60A-1777-5C17-A6A9-BCC1A7FE945B', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.Listener', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => 'The parameter of tag key is missing.'], + ['errorCode' => 'MissingParam.TagValue', 'errorMessage' => 'The param of TagValue is missing.', 'description' => 'The parameter of tag value is missing.'], + ['errorCode' => 'ResourceQuotaExceeded.TagNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The number of tags bound to the resource exceeds the limit.'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The parameter of tag key is duplicated.'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ['errorCode' => 'IllegalParam.TagValue', 'errorMessage' => 'The param of %s is illegal.', 'description' => 'The parameter of tag value is illegal.'], + ['errorCode' => 'DuplicatedParam.ResourceId', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The param of %s is duplicated.'], ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of .LoadBalancer is not found.'], + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'TagResources', + 'summary' => 'Creates and attaches tags to specified resources.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'TagResources'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:TagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5C6E3548-086F-5FF6-A2B3-B1871B3AB488\\"\\n}","type":"json"}]', - '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 the **GetListenerAttribute** operation 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", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54F6E60A-1777-5C17-A6A9-BCC1A7FE945B\\"\\n}","type":"json"}]', ], - 'ListListeners' => [ - 'summary' => 'Queries Gateway Load Balancer (GWLB) listeners.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UntagResources' => [ + 'summary' => 'Removes tags from resources.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221401', - 'abilityTreeNodes' => [ - 'FEATUREslbC68LB1', - ], + 'abilityTreeCode' => '225142', + 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ListenerIds', + 'name' => 'ResourceType', 'in' => 'formData', - 'style' => 'flat', 'schema' => [ - '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' => 'lsn-w3t3vpgjj12b2i****', - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, + 'description' => 'The type of resource. Valid values:'."\n" + ."\n" + .'* **loadbalancer**: Gateway Load Balancer (GWLB) instance'."\n" + .'* **listener**: listener'."\n" + .'* **servergroup**: server group'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'loadbalancer', + 'enum' => [], + 'title' => '', ], ], [ - 'name' => 'LoadBalancerIds', + 'name' => 'ResourceId', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => 'The GWLB instance IDs. You can specify at most 20 instance IDs.'."\n", + 'description' => 'The resource IDs. You can specify at most 50 resource IDs in each call.'."\n", 'type' => 'array', - 'items' => [ - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-rbtjolkkbudmrr****', - ], - 'required' => false, - 'maxItems' => 20, + 'items' => ['description' => 'The resource ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'gwlb-nrnrxwd15en27r****', 'title' => ''], + 'required' => true, + 'maxItems' => 50, 'minItems' => 1, + 'title' => '', ], ], [ - 'name' => 'NextToken', + 'name' => 'TagKey', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - '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 a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', + 'description' => 'The keys of the tags that you want to remove. You can remove at most 20 tags in each call.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The key of the tag that you want to remove.'."\n", 'type' => 'string', 'required' => false, 'example' => 'testKey', 'title' => ''], 'required' => false, - 'example' => 'd209f4e63ec942c967c50c888a13****', + 'maxItems' => 20, + 'minItems' => 1, + 'title' => '', ], ], [ - 'name' => 'MaxResults', + 'name' => 'All', 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => 'The maximum number of results to be returned from a single query when the NextToken parameter is used in the query. Valid values: 1 to 1000. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], + 'schema' => ['description' => 'Specifies whether to remove all tags from the specified resource. This parameter is ignored if the TagKey parameter is specified. Valid values:'."\n" + ."\n" + .'* **true**: removes all tags from the specified resource.'."\n" + .'* **false**: does not remove all tags from the specified resource. This is the default value.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], [ - 'name' => 'Tag', + 'name' => 'DryRun', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => 'The tags. You can specify at most 20 tags in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string.'."\n" - ."\n" - .'The tag key can be up to 128 characters in length. The tag key cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tagKey', - ], - 'Value' => [ - 'description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tagValue', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, - ], + 'schema' => ['title' => '', 'description' => 'Specifies whether to perform 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' => 'Skip', + 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of entries to be skipped in the call.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + '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 client token can contain only ASCII characters. 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****'], ], ], 'responses' => [ @@ -4288,149 +3417,66 @@ 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'Listeners' => [ - 'description' => 'The GWLB listeners.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the listeners.'."\n", - 'type' => 'object', - 'properties' => [ - 'ListenerDescription' => [ - 'title' => '监听描述', - 'description' => 'The description of the listener.'."\n", - 'type' => 'string', - 'example' => 'listener-description', - ], - 'ListenerId' => [ - 'title' => '自己生成后赋值', - 'description' => 'The listener ID.'."\n", - 'type' => 'string', - 'example' => 'lsn-vu7folhh5ntm8u****', - ], - '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" - .'* **Deleting**: The listener is being deleted.'."\n", - 'type' => 'string', - 'example' => 'Running', - ], - 'LoadBalancerId' => [ - 'title' => '负载均衡实例ID', - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'example' => 'gwlb-uf6hbeh795xlqln7g****', - ], - 'ServerGroupId' => [ - 'title' => '服务器组ID', - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'example' => 'sgp-5yapcb422i51ru****', - ], - 'TcpIdleTimeout' => [ - 'title' => 'TCP连接空闲超时时间。', - 'description' => 'The timeout period of an idle TCP connection. Unit: seconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '350', - ], - 'Tags' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tags.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The tag key.'."\n", - 'type' => 'string', - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => 'The tag value.'."\n", - 'type' => 'string', - 'example' => 'testValue', - ], - ], - ], - ], - ], - ], - ], - 'MaxResults' => [ - 'description' => 'The maximum number of results to be returned from a single query when the NextToken parameter is used in the query. Valid values: 1 to 1000. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - '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 of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'example' => '5c281c0a0d6bfb6355ed088c2108aca8e0b5e8707e68****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7DBFC67C-A272-5952-8287-6C3EBE4E04D9', - ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '8', - ], + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21', 'title' => ''], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], + ['errorCode' => 'ExclusiveParam.TagKeyAndAll', 'errorMessage' => 'The param of %s and %s are mutually exclusive.', 'description' => 'The parameter of TagKey and All are mutually exclusive.'], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => 'The parameter of tag key is missing.'], + ['errorCode' => 'DuplicatedParam.ResourceId', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The param of %s is duplicated.'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The parameter of tag key is duplicated.'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of .LoadBalancer is not found.'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21\\"\\n}","type":"json"}]', + 'title' => 'UntagResources', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UntagResources'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UntagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Listeners\\": [\\n {\\n \\"ListenerDescription\\": \\"listener-description\\",\\n \\"ListenerId\\": \\"lsn-vu7folhh5ntm8u****\\",\\n \\"ListenerStatus\\": \\"Running\\",\\n \\"LoadBalancerId\\": \\"gwlb-uf6hbeh795xlqln7g****\\",\\n \\"ServerGroupId\\": \\"sgp-5yapcb422i51ru****\\",\\n \\"TcpIdleTimeout\\": 350,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testKey\\",\\n \\"Value\\": \\"testValue\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"5c281c0a0d6bfb6355ed088c2108aca8e0b5e8707e68****\\",\\n \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\",\\n \\"TotalCount\\": 8\\n}","type":"json"}]', - 'title' => 'ListListeners', ], - 'GetListenerAttribute' => [ - 'summary' => 'Queries the details of a Gateway Load Balancer (GWLB) listener.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateListenerAttribute' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221399', - 'abilityTreeNodes' => [ - 'FEATUREslbC68LB1', - ], + 'abilityTreeCode' => '221402', + 'abilityTreeNodes' => ['FEATUREslbC68LB1', 'FEATUREslbPNW4R2'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -4438,1141 +3484,1046 @@ [ 'name' => 'ListenerId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The listener ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'lsn-brx2y3hqdinciz****', - ], + 'schema' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => true, 'example' => 'lsn-lxce8iqbof2vl0****', 'title' => ''], + ], + [ + 'name' => 'ListenerDescription', + 'in' => 'formData', + 'schema' => ['description' => 'The description of the listener.'."\n" + ."\n" + .'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 (-).', 'type' => 'string', 'required' => false, 'example' => 'listener_description', 'title' => ''], + ], + [ + 'name' => 'ServerGroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The server group ID.', 'type' => 'string', 'required' => false, 'example' => 'sgp-sp8d2r6y7t0xtl****', 'title' => ''], + ], + [ + 'name' => 'TcpIdleTimeout', + 'in' => 'formData', + 'schema' => ['title' => 'TCP连接空闲超时时间。取值范围:**60**-**6000**秒。', 'description' => 'The timeout period of an idle TCP connection. Valid values: **60** to **6000**. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '350'], + ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['description' => 'Specifies whether to perform a dry run. 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" + ."\n" + .'- **false** (default): performs a normal request. If the request passes the check, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['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.'."\n" + ."\n" + .'> If you do not specify this parameter, the system automatically uses the RequestId of the request as the ClientToken. The RequestId of each request is different.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => 'The returned data.', 'type' => 'object', 'properties' => [ - 'ListenerDescription' => [ - 'title' => '监听描述', - 'description' => 'The listener description.'."\n" - ."\n" - .'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", - 'type' => 'string', - 'example' => 'listener_description', - ], - 'ListenerId' => [ - 'title' => '', - 'description' => 'The listener ID.'."\n", - 'type' => 'string', - 'example' => 'lsn-3kbj3587mqhm3p****', - ], - 'ListenerStatus' => [ - 'title' => '监听状态', - 'description' => 'The listener status. Valid values:'."\n" - ."\n" - .'* **Provisioning**: The listener is being created.'."\n" - .'* **Running**: The listener is running.'."\n" - .'* **Configuring**: The listener is being configured.'."\n" - .'* **Deleting**: The listener is being deleted.'."\n", - 'type' => 'string', - 'example' => 'Provisioning', - ], - 'LoadBalancerId' => [ - 'title' => '负载均衡实例ID', - 'description' => 'The GWLB instance ID.'."\n", - 'type' => 'string', - 'example' => 'gwlb-te609d6696632f76****', - ], - 'RegionId' => [ - 'title' => '', - 'description' => 'The region ID of the GWLB instance.'."\n", - 'type' => 'string', - 'example' => 'cn-hangzhou', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '75CC3312-7757-5EE1-90D8-49CEA66608AE', - ], - 'ServerGroupId' => [ - 'title' => '服务器组ID', - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'example' => 'sgp-sp8d2r6y7t0xtl****', - ], - 'TcpIdleTimeout' => [ - 'title' => 'TCP连接空闲超时时间。', - 'description' => 'The timeout period of an idle TCP connection. Unit: seconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '350', - ], - 'Tags' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs: `or `aliyun`. The tag key cannot contain `http://` or `https://`.', - 'type' => 'string', - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.', - 'type' => 'string', - 'example' => 'testValue', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7DBFC67C-A272-5952-8287-6C3EBE4E04D9', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'Resource %s with business state %s does not support current operation'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Resource %s current state %s does not support operation'], + ['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Operation not supported for resource% s in current state% s.'], + ['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The VPC IDs of the two resources do not match.'], + ['errorCode' => 'ResourceInUse.IP', 'errorMessage' => 'The specified resource of IP is in use.', 'description' => ''], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'], + ['errorCode' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', 'errorMessage' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', 'description' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.'], + ['errorCode' => 'OperationDenied.TcpIdleTimeoutNotConfigurable', 'errorMessage' => 'The TCP idle timeout of listener is configurable only when the scheduling algorithm of server group is 5TCH.', 'description' => 'The TCP idle timeout of listener is configurable only when the scheduling algorithm of server group is 5TCH.'], + ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of .LoadBalancer is not found.'], + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => 'UpdateListenerAttribute', + 'summary' => 'Updates the properties of a listener.', + 'description' => 'The **UpdateListenerAttribute** operation is asynchronous. After you send a request, the system returns a request ID. The listener configuration is then updated in the background. You can call the **GetListenerAttribute** operation to query the update status of the listener:'."\n" + ."\n" + .'- If a listener is in the **Configuring** state, the listener configuration is being updated.'."\n" + ."\n" + .'- If a listener is in the **Running** state, the listener configuration is updated.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateListenerAttribute'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateListenerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerDescription\\": \\"listener_description\\",\\n \\"ListenerId\\": \\"lsn-3kbj3587mqhm3p****\\",\\n \\"ListenerStatus\\": \\"Provisioning\\",\\n \\"LoadBalancerId\\": \\"gwlb-te609d6696632f76****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RequestId\\": \\"75CC3312-7757-5EE1-90D8-49CEA66608AE\\",\\n \\"ServerGroupId\\": \\"sgp-sp8d2r6y7t0xtl****\\",\\n \\"TcpIdleTimeout\\": 350,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testKey\\",\\n \\"Value\\": \\"testValue\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'GetListenerAttribute', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\"\\n}","type":"json"}]', ], - 'GetListenerHealthStatus' => [ - 'summary' => 'Queries the health check status of a Gateway Load Balancer (GWLB) listener.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateLoadBalancerAttribute' => [ + 'summary' => 'Modifies the attributes of a Gateway Load Balancer (GWLB) instance.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221400', - 'abilityTreeNodes' => [ - 'FEATUREslbL239O5', - ], + 'abilityTreeCode' => '221916', + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ListenerId', + 'name' => 'LoadBalancerId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The listener ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'lsn-7sixpvm5fc3v0b****', - ], + 'schema' => ['description' => 'The ID of the GWLB instance.', 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], ], [ - 'name' => 'NextToken', + 'name' => 'LoadBalancerName', 'in' => 'formData', - 'schema' => [ - '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 a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '4f1d7cc9f51e18904e8a063603a6b0c3d03bc69f78734254e0b5e8707e68****', - ], + 'schema' => ['description' => 'The name of the GWLB instance.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, start with a letter or a Chinese character, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => false, 'example' => 'testGwlbName', 'title' => ''], ], [ - 'name' => 'MaxResults', + 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => 'The number of entries per page. Valid values: 1 to 1000. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '1000', - 'minimum' => '1', - 'example' => '20', - ], + 'schema' => ['description' => 'Specifies whether to perform a dry run. 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" + ."\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.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], ], [ - 'name' => 'Skip', + 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of entries to be skipped in the call.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + '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 **RequestId** of the request as the **ClientToken**. The **RequestId** may be different for each request.', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-426655440000', 'title' => ''], ], [ - 'name' => 'Filter', + 'name' => 'TrafficMode', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => 'The filter conditions. You can specify at most 20 filter conditions.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The filter condition.'."\n", - 'type' => 'object', - 'properties' => [ - 'Name' => [ - 'description' => 'The filter condition name. You can filter by one or more filter condition names. The URL must meet the following requirements:'."\n" - ."\n" - .'* **Status**: the health status.'."\n" - .'* **ReasonCode**: the cause of an unhealthy server.'."\n" - .'* **ServerId**: the ID of the backend server.'."\n" - .'* **ServerIp**: the IP address of the backend server.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Status', - 'enum' => [ - 'Status', - 'ReasonCode', - 'ServerId', - 'ServerIp', - ], - ], - 'Values' => [ - 'description' => 'The filter condition values. You can specify at most 20 condition values.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The filter condition value. The valid values vary based on the specified filter condition name in the response.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Unhealthy', - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, - ], + 'schema' => ['description' => 'The traffic mode. Valid values:'."\n" + ."\n" + .'- **LoadBalance**: The traffic is distributed by the GWLB instance.'."\n" + ."\n" + .'- **ByPass**: The traffic bypasses the GWLB instance.', 'type' => 'string', 'required' => false, 'example' => 'LoadBalance', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => '', 'type' => 'object', 'properties' => [ - 'ListenerHealthStatus' => [ - 'description' => 'The health check status of the server groups that are associated with the listener.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The health check status of the server groups that are associated with the listener.'."\n", - 'type' => 'object', - 'properties' => [ - 'ListenerId' => [ - 'description' => 'The listener ID.'."\n", - 'type' => 'string', - 'example' => 'lsn-sg8aha6pzjavvo****', - ], - 'ServerGroupInfos' => [ - 'description' => 'The information about the server groups.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the server group.'."\n", - 'type' => 'object', - 'properties' => [ - 'HealthCheckEnabled' => [ - 'description' => 'Indicates whether the health check feature is enabled. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'ServerGroupId' => [ - 'description' => 'The server group ID.'."\n", - 'type' => 'string', - 'example' => 'sgp-0vdsbyszro3nr6****', - ], - 'Servers' => [ - 'description' => 'The backend servers.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The backend server.'."\n", - 'type' => 'object', - 'properties' => [ - 'Port' => [ - 'title' => '服务器端口', - 'description' => 'The backend port.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '6081', - ], - 'Reason' => [ - 'description' => 'The reason why **Status** indicates an unhealthy status.'."\n", - 'type' => 'object', - 'properties' => [ - 'ReasonCode' => [ - 'description' => 'The reason why **Status** indicates an unhealthy status. Valid values:'."\n" - ."\n" - .'* **CONNECT_TIMEOUT**: The GWLB instance failed to connect to the backend server within the specified period of time.'."\n" - .'* **CONNECT_FAILED**: The GWLB instance failed to connect to the backend server.'."\n" - .'* **RECV_RESPONSE_TIMEOUT**: The GWLB instance failed to receive a response from the backend server within the specified period of time.'."\n" - .'* **CONNECT_INTERRUPT**: The connection between the health check and the backend server was interrupted.'."\n" - .'* **HTTP_CODE_NOT_MATCH**: The HTTP status code from the backend server is not the expected one.'."\n" - .'* **HTTP_INVALID_HEADER**: The format of the response from the backend servers is invalid.'."\n", - 'type' => 'string', - 'example' => 'CONNECT_TIMEOUT', - ], - ], - ], - 'ServerId' => [ - 'title' => '服务器id', - 'description' => 'The backend server ID.'."\n", - 'type' => 'string', - 'example' => 'i-2ze4rnh8yj9kif3z****', - ], - 'ServerIp' => [ - 'title' => '服务器ip', - 'description' => 'The IP address of the server.'."\n", - 'type' => 'string', - 'example' => '192.168.0.XXX', - ], - 'Status' => [ - 'description' => 'The health status of the backend server. Valid values:'."\n" - ."\n" - .'* **Initial**: Health checks are configured for the GWLB instance, but no data is found.'."\n" - .'* **Unhealthy**: The backend server consecutively fails health checks.'."\n" - .'* **Unused**: The backend server is not in use.'."\n" - .'* **Unavailable**: Health checks are disabled.'."\n" - .'* **Healthy**: The backend server is healthy.'."\n", - 'type' => 'string', - 'example' => 'Healthy', - ], - ], - ], - ], - ], - ], - ], - ], - ], - ], - 'MaxResults' => [ - 'description' => 'The number of entries per page. Valid values: 1 to 1000. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - '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 of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'example' => 'U12WEI6Ro2ol3wA54rBNSwdC5+lYy6q5SjIQEvc1wz5mjZxV+YjsHRdXV8XauY1BpOQIvwX63E0en54H3D****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '0ED4F222-36A0-5470-8A9A-AAB4E96BAC1A', - ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '31', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IllegalParam.FilterValue', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IllegalParam.FilterName', - 'errorMessage' => 'The param of %s is illegal.', - ], + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'Resource %s with business state %s does not support current operation'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Resource %s current state %s does not support operation'], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', + ], + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => 'UpdateLoadBalancerAttribute', + 'description' => '- The UpdateLoadBalancerAttribute operation is asynchronous. After a request is sent, the system returns a request ID and runs the task in the background. You can call the GetLoadBalancerAttribute operation to query the status of the GWLB instance.'."\n" + ."\n" + .' - If the GWLB instance is in the Configuring state, the modification is in progress.'."\n" + ."\n" + .' - If the GWLB instance is in the Active state, the modification is complete.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateLoadBalancerAttribute'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateLoadBalancerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerHealthStatus\\": [\\n {\\n \\"ListenerId\\": \\"lsn-sg8aha6pzjavvo****\\",\\n \\"ServerGroupInfos\\": [\\n {\\n \\"HealthCheckEnabled\\": true,\\n \\"ServerGroupId\\": \\"sgp-0vdsbyszro3nr6****\\",\\n \\"Servers\\": [\\n {\\n \\"Port\\": 6081,\\n \\"Reason\\": {\\n \\"ReasonCode\\": \\"CONNECT_TIMEOUT\\"\\n },\\n \\"ServerId\\": \\"i-2ze4rnh8yj9kif3z****\\",\\n \\"ServerIp\\": \\"192.168.0.XXX\\",\\n \\"Status\\": \\"Healthy\\"\\n }\\n ]\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"U12WEI6Ro2ol3wA54rBNSwdC5+lYy6q5SjIQEvc1wz5mjZxV+YjsHRdXV8XauY1BpOQIvwX63E0en54H3D****\\",\\n \\"RequestId\\": \\"0ED4F222-36A0-5470-8A9A-AAB4E96BAC1A\\",\\n \\"TotalCount\\": 31\\n}","type":"json"}]', - 'title' => 'GetListenerHealthStatus', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD\\"\\n}","type":"json"}]', ], - 'TagResources' => [ - 'summary' => 'Creates and adds tags to resources.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateLoadBalancerZones' => [ + 'summary' => 'Updates the zones of a Gateway Load Balancer (GWLB) instance.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225141', - 'abilityTreeNodes' => [ - 'FEATUREslbRXTOWD', - ], + 'abilityTreeCode' => '221912', + 'abilityTreeNodes' => ['FEATUREslb23BWZ4'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ResourceType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The type of resource. Valid values:'."\n" - ."\n" - .'* **loadbalancer**: Gateway Load Balancer (GWLB) instance'."\n" - .'* **listener**: listener'."\n" - .'* **servergroup**: server group'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'loadbalancer', - 'enum' => [], - ], - ], - [ - 'name' => 'ResourceId', + 'name' => 'LoadBalancerId', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => 'The resource IDs. You can specify at most 50 resource IDs in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The resource ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-nrnrxwd15en27r****', - ], - 'required' => true, - 'maxItems' => 50, - 'minItems' => 1, - ], + 'schema' => ['description' => 'The GWLB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], ], [ - 'name' => 'Tag', + 'name' => 'ZoneMappings', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => 'The tags. You can specify at most 20 tags in each call.'."\n", + 'description' => 'The mappings between zones and vSwitches. You must specify at least one zone. You can specify at most 20 zones. If the region supports two or more zones, we recommend that you select two or more zones.', 'type' => 'array', 'items' => [ - 'description' => 'The tag.'."\n", + 'description' => '', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => 'The tag key. The tag key cannot be an empty string. The tag key can be up to 128 characters in length, and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => 'The tag value. The tag value can be up to 256 characters in length and cannot contain `http://` or `https://`.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testValue', - ], + 'VSwitchId' => ['description' => 'The ID of the vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of a GWLB instance.'."\n", 'type' => 'string', 'required' => true, 'example' => 'vsw-bp1n75pbs77v5q6p3****', 'title' => ''], + 'ZoneId' => ['description' => 'The zone ID. You can call the DescribeZones operation to query the most recent zone list.'."\n", 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou-h', 'title' => ''], ], - 'required' => true, + 'required' => false, + 'title' => '', ], 'required' => true, 'maxItems' => 20, - 'minItems' => 1, + 'title' => '', ], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform 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', - ], + 'schema' => ['title' => '', 'description' => 'Specifies whether to perform 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' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => 'The client token 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. Only ASCII characters are allowed.'."\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****', - ], + '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-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '54F6E60A-1777-5C17-A6A9-BCC1A7FE945B', - ], + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'ED8905C2-A4F6-5E43-87B7-6A5DC8757146', 'title' => ''], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'MissingParam.TagValue', - 'errorMessage' => 'The param of TagValue is missing.', - ], - [ - 'errorCode' => 'ResourceQuotaExceeded.TagNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IllegalParam.TagValue', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'DuplicatedParam.ResourceId', - 'errorMessage' => 'The param of %s is duplicated.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', + ['errorCode' => 'OperationDenied.VSwitchChangeNotSupport', 'errorMessage' => 'The operation is not allowed because of VSwitchChangeNotSupport.', 'description' => 'Modifying the vSwitch is not allowed.'], + ['errorCode' => 'DuplicatedParam.VSwitchId', 'errorMessage' => 'The param of VSwitchId is duplicated.', 'description' => 'Duplicate vSwitchId parameter in list'], + ['errorCode' => 'DuplicatedParam.ZoneId', 'errorMessage' => 'The param of ZoneId is duplicated.', 'description' => 'Duplicate ZoneId parameter in list'], + ['errorCode' => 'IllegalParamSize.ZoneMappings', 'errorMessage' => 'The param size of ZoneMappings is illegal.', 'description' => 'Illegal number of ZoneMappings lists'], + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'Resource %s with business state %s does not support current operation'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'Resource %s current state %s does not support operation'], + ['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', 'description' => 'The value of the ZoneId parameter does not match that of the vSwitchId'], + ['errorCode' => 'MissingParam.LoadBalancerId', 'errorMessage' => 'The param of LoadBalancerId is missing.', 'description' => 'Load balancing ID parameter missing'], + ['errorCode' => 'OperationDenied.VSwitchNotSupportIpv6', 'errorMessage' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', 'description' => 'The operation is not allowed because IPv6 is not enabled for the vSwitch.'], + ['errorCode' => 'ResourceAlreadyAssociated.GwlbeAssociated', 'errorMessage' => 'The specified resource of %s is already associated.', 'description' => 'The specified resource %s is already associated'], + ['errorCode' => 'ResourceNotEnough.VSwitchIp', 'errorMessage' => 'The specified resource of VSwitchIp is not enough.', 'description' => 'Insufficient vSwitch IP resources'], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''], + ], + ], + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"ED8905C2-A4F6-5E43-87B7-6A5DC8757146\\"\\n}","type":"json"}]', + 'title' => 'UpdateLoadBalancerZones', + 'description' => '**请确保在使用该接口前,已充分了解网关型负载均衡产品的收费方式和[价格](~~2806160~~)。**'."\n" + ."\n" + .'**UpdateLoadBalancerZones**属于异步接口,即系统返回一个请求ID,但该实例可用区及可用区属性尚未修改成功,系统后台的变更任务仍在进行。您可以调用[GetLoadBalancerAttribute](~~2853555~~)查询网关型负载均衡实例的更新状态:'."\n" + ."\n" + .'- 当网关型负载均衡实例处于**Configuring**状态时,表示网关型负载均衡实例正在更新中。'."\n" + .'- 当网关型负载均衡实例处于**Active**状态时,表示网关型负载均衡实例更新成功。'."\n" + ."\n" + .'><notice>每次调用该接口时,请确保您传入该网关型负载均衡实例的所有可用区参数,包括当前和新增的可用区。如您未传入当前的可用区参数,表示需要将当前可用区删除。您可以通过 GetLoadBalancerAttribute 接口查询该实例的当前可用区。></notice>', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateLoadBalancerZones'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateLoadBalancerZones', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54F6E60A-1777-5C17-A6A9-BCC1A7FE945B\\"\\n}","type":"json"}]', - 'title' => 'TagResources', ], - 'UntagResources' => [ - 'summary' => 'Removes tags from resources.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateServerGroupAttribute' => [ + 'methods' => ['get', 'post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225142', - 'abilityTreeNodes' => [ - 'FEATUREslbRXTOWD', - ], + 'abilityTreeCode' => '225039', + 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ResourceType', + 'name' => 'ServerGroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The server group ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'sgp-atstuj3rtoptyui****'], + ], + [ + 'name' => 'ServerGroupName', + 'in' => 'formData', + 'schema' => ['description' => 'The name of the server group.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length, start with a letter or a Chinese character, and can contain digits, periods (.), underscores (\\_), and hyphens (-).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'testServerGroupName'], + ], + [ + 'name' => 'Scheduler', 'in' => 'formData', 'schema' => [ - 'description' => 'The type of resource. Valid values:'."\n" + 'description' => 'The scheduling algorithm. Valid values:'."\n" ."\n" - .'* **loadbalancer**: Gateway Load Balancer (GWLB) instance'."\n" - .'* **listener**: listener'."\n" - .'* **servergroup**: server group'."\n", + .'- **5TCH**: 5-tuple hashing. Packets are distributed to backend servers based on a 5-tuple hash of the source IP address, destination IP address, source port, destination port, and protocol. This ensures that the same stream is always scheduled to the same backend server.'."\n" + ."\n" + .'- **3TCH**: 3-tuple hashing. Packets are distributed to backend servers based on a 3-tuple hash of the source IP address, destination IP address, and protocol. This ensures that the same stream is always scheduled to the same backend server.'."\n" + ."\n" + .'- **2TCH**: 2-tuple hashing. Packets are distributed to backend servers based on a 2-tuple hash of the source IP address and destination IP address. This ensures that the same stream is always scheduled to the same backend server.', 'type' => 'string', - 'required' => true, - 'example' => 'loadbalancer', - 'enum' => [], + 'enum' => ['5TCH', '3TCH', '2TCH'], + 'title' => '', + 'required' => false, + 'example' => '5TCH', ], ], [ - 'name' => 'ResourceId', + 'name' => 'ServerFailoverMode', 'in' => 'formData', - 'style' => 'flat', 'schema' => [ - 'description' => 'The resource IDs. You can specify at most 50 resource IDs in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The resource ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-nrnrxwd15en27r****', - ], - 'required' => true, - 'maxItems' => 50, - 'minItems' => 1, + 'description' => 'The method that is used to handle existing connections when a backend server is exceptional. Valid values:'."\n" + ."\n" + .'- **NoRebalance**: Existing connections are not rebalanced.'."\n" + ."\n" + .'- **Rebalance**: Existing connections are rebalanced.', + 'type' => 'string', + 'enum' => ['NoRebalance', 'Rebalance'], + 'required' => false, + 'example' => 'NoRebalance', + 'title' => '', ], ], [ - 'name' => 'TagKey', + 'name' => 'ConnectionDrainConfig', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => 'The keys of the tags that you want to remove. You can remove at most 20 tags in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The key of the tag that you want to remove.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testKey', + 'title' => '', + 'description' => 'The configurations of connection draining.', + 'type' => 'object', + 'properties' => [ + 'ConnectionDrainEnabled' => ['description' => 'Specifies whether to enable connection draining. Valid values:'."\n" + ."\n" + .'- **true**'."\n" + ."\n" + .'- **false**', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], + 'ConnectionDrainTimeout' => ['description' => 'The timeout period of connection draining.'."\n" + ."\n" + .'Unit: seconds.'."\n" + ."\n" + .'Valid values: **1** to **3600**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '300'], ], 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, + 'example' => '', ], ], [ - 'name' => 'All', + 'name' => 'HealthCheckConfig', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'description' => 'Specifies whether to remove all tags from the specified resource. This parameter is ignored if the TagKey parameter is specified. Valid values:'."\n" - ."\n" - .'* **true**: removes all tags from the specified resource.'."\n" - .'* **false**: does not remove all tags from the specified resource. This is the default value.'."\n", - 'type' => 'boolean', + 'title' => '', + 'description' => 'The configurations of health checks.', + 'type' => 'object', + 'properties' => [ + 'HealthCheckConnectPort' => ['description' => 'The port that is used for health checks on backend servers.'."\n" + ."\n" + .'Valid values: **1** to **65535**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '80'], + 'HealthCheckConnectTimeout' => ['description' => 'The maximum timeout period of a health check response.'."\n" + ."\n" + .'Unit: seconds.'."\n" + ."\n" + .'Valid values: **1** to **300**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '5'], + 'HealthCheckDomain' => ['description' => 'The domain name that is used for health checks. Valid values:'."\n" + ."\n" + .'- **$SERVER\\_IP**: the private IP address of a backend server.'."\n" + ."\n" + .'- **domain**: a specified domain name. The domain name must be 1 to 80 characters in length and can contain letters, digits, hyphens (-), and periods (.).'."\n" + ."\n" + .'> This parameter takes effect only when **HealthCheckProtocol** is set to **HTTP**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '$SERVER_IP'], + 'HealthCheckEnabled' => ['description' => 'Specifies whether to enable health checks. Valid values:'."\n" + ."\n" + .'- **true**'."\n" + ."\n" + .'- **false**', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'], + 'HealthCheckHttpCode' => [ + 'title' => '', + 'description' => 'The list of HTTP status codes that indicate a healthy state.', + 'type' => 'array', + 'items' => [ + 'description' => 'The HTTP status code that indicates a healthy state. You can specify multiple HTTP status codes. Separate multiple status codes with commas (,). Valid values:'."\n" + ."\n" + .'- **http\\_2xx**: An HTTP 2xx status code indicates a healthy state.'."\n" + ."\n" + .'- **http\\_3xx**: An HTTP 3xx status code indicates a healthy state.'."\n" + ."\n" + .'- **http\\_4xx**: An HTTP 4xx status code indicates a healthy state.'."\n" + ."\n" + .'- **http\\_5xx**: An HTTP 5xx status code indicates a healthy state.'."\n" + ."\n" + .'Default value: **http\\_2xx**.'."\n" + ."\n" + .'> This parameter takes effect only when **HealthCheckProtocol** is set to **HTTP**.', + 'type' => 'string', + 'enum' => ['http_2xx', 'http_3xx', 'http_4xx', 'http_5xx'], + 'required' => false, + 'example' => 'http_2xx', + 'title' => '', + ], + 'required' => false, + 'example' => '', + ], + 'HealthCheckInterval' => ['description' => 'The interval at which health checks are performed.'."\n" + ."\n" + .'Unit: seconds.'."\n" + ."\n" + .'Valid values: **1** to **50**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '10'], + 'HealthCheckPath' => ['description' => 'The path that is used for health checks.'."\n" + ."\n" + .'The path must be 1 to 80 characters in length and can contain letters, digits, and the following special characters: `-/.%?#&`. It must start with a forward slash (/).'."\n" + ."\n" + .'> This parameter takes effect only when **HealthCheckProtocol** is set to **HTTP**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/test/index.html'], + 'HealthCheckProtocol' => [ + 'description' => 'The protocol that is used for health checks. Valid values:'."\n" + ."\n" + .'- **TCP**: TCP SYN packets are sent to a backend server to check whether the port of the backend server is reachable.'."\n" + ."\n" + .'- **HTTP**: GET requests are sent to a backend server to check whether the server application is healthy.', + 'type' => 'string', + 'enum' => ['TCP', 'HTTP'], + 'title' => '', + 'required' => false, + 'example' => 'TCP', + ], + 'HealthyThreshold' => ['description' => 'The number of consecutive successful health checks required to change the health check status of a backend server from **failed** to **successful**.'."\n" + ."\n" + .'Valid values: **2** to **10**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '2'], + 'UnhealthyThreshold' => ['description' => 'The number of consecutive failed health checks required to change the health check status of a backend server from **successful** to **failed**.'."\n" + ."\n" + .'Valid values: **2** to **10**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '2'], + 'HealthCheckReq' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], + 'HealthCheckExp' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], + ], 'required' => false, - 'example' => 'true', + 'example' => '', ], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform 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', - ], + 'schema' => ['description' => 'Specifies whether to perform a dry run. 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" + ."\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.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - '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 token, but you must make sure that the token is unique among different requests. The client token can contain only ASCII characters. 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****', - ], + 'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'You can use the client to generate a 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 **RequestId** of the request as the **ClientToken**. The **RequestId** may be different for each request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => 'The response parameters.'."\n", + 'description' => 'The response data.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'."\n", 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ExclusiveParam.TagKeyAndAll', - 'errorMessage' => 'The param of %s and %s are mutually exclusive.', - ], - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'DuplicatedParam.ResourceId', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], + ['errorCode' => 'IllegalParam.HealthCheckProtocol', 'errorMessage' => 'The param of %s is illegal.', 'description' => 'The health check protocol is invalid. Check the input parameters.'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'], + ['errorCode' => 'OperationDenied.SchedulerNotConfigurable', 'errorMessage' => 'The scheduling algorithm of server group is configurable only when TCP idle timeout of listener is default value.', 'description' => 'The scheduling algorithm of server group is configurable only when TCP idle timeout of listener is default value.'], ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified server group resource does not exist.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::ListServerGroups', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => 'UpdateServerGroupAttribute', + 'summary' => 'Updates the attributes of a Server Load Balancer server group.', + 'description' => '**UpdateServerGroupAttribute** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. The server group configuration is not updated immediately. You can call the ListServerGroups operation to query the status of the server group.'."\n" + ."\n" + .'- If a server group is in the **Configuring** state, its configuration is being updated.'."\n" + ."\n" + .'- If a server group is in the **Available** state, its configuration is updated.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateServerGroupAttribute'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateServerGroupAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21\\"\\n}","type":"json"}]', - 'title' => 'UntagResources', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\\\n\\"\\n}","type":"json"}]', ], - 'ListTagResources' => [ - 'summary' => 'Queries the tags of resources.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], + ], + 'endpoints' => [ + ['regionId' => 'cn-shenzhen', 'regionName' => 'China (Shenzhen)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.cn-shenzhen.aliyuncs.com', 'endpoint' => 'gwlb.cn-shenzhen.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-shenzhen.aliyuncs.com'], + ['regionId' => 'cn-wulanchabu', 'regionName' => 'China (Ulanqab)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.cn-wulanchabu.aliyuncs.com', 'endpoint' => 'gwlb.cn-wulanchabu.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-wulanchabu.aliyuncs.com'], + ['regionId' => 'cn-beijing', 'regionName' => 'China (Beijing)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.cn-beijing.aliyuncs.com', 'endpoint' => 'gwlb.cn-beijing.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-beijing.aliyuncs.com'], + ['regionId' => 'ap-northeast-1', 'regionName' => 'Japan (Tokyo)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.ap-northeast-1.aliyuncs.com', 'endpoint' => 'gwlb.ap-northeast-1.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-northeast-1.aliyuncs.com'], + ['regionId' => 'cn-shanghai', 'regionName' => 'China (Shanghai)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.cn-shanghai.aliyuncs.com', 'endpoint' => 'gwlb.cn-shanghai.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-shanghai.aliyuncs.com'], + ['regionId' => 'cn-hongkong', 'regionName' => 'China (Hong Kong)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.cn-hongkong.aliyuncs.com', 'endpoint' => 'gwlb.cn-hongkong.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-hongkong.aliyuncs.com'], + ['regionId' => 'ap-southeast-1', 'regionName' => 'Singapore', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.ap-southeast-1.aliyuncs.com', 'endpoint' => 'gwlb.ap-southeast-1.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-southeast-1.aliyuncs.com'], + ['regionId' => 'ap-southeast-3', 'regionName' => 'Malaysia (Kuala Lumpur)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.ap-southeast-3.aliyuncs.com', 'endpoint' => 'gwlb.ap-southeast-3.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-southeast-3.aliyuncs.com'], + ['regionId' => 'ap-southeast-7', 'regionName' => 'Thailand (Bangkok)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.ap-southeast-7.aliyuncs.com', 'endpoint' => 'gwlb.ap-southeast-7.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-southeast-7.aliyuncs.com'], + ['regionId' => 'cn-hangzhou', 'regionName' => 'China (Hangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.cn-hangzhou.aliyuncs.com', 'endpoint' => 'gwlb.cn-hangzhou.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-hangzhou.aliyuncs.com'], + ['regionId' => 'ap-southeast-8', 'regionName' => 'Malaysia (Johor)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'gwlb.ap-southeast-8.aliyuncs.com', 'endpoint' => 'gwlb.ap-southeast-8.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-southeast-8.aliyuncs.com'], + ['regionId' => 'me-east-1', 'regionName' => 'UAE (Dubai)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'gwlb.me-east-1.aliyuncs.com', 'endpoint' => 'gwlb.me-east-1.aliyuncs.com', 'vpc' => 'gwlb-vpc.me-east-1.aliyuncs.com'], + ['regionId' => 'me-central-1', 'regionName' => 'Saudi Arabia (Riyadh)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'gwlb.me-central-1.aliyuncs.com', 'endpoint' => 'gwlb.me-central-1.aliyuncs.com', 'vpc' => 'gwlb-vpc.me-central-1.aliyuncs.com'], + ], + 'errorCodes' => [ + ['code' => 'Conflict.Server', 'message' => 'The %s [%s] is conflict.', 'http_code' => 400, 'description' => 'There is already %s having the same configuration with %s.'], + ['code' => 'DryRunOperation', 'message' => 'Request validation has been passed with DryRun flag set.', 'http_code' => 400, 'description' => 'DryRun request validation passed'], + ['code' => 'DuplicatedParam.ResourceId', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => 'The param of %s is duplicated.'], + ['code' => 'DuplicatedParam.Server', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => 'Duplicate server in parameter.'], + ['code' => 'DuplicatedParam.TagKey', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => 'The parameter of tag key is duplicated.'], + ['code' => 'DuplicatedParam.VSwitchId', 'message' => 'The param of VSwitchId is duplicated.', 'http_code' => 400, 'description' => 'Duplicate vSwitchId parameter in list'], + ['code' => 'DuplicatedParam.ZoneId', 'message' => 'The param of ZoneId is duplicated.', 'http_code' => 400, 'description' => 'Duplicate ZoneId parameter in list'], + ['code' => 'ExclusiveParam.TagKeyAndAll', 'message' => 'The param of %s and %s are mutually exclusive.', 'http_code' => 400, 'description' => 'The parameter of TagKey and All are mutually exclusive.'], + ['code' => 'Forbidden.NoPermission', 'message' => 'Authentication is failed for %s.', 'http_code' => 403, 'description' => 'Authentication is failed for %s.'], + ['code' => 'IllegalParam.%s', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => 'The param of %s is illegal.'], + ['code' => 'IllegalParam.FilterName', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => 'The parameter of FilterName is illegal.'], + ['code' => 'IllegalParam.FilterValue', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => 'The parameter of FilterValue is illegal.'], + ['code' => 'IllegalParam.HealthCheckProtocol', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => 'The health check protocol is invalid. Check the input parameters.'], + ['code' => 'IllegalParam.IP', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => 'The parameter IP is invalid. Please check the input value of the parameter IP.'], + ['code' => 'IllegalParam.ServerIp', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => 'The parameter ServerIp is invalid. Please check the input parameters.'], + ['code' => 'IllegalParam.TagValue', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => 'The parameter of tag value is illegal.'], + ['code' => 'IllegalParamSize.ZoneMappings', 'message' => 'The param size of ZoneMappings is illegal.', 'http_code' => 400, 'description' => 'Illegal number of ZoneMappings lists'], + ['code' => 'IncorrectBusinessStatus.LoadBalancer', 'message' => 'The business status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'Resource %s with business state %s does not support current operation'], + ['code' => 'IncorrectStatus.BackendServer', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'The current operation cannot be performed on the server as its status is unavailable. Please check if the server is currently undergoing any other operations.'], + ['code' => 'IncorrectStatus.Eni', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'Resource %s current state %s does not support operation'], + ['code' => 'IncorrectStatus.Listener', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'Operation not supported for resource% s in current state% s.'], + ['code' => 'IncorrectStatus.LoadBalancer', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'Resource %s current state %s does not support operation'], + ['code' => 'IncorrectStatus.ServerGroup', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'The status of %s [%s] is incorrect.'], + ['code' => 'Mismatch.IP', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => 'The entered IP type server ID and IP do not match.'], + ['code' => 'Mismatch.ServerType', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => 'ServerType mismatch.'], + ['code' => 'Mismatch.VpcId', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => 'The VPC IDs of the two resources do not match.'], + ['code' => 'Mismatch.ZoneIdAndVSwitchId', 'message' => 'The ZoneId and VSwitchId are mismatched.', 'http_code' => 400, 'description' => 'The value of the ZoneId parameter does not match that of the vSwitchId'], + ['code' => 'MissingParam.%s', 'message' => 'The param of %s is missing.', 'http_code' => 400, 'description' => 'Missing parameter %s'], + ['code' => 'MissingParam.LoadBalancerId', 'message' => 'The param of LoadBalancerId is missing.', 'http_code' => 400, 'description' => 'Load balancing ID parameter missing'], + ['code' => 'MissingParam.TagKey', 'message' => 'The param of TagKey is missing.', 'http_code' => 400, 'description' => 'The parameter of tag key is missing.'], + ['code' => 'MissingParam.TagsOrResourceIds', 'message' => 'The param of TagsOrResourceIds is missing.', 'http_code' => 400, 'description' => 'The param of TagsOrResourceIds is missing.'], + ['code' => 'MissingParam.TagValue', 'message' => 'The param of TagValue is missing.', 'http_code' => 400, 'description' => 'The parameter of tag value is missing.'], + ['code' => 'OperationDenied.NotExist.ResourceGroup', 'message' => 'The operation is not allowed because of NotExist.ResourceGroup.', 'http_code' => 400, 'description' => 'The operation is not allowed because of NotExist.ResourceGroup.'], + ['code' => 'OperationDenied.SchedulerNotConfigurable', 'message' => 'The scheduling algorithm of server group is configurable only when TCP idle timeout of listener is default value.', 'http_code' => 400, 'description' => 'The scheduling algorithm of server group is configurable only when TCP idle timeout of listener is default value.'], + ['code' => 'OperationDenied.StatusCheckFail.ResourceGroup', 'message' => 'The operation is not allowed because of StatusCheckFail.ResourceGroup.', 'http_code' => 400, 'description' => 'The operation is not allowed because of StatusCheckFail.ResourceGroup.'], + ['code' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', 'message' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', 'http_code' => 400, 'description' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.'], + ['code' => 'OperationDenied.TcpIdleTimeoutNotConfigurable', 'message' => 'The TCP idle timeout of listener is configurable only when the scheduling algorithm of server group is 5TCH.', 'http_code' => 400, 'description' => 'The TCP idle timeout of listener is configurable only when the scheduling algorithm of server group is 5TCH.'], + ['code' => 'OperationDenied.TooManyListeners', 'message' => 'The operation is not allowed because of TooManyListener.', 'http_code' => 400, 'description' => 'The number of listeners of the load balancer instance exceeds the limit. The operation is denied.'], + ['code' => 'OperationDenied.VSwitchChangeNotSupport', 'message' => 'The operation is not allowed because of VSwitchChangeNotSupport.', 'http_code' => 400, 'description' => 'Modifying the vSwitch is not allowed.'], + ['code' => 'OperationDenied.VSwitchNotSupportIpv6', 'message' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', 'http_code' => 400, 'description' => 'The operation is not allowed because IPv6 is not enabled for the vSwitch.'], + ['code' => 'QuotaExceeded.LoadBalancersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota gwlb_quota_loadbalancers_num has exceeded the quota limit.'], + ['code' => 'QuotaExceeded.ServerGroupAzServersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota gwlb_quota_servergroup_az_servers_num has exceeded the quota limit.'], + ['code' => 'QuotaExceeded.ServerGroupServersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota gwlb_quota_servergroup_servers_num has exceeded the quota limit.'], + ['code' => 'QuotaExceeded.ServerGroupsNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota gwlb_quota_servergroups_num has exceeded the quota limit.'], + ['code' => 'ResourceAlreadyAssociated.GwlbeAssociated', 'message' => 'The specified resource of %s is already associated.', 'http_code' => 400, 'description' => 'The specified resource %s is already associated'], + ['code' => 'ResourceInUse.Eni', 'message' => 'The specified resource of %s is in use.', 'http_code' => 400, 'description' => 'The passed-in eni cannot be the eni used by the gateway loadbalancer instance. Please check the parameters.'], + ['code' => 'ResourceInUse.IP', 'message' => 'The specified resource of %s is in use.', 'http_code' => 400, 'description' => 'The specified resource of IP is in use.'], + ['code' => 'ResourceInUse.ServerGroup', 'message' => 'The specified resource of %s is in use.', 'http_code' => 400, 'description' => 'The specified server group resource is in use, please try again later.'], + ['code' => 'ResourceNotEnough.VSwitchIp', 'message' => 'The specified resource of VSwitchIp is not enough.', 'http_code' => 400, 'description' => 'Insufficient vSwitch IP resources'], + ['code' => 'ResourceNotFound.BackendServer', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified backend server resource does not exist.'], + ['code' => 'ResourceNotFound.Eci', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified elastic container instance resource does not exist.'], + ['code' => 'ResourceNotFound.Ecs', 'message' => 'The specified resource of %s is in use.', 'http_code' => 404, 'description' => 'The specified elastic compute service resource does not exist.'], + ['code' => 'ResourceNotFound.Ecs', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified ECS resource does not exist.'], + ['code' => 'ResourceNotFound.Ecs', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified ECS resource does not exist.'], + ['code' => 'ResourceNotFound.Eni', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified elastic network interfaces resource does not exist.'], + ['code' => 'ResourceNotFound.Listener', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified resource of %s is not found.'], + ['code' => 'ResourceNotFound.LoadBalancer', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified resource of .LoadBalancer is not found.'], + ['code' => 'ResourceNotFound.ServerGroup', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified server group resource does not exist.'], + ['code' => 'ResourceNotFound.Vpc', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified virtual private cloud resource does not exist.'], + ['code' => 'ResourceQuotaExceeded.TagNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The number of tags bound to the resource exceeds the limit.'], + ['code' => 'UnauthorizedRegion', 'message' => 'The specified region of %s is not authorized.', 'http_code' => 400, 'description' => 'The specified region %s is not authorized'], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetLoadBalancerAttribute'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListTagResources'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetListenerAttribute'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UntagResources'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroupServers'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateLoadBalancerZones'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListLoadBalancers'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroups'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'MoveResourceGroup'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetListenerHealthStatus'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateListenerAttribute'], + ['threshold' => '100', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateLoadBalancer'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateLoadBalancerAttribute'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateServerGroupAttribute'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'RemoveServersFromServerGroup'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateServerGroup'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeRegions'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeZones'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteServerGroup'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'AddServersToServerGroup'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteLoadBalancer'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateListener'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListListeners'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'TagResources'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteListener'], + ], + ], + 'ram' => [ + 'productCode' => 'GWLB', + 'productName' => 'Server Load Balancer', + 'ramCodes' => ['gwlb'], + 'ramLevel' => 'RESOURCE', + 'ramConditions' => [], + 'ramActions' => [ + [ + 'apiName' => 'RemoveServersFromServerGroup', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:RemoveServersFromServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225143', - 'abilityTreeNodes' => [ - 'FEATUREslbRXTOWD', + [ + 'apiName' => 'UpdateLoadBalancerAttribute', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateLoadBalancerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], ], - 'autoTest' => true, - 'tenantRelevance' => 'tenant', ], - 'parameters' => [ - [ - 'name' => 'ResourceType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The type of resource. Valid values:'."\n" - ."\n" - .'* **loadbalancer**: Gateway Load Balancer (GWLB) instance'."\n" - .'* **listener**: listener'."\n" - .'* **servergroup**: server group'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'loadbalancer', - 'enum' => [], + [ + 'apiName' => 'AddServersToServerGroup', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:AddServersToServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], ], ], - [ - 'name' => 'ResourceId', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => 'The resource IDs. You can specify at most 50 resource IDs in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The resource ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-nrnrxwd15en27r****', - ], - 'required' => false, - 'maxItems' => 50, - 'minItems' => 1, + ], + [ + 'apiName' => 'GetLoadBalancerAttribute', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetLoadBalancerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'Tag', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => 'The tags. You can specify at most 20 tags in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The tag key.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => 'The tag value.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testValue', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, + ], + [ + 'apiName' => 'UpdateListenerAttribute', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateListenerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], ], ], - [ - 'name' => 'NextToken', - 'in' => 'formData', - 'schema' => [ - '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 a value of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'WyI2NDQ3MWUxM2EzOWNhMmY0Y2M2YTRiNzZhOWQwNmU1Y2RlNTYzMGEzIiwibiIsIm4iLDEsLTEsMTY5ODcxMzI2NjU0MywiNjU0MDRlYjI2MmI3MDhjY2JiMjM0ZmU0ODNkNTVmMGRhZDllOTBi****', + ], + [ + 'apiName' => 'UpdateLoadBalancerZones', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateLoadBalancerZones', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], ], ], - [ - 'name' => 'MaxResults', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The maximum number of results to be returned from a single query when the NextToken parameter is used in the query. Valid values: 1 to 1000. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', + ], + [ + 'apiName' => 'ListTagResources', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListTagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => '', - 'description' => 'The response parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'NextToken' => [ - '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 of **NextToken** is returned, the value indicates the token that is used for the next query.'."\n", - 'type' => 'string', - 'example' => 'd209f4e63ec942c967c50c888a13****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A95325A2-E421-58A6-88AD-7A26CE610F45', - ], - 'TagResources' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the tag that is added to the resource.'."\n", - 'type' => 'object', - 'properties' => [ - 'ResourceId' => [ - 'description' => 'The resource ID.'."\n", - 'type' => 'string', - 'example' => 'gwlb-nrnrxwd15en27r****'."\n", - ], - 'ResourceType' => [ - 'description' => 'The resource type. Valid values:'."\n" - ."\n" - .'* **loadbalancer**: GWLB instance'."\n" - .'* **listener**: listener'."\n" - .'* **servergroup**: server group'."\n", - 'type' => 'string', - 'example' => 'loadbalancer', - ], - 'TagKey' => [ - 'description' => 'The tag key.'."\n", - 'type' => 'string', - 'example' => 'testKey', - ], - 'TagValue' => [ - 'description' => 'The tag value.'."\n", - 'type' => 'string', - 'example' => 'testValue', - ], - ], - ], - ], - ], + [ + 'apiName' => 'CreateLoadBalancer', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateLoadBalancer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParam.TagsOrResourceIds', - 'errorMessage' => 'The param of TagsOrResourceIds is missing.', - ], - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'DuplicatedParam.ResourceId', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', + [ + 'apiName' => 'GetListenerAttribute', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetListenerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"d209f4e63ec942c967c50c888a13****\\",\\n \\"RequestId\\": \\"A95325A2-E421-58A6-88AD-7A26CE610F45\\",\\n \\"TagResources\\": [\\n {\\n \\"ResourceId\\": \\"gwlb-nrnrxwd15en27r****\\\\n\\",\\n \\"ResourceType\\": \\"loadbalancer\\",\\n \\"TagKey\\": \\"testKey\\",\\n \\"TagValue\\": \\"testValue\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'ListTagResources', - ], - 'MoveResourceGroup' => [ - 'summary' => 'Changes the resource group to which a specified cloud resource belongs.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'ListServerGroups', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:ListServerGroups', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], ], - 'schemes' => [ - 'https', + [ + 'apiName' => 'DeleteServerGroup', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'GetListenerHealthStatus', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetListenerHealthStatus', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], ], ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'MoveResourceGroup', + 'description' => '', 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225546', - 'abilityTreeNodes' => [ - 'FEATUREslbRXTOWD', + 'ramAction' => [ + 'action' => 'gwlb:MoveResourceGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:serverGroup/{#serverGroupId}'], + ], ], - 'autoTest' => true, - 'tenantRelevance' => 'tenant', ], - 'parameters' => [ - [ - 'name' => 'ResourceId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The resource ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-nrnrxwd15en27r****', + [ + 'apiName' => 'UntagResources', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UntagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'NewResourceGroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the resource group to which you want to move the resource.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rg-aek253e4oit****', + ], + [ + 'apiName' => 'DeleteLoadBalancer', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteLoadBalancer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'ResourceType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The type of resource. Valid values:'."\n" - ."\n" - .'* **loadbalancer**: Gateway Load Balancer (GWLB) instance'."\n" - .'* **servergroup**: server group'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'loadbalancer', - 'enum' => [ - 'loadbalancer', - 'servergroup', - ], + ], + [ + 'apiName' => 'TagResources', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:TagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'DryRun', - 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => 'Specifies whether to perform 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', + ], + [ + 'apiName' => 'ListLoadBalancers', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListLoadBalancers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], ], ], - [ - 'name' => 'ClientToken', - 'in' => 'formData', - '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 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-42665544****', + ], + [ + 'apiName' => 'DeleteListener', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteListener', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => '', - 'description' => 'The response parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '78828B5C-521E-50F3-84D4-7019691D1382', - ], - ], + [ + 'apiName' => 'ListListeners', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListListeners', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'OperationDenied.NotExist.ResourceGroup', - 'errorMessage' => 'The operation is not allowed because of NotExist.ResourceGroup.', - ], - [ - 'errorCode' => 'OperationDenied.StatusCheckFail.ResourceGroup', - 'errorMessage' => 'The operation is not allowed because of StatusCheckFail.ResourceGroup.', + [ + 'apiName' => 'CreateListener', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateListener', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/*'], ], ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'apiName' => 'UpdateServerGroupAttribute', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateServerGroupAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + [ + 'apiName' => 'ListServerGroupServers', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:ListServerGroupServers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + [ + 'apiName' => 'CreateServerGroup', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"78828B5C-521E-50F3-84D4-7019691D1382\\"\\n}","type":"json"}]', - 'title' => 'MoveResourceGroup', - ], - ], - 'endpoints' => [ - [ - 'regionId' => 'cn-wulanchabu', - 'endpoint' => 'gwlb.cn-wulanchabu.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-1', - 'endpoint' => 'gwlb.ap-southeast-1.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing', - 'endpoint' => 'gwlb.cn-beijing.aliyuncs.com', ], - [ - 'regionId' => 'cn-shanghai', - 'endpoint' => 'gwlb.cn-shanghai.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou', - 'endpoint' => 'gwlb.cn-hangzhou.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hongkong', - 'endpoint' => 'gwlb.cn-hongkong.aliyuncs.com', - ], - [ - 'regionId' => 'ap-northeast-1', - 'endpoint' => 'gwlb.ap-northeast-1.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen', - 'endpoint' => 'gwlb.cn-shenzhen.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-3', - 'endpoint' => 'gwlb.ap-southeast-3.aliyuncs.com', + 'resourceTypes' => [ + ['validationType' => 'always', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], + ['validationType' => 'always', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'always', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], + ['validationType' => 'conditional', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'conditional', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/*'], + ['validationType' => 'conditional', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'always', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ['validationType' => 'conditional', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:serverGroup/{#serverGroupId}'], + ['validationType' => 'always', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId{#ServerGroupId}'], ], ], ]; |
