'1.0', 'info' => ['style' => 'RPC', 'product' => 'Gwlb', 'version' => '2024-04-15'], 'directories' => [ [ 'children' => ['UpdateLoadBalancerAttribute', 'UpdateLoadBalancerZones'], 'type' => 'directory', 'title' => 'Instances', ], [ 'children' => ['CreateServerGroup', 'UpdateServerGroupAttribute', 'DeleteServerGroup', 'AddServersToServerGroup', 'ListServerGroups', 'ListServerGroupServers'], 'type' => 'directory', 'title' => 'Server groups', ], [ 'children' => ['CreateListener', 'UpdateListenerAttribute', 'DeleteListener', 'ListListeners', 'GetListenerAttribute'], 'type' => 'directory', 'title' => 'Listeners', ], [ 'children' => ['CreateLoadBalancer', 'DeleteLoadBalancer', 'DescribeRegions', 'DescribeZones', 'GetListenerHealthStatus', 'GetLoadBalancerAttribute', 'ListLoadBalancers', 'ListTagResources', 'MoveResourceGroup', 'RemoveServersFromServerGroup', 'TagResources', 'UntagResources'], 'title' => 'Others', 'type' => 'directory', ], ], 'components' => [ 'schemas' => [], ], 'apis' => [ 'AddServersToServerGroup' => [ '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', '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 backend servers.'."\n" ."\n" .'> 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' => 'The data structure of the response.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], ], 'example' => '', ], ], ], '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.'], ], ], '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' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '220131', 'abilityTreeNodes' => ['FEATUREslbPNW4R2'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ '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 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, 'maxItems' => 20, 'title' => '', 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => 'The returned data.', 'type' => 'object', 'properties' => [ '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' => [ 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.'], ], ], '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'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221915', 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'AddressIpVersion', 'in' => 'formData', 'schema' => [ 'description' => 'The IP version. Valid values:'."\n" ."\n" .'* **Ipv4** (default): IPv4'."\n", 'type' => 'string', 'required' => false, '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', 'title' => ''], ], [ 'name' => 'VpcId', 'in' => 'formData', 'schema' => ['description' => 'The virtual private cloud (VPC) ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'vpc-uf6qcgpv22ttrnnjh****', 'title' => ''], ], [ 'name' => 'ZoneMappings', '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, specify at least two zones.'."\n", '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-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' => '', ], ], [ 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'The tags that are added to the instance.'."\n", 'type' => 'array', 'items' => [ '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', '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****', 'title' => ''], ], [ 'name' => 'DryRun', 'in' => 'formData', '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' => '', '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' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => '', 'type' => 'object', 'properties' => [ '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.', '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" .'* When you create a GWLB instance, the service-linked role AliyunServiceRoleForGwlb is automatically created.'."\n" ."\n" .'* **CreateLoadBalancer** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the [GetLoadBalancerAttribute](~~2853555~~) operation to query the status of a GWLB instance.'."\n" ."\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", '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' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225035', 'abilityTreeNodes' => ['FEATUREslb88O4KB', 'FEATUREslb98XMCW', 'FEATUREslb4EL8LZ', 'FEATUREslb5QFSS9'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ServerGroupType', 'in' => 'formData', 'schema' => [ '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', 'enum' => ['Instance', 'Ip'], 'title' => '', 'required' => false, 'example' => 'Instance', ], ], [ '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 backend protocol. Valid value:'."\n" ."\n" .'- **GENEVE** (default)', 'enumValueTitles' => ['GENEVE' => 'GENEVE'], 'type' => 'string', 'enum' => ['GENEVE'], 'title' => '', 'required' => false, 'example' => 'GENEVE', ], ], [ 'name' => 'Scheduler', 'in' => 'formData', 'schema' => [ '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" .'- **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' => '5TCH', ], ], [ 'name' => 'ServerFailoverMode', '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** (default): GWLB continues to forward requests over existing connections to the unavailable backend server.'."\n" ."\n" .'- **Rebalance**: GWLB forwards requests over existing connections to the remaining healthy backend servers.', 'type' => 'string', 'title' => '', 'enum' => ['NoRebalance', 'Rebalance'], 'required' => false, 'example' => 'NoRebalance', ], ], [ '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' => [ 'title' => '', 'description' => 'The tag keys.'."\n" ."\n" .'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, '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 => [ 'schema' => [ 'title' => '', 'description' => '', 'type' => 'object', 'properties' => [ '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' => '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::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 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' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221398', 'abilityTreeNodes' => ['FEATUREslbC68LB1'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ListenerId', 'in' => 'formData', 'schema' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => true, 'example' => 'lsn-brx2y3hqdincizg***', 'title' => ''], ], [ '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 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' => ['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 data returned.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5C6E3548-086F-5FF6-A2B3-B1871B3AB488', '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.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::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 listener is in the **Deleting** state, it is being deleted.'."\n" ."\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' => [ 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221917', 'abilityTreeNodes' => ['FEATUREslb12YEWG'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'LoadBalancerId', 'in' => 'formData', 'schema' => ['description' => 'The ID of the Gateway Load Balancer instance.', 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], ], [ '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** of each request may be different.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => '', 'type' => 'object', 'properties' => [ '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.', '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'], '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"}]', ], 'DeleteServerGroup' => [ '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' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'sgp-atstuj3rtoptyui****'], ], [ 'name' => 'DryRun', 'in' => 'formData', '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' => '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 returned data.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], ], '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' => [ [ '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' => '', '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' => [ [ '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' => '', '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' => [ [ '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', 'schema' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => true, 'example' => 'lsn-brx2y3hqdinciz****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ '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' => '', ], ], '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' => [ [ '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' => ['description' => 'The listener ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'lsn-7sixpvm5fc3v0b****', 'title' => ''], ], [ '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' => '4f1d7cc9f51e18904e8a063603a6b0c3d03bc69f78734254e0b5e8707e68****'], ], [ '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, 'maximum' => '1000', 'minimum' => '1', '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' => '10', 'title' => ''], ], [ 'name' => 'Filter', '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'], 'title' => '', ], '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, 'maxItems' => 20, 'minItems' => 1, 'title' => '', ], ], 'required' => false, 'title' => '', ], 'required' => false, 'maxItems' => 20, 'minItems' => 1, 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => 'The response parameters.'."\n", '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****', 'title' => ''], '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', '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 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', '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' => '', ], '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', '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' => [ 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}'], ], ], ], ], ], 'GetLoadBalancerAttribute' => [ 'summary' => 'Queries the details of a Gateway Load Balancer (GWLB) instance.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221913', 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'LoadBalancerId', 'in' => 'formData', 'schema' => ['description' => 'The GWLB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => '', 'type' => 'object', 'properties' => [ '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', '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', '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****', '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', 'items' => [ 'description' => 'The information about the zones and vSwitches.'."\n", 'type' => 'object', 'properties' => [ 'LoadBalancerAddresses' => [ 'description' => 'The GWLB instance addresses.'."\n", 'type' => 'array', 'items' => [ '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****', '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****', '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', 'title' => ''], ], ], ], ], 'errorCodes' => [ 400 => [ ['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"}]', 'title' => 'GetLoadBalancerAttribute', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetLoadBalancerAttribute'], ], ], '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' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221401', 'abilityTreeNodes' => ['FEATUREslbC68LB1'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ListenerIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ '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, 'maxItems' => 20, 'minItems' => 1, 'title' => '', 'example' => '', ], ], [ 'name' => 'LoadBalancerIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ '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, 'maxItems' => 20, 'minItems' => 1, 'title' => '', 'example' => '', ], ], [ 'name' => 'NextToken', 'in' => 'formData', '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' => 'MaxResults', 'in' => 'formData', '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' => [ '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.'."\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' => 'Skip', 'in' => 'formData', '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' => 'The returned data.', 'type' => 'object', 'properties' => [ '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' => '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.'], ], ], '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' => '*'], ], ], ], ], '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"}]', ], 'ListLoadBalancers' => [ 'summary' => 'Lists Gateway Load Balancer (GWLB) instances.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221914', 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ZoneIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ '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' => 'VpcIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ '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, 'maxItems' => 20, 'example' => '', ], ], [ 'name' => 'AddressIpVersion', 'in' => 'formData', 'schema' => [ 'title' => '', 'description' => 'The protocol version. Valid value:'."\n" ."\n" .'- **Ipv4**: IPv4.', 'type' => 'string', 'required' => false, 'enumValueTitles' => ['IPv4' => 'IPv4', 'DualStack' => 'Dual-stack'], 'enum' => [], 'example' => 'Ipv4', ], ], [ 'name' => 'LoadBalancerStatus', 'in' => 'formData', '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' => 'LoadBalancerBusinessStatus', 'in' => 'formData', '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' => 'LoadBalancerNames', 'in' => 'formData', 'style' => 'flat', 'schema' => [ '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' => 'ResourceGroupId', 'in' => 'formData', 'schema' => ['title' => '', 'description' => 'The ID of the resource group.', 'type' => 'string', 'required' => false, 'example' => 'rg-aek2htf5qsyrn****'], ], [ 'name' => 'LoadBalancerIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'title' => '', '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, 'maxItems' => 20, 'example' => '', ], ], [ 'name' => 'TrafficMode', 'in' => 'formData', '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' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'title' => '', 'description' => 'The list of tags. You can specify up to 20 tags in each call.', 'type' => 'array', 'items' => [ 'description' => 'The tag object.', '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', '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' => false, 'maxItems' => 20, 'example' => '', ], ], [ 'name' => 'NextToken', 'in' => 'formData', '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' => 'MaxResults', 'in' => 'formData', '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' => '', 'type' => 'object', 'properties' => [ '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' => [], '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}'], ], ], ], ], ], 'ListServerGroupServers' => [ 'summary' => 'Queries the servers in a Server Load Balancer server group.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225066', 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ServerGroupId', 'in' => 'formData', 'schema' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => false, 'example' => 'sgp-atstuj3rtoptyui****', 'title' => ''], ], [ 'name' => 'ServerIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'The list of server IDs.'."\n" ."\n" .'You can specify up to 200 server IDs in each call.', 'type' => 'array', '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' => 'ServerIps', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'The list of server IP addresses.'."\n" ."\n" .'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, 'maxItems' => 200, 'title' => '', 'example' => '', ], ], [ 'name' => 'NextToken', 'in' => 'formData', '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 data structure of the response.', 'type' => 'object', 'properties' => [ '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' => [], 'staticInfo' => ['returnType' => 'synchronous'], 'title' => 'ListServerGroupServers', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroupServers'], ], ], 'ramActions' => [ [ 'operationType' => 'get', 'ramAction' => [ 'action' => 'gwlb:ListServerGroupServers', 'authLevel' => 'resource', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], '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' => [ 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225041', 'abilityTreeNodes' => ['FEATUREslb5QFSS9'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ServerGroupIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'The server group IDs.'."\n" ."\n" .'You can specify at most 20 server group IDs in each call.', 'type' => 'array', 'items' => ['description' => 'The server group ID.', 'type' => 'string', 'required' => false, 'example' => 'sgp-atstuj3rtoptyui****', 'title' => ''], 'required' => false, 'maxItems' => 20, 'title' => '', 'example' => '', ], ], [ 'name' => 'ServerGroupNames', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'The server group names.'."\n" ."\n" .'You can specify at most 20 server group names in each call.', 'type' => 'array', 'items' => ['description' => 'The server group name.', 'type' => 'string', 'required' => false, 'example' => 'testServerGroupName', 'title' => ''], 'required' => false, 'maxItems' => 20, 'title' => '', 'example' => '', ], ], [ 'name' => 'ServerGroupType', 'in' => 'formData', 'schema' => [ 'description' => 'The server group type. Valid values:'."\n" ."\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', 'title' => '', ], ], [ 'name' => 'ResourceGroupId', 'in' => 'formData', 'schema' => ['description' => 'The ID of the resource group to which the instance belongs.', 'type' => 'string', 'required' => false, 'example' => 'rg-atstuj3rtop****', 'title' => ''], ], [ 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'The tag keys.'."\n" ."\n" .'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, 'maxItems' => 20, 'title' => '', 'example' => '', ], ], [ 'name' => 'VpcId', 'in' => 'formData', 'schema' => ['description' => 'The VPC ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'vpc-bp15zckdt37pq72zv****'], ], [ 'name' => 'NextToken', 'in' => 'formData', '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' => ['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.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ '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.', 'type' => 'array', 'items' => [ 'description' => 'The server group.', 'type' => 'object', 'properties' => [ 'ConnectionDrainConfig' => [ 'description' => 'The configurations of connection draining.', 'type' => 'object', 'properties' => [ '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.', 'type' => 'string', 'example' => '2024-08-05T18:24:07Z', 'title' => ''], 'HealthCheckConfig' => [ 'title' => '', 'description' => 'The configuration of health checks.', 'type' => 'object', 'properties' => [ '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.', '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" ."\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', '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' => ['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.', 'type' => 'array', '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.', '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', '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' => ['description' => 'The VPC ID.', 'type' => 'string', 'title' => '', 'example' => 'vpc-bp15zckdt37pq72zv****'], ], 'title' => '', 'example' => '', ], 'title' => '', 'example' => '', ], 'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], 'example' => '', ], ], ], 'errorCodes' => [], 'staticInfo' => ['returnType' => 'synchronous'], 'title' => 'ListServerGroups', 'summary' => 'Queries the server groups of a Gateway Load Balancer (GWLB) instance.', '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' => [], ], ], 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225143', 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ '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, 'enum' => [], 'example' => 'loadbalancer', 'title' => '', ], ], [ 'name' => 'ResourceId', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'A 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' => false, 'maxItems' => 50, 'minItems' => 1, 'title' => '', 'example' => '', ], ], [ 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'A list of 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.', 'type' => 'string', 'required' => false, 'example' => 'testKey', 'title' => ''], 'Value' => ['description' => 'The tag value.', 'type' => 'string', 'required' => false, 'example' => 'testValue', 'title' => ''], ], 'required' => false, 'title' => '', 'example' => '', ], 'required' => false, 'maxItems' => 20, 'minItems' => 1, 'title' => '', 'example' => '', ], ], [ 'name' => 'NextToken', 'in' => 'formData', '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' => ['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 that is returned.', 'type' => 'object', 'properties' => [ '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 information about the tags that are attached to the resource.', 'type' => 'object', 'properties' => [ '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' => '', ], 'title' => '', 'example' => '', ], ], 'example' => '', ], ], ], '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.'], ], ], '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' => [], ], ], 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225546', 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ResourceId', 'in' => 'formData', 'schema' => ['description' => 'The resource ID.', 'type' => 'string', 'required' => true, 'example' => 'gwlb-nrnrxwd15en27r****', 'title' => ''], ], [ 'name' => 'NewResourceGroupId', 'in' => 'formData', 'schema' => ['description' => 'The ID of the destination resource group.', 'type' => 'string', 'required' => true, 'example' => 'rg-aek253e4oit****', 'title' => ''], ], [ 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ 'description' => 'The resource type. Valid values:'."\n" ."\n" .'- **loadbalancer**: a Gateway Load Balancer instance.'."\n" ."\n" .'- **servergroup**: a server group.', 'type' => 'string', 'required' => true, 'enum' => ['loadbalancer', 'servergroup'], 'example' => 'loadbalancer', 'title' => '', ], ], [ '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 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' => ['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 data returned.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '78828B5C-521E-50F3-84D4-7019691D1382', 'title' => ''], ], 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ ['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.', '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'], '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 \\"RequestId\\": \\"78828B5C-521E-50F3-84D4-7019691D1382\\"\\n}","type":"json"}]', ], 'RemoveServersFromServerGroup' => [ 'summary' => 'Removes backend servers from the server group of a Gateway Load Balancer (GWLB) instance.', 'methods' => ['post'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225065', 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ServerGroupId', 'in' => 'formData', 'schema' => ['description' => 'The server group ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtoptyui****', 'title' => ''], ], [ 'name' => 'Servers', 'in' => 'formData', 'style' => 'flat', 'schema' => [ 'description' => 'The backend servers that you want to remove.'."\n" ."\n" .'> 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' => '', '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' => '', '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", 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', 'title' => ''], ], ], ], ], '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' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'], ], 404 => [ ['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::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", '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' => [], ], ], 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225141', 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ '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, 'enum' => [], 'example' => 'loadbalancer', 'title' => '', ], ], [ 'name' => 'ResourceId', 'in' => 'formData', 'style' => 'flat', 'schema' => [ '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' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ '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 data returned.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54F6E60A-1777-5C17-A6A9-BCC1A7FE945B', 'title' => ''], ], 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ ['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.', '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'], '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\\": \\"54F6E60A-1777-5C17-A6A9-BCC1A7FE945B\\"\\n}","type":"json"}]', ], 'UntagResources' => [ 'summary' => 'Removes tags from resources.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225142', 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], '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' => [], 'title' => '', ], ], [ '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****', 'title' => ''], 'required' => true, 'maxItems' => 50, 'minItems' => 1, 'title' => '', ], ], [ 'name' => 'TagKey', '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' => ''], 'required' => false, 'maxItems' => 20, 'minItems' => 1, 'title' => '', ], ], [ 'name' => 'All', 'in' => 'formData', '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' => 'DryRun', 'in' => 'formData', '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' => '', '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' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21', 'title' => ''], ], ], ], ], 'errorCodes' => [ 400 => [ ['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'], '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}'], ], ], ], ], ], 'UpdateListenerAttribute' => [ 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221402', 'abilityTreeNodes' => ['FEATUREslbC68LB1', 'FEATUREslbPNW4R2'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'ListenerId', 'in' => 'formData', '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 returned data.', 'type' => 'object', 'properties' => [ '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.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], '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 \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\"\\n}","type":"json"}]', ], 'UpdateLoadBalancerAttribute' => [ 'summary' => 'Modifies the attributes of a Gateway Load Balancer (GWLB) instance.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221916', 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'LoadBalancerId', 'in' => 'formData', 'schema' => ['description' => 'The ID of the GWLB instance.', 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], ], [ 'name' => 'LoadBalancerName', 'in' => 'formData', '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' => '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 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' => ['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' => 'TrafficMode', 'in' => 'formData', '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' => '', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD', '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' => '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], '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}'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD\\"\\n}","type":"json"}]', ], 'UpdateLoadBalancerZones' => [ 'summary' => 'Updates the zones of a Gateway Load Balancer (GWLB) instance.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221912', 'abilityTreeNodes' => ['FEATUREslb23BWZ4'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'LoadBalancerId', 'in' => 'formData', 'schema' => ['description' => 'The GWLB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****', 'title' => ''], ], [ 'name' => 'ZoneMappings', '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****', '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' => false, 'title' => '', ], 'required' => true, 'maxItems' => 20, 'title' => '', ], ], [ 'name' => 'DryRun', 'in' => 'formData', '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' => '', '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' => '', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'ED8905C2-A4F6-5E43-87B7-6A5DC8757146', 'title' => ''], ], ], ], ], 'errorCodes' => [ 400 => [ ['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" .'>每次调用该接口时,请确保您传入该网关型负载均衡实例的所有可用区参数,包括当前和新增的可用区。如您未传入当前的可用区参数,表示需要将当前可用区删除。您可以通过 GetLoadBalancerAttribute 接口查询该实例的当前可用区。>', '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}'], ], ], ], ], ], 'UpdateServerGroupAttribute' => [ 'methods' => ['get', 'post'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225039', 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ '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 scheduling algorithm. Valid values:'."\n" ."\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', 'enum' => ['5TCH', '3TCH', '2TCH'], 'title' => '', 'required' => false, 'example' => '5TCH', ], ], [ 'name' => 'ServerFailoverMode', 'in' => 'formData', 'schema' => [ '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' => '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**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '300'], ], 'required' => false, 'example' => '', ], ], [ 'name' => 'HealthCheckConfig', 'in' => 'formData', 'style' => 'flat', 'schema' => [ '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' => '', ], ], [ '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 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' => ['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 data.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'."\n", 'title' => ''], ], 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ ['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.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::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\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\\\n\\"\\n}","type":"json"}]', ], ], '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ 'apiName' => 'ListTagResources', 'description' => '', 'operationType' => 'list', 'ramAction' => [ 'action' => 'gwlb:ListTagResources', 'authLevel' => 'resource', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ 'apiName' => 'MoveResourceGroup', 'description' => '', '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ '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}'], ], ], ], [ 'apiName' => 'ListListeners', 'description' => '', 'operationType' => 'list', 'ramAction' => [ 'action' => 'gwlb:ListListeners', 'authLevel' => 'resource', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ '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/*'], ], ], ], [ 'apiName' => 'UpdateServerGroupAttribute', 'description' => '', 'operationType' => 'update', 'ramAction' => [ 'action' => 'gwlb:UpdateServerGroupAttribute', 'authLevel' => 'resource', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'ListServerGroupServers', 'description' => '', 'operationType' => 'get', 'ramAction' => [ 'action' => 'gwlb:ListServerGroupServers', 'authLevel' => 'resource', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ '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}'], ], ], ], ], '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}'], ], ], ];